🥌【gRPC】Golang中简单RPC服务开发—基础服务
2022-10-7
| 2023-10-29
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 29, 2023 01:02 AM
Parent item
领域
Go语言的标准库提供了一个简单的RPC实现:"net/rpc"。采用Go语言特有的gob编码,基于tcp通信,如下图
notion image

基于net/rpc的通信

服务端:
客户端:

RPC服务的工程化实现

上面的代码是面条代码,业务流程代码直上直下。只能作为演示, 不能用于实际项目开发。
解决方法:将具体的业务逻辑实现RPC处理逻辑解耦,使用接口作为桥梁。
上述代码中和业务无关的是:
  1. 注册RPC服务
  1. 服务端启动监听并分发业务请求
  1. 客户端发起业务请求
和业务相关的代码是:
  1. 服务端和客户端业务接口的定义
  1. 业务逻辑的实现
【第一步】把业务逻辑的实现剥离出来,单独放到一个包中:
【第二步】把业务逻辑的功能抽象成接口,可以和业务逻辑放在同一个包里:
【第三步】注册业务逻辑接口,由于不同业务服务有不同的名字,所以注册的实现放在各个业务服务的包中, 在主函数中调用即可:
💡
还有一种方式是在每个包的init函数中注册,这样就不用手动注册,只要引用该包,就会自动注册。
【第四步】基于业务逻辑接口,封装客户端请求:
【第五步】改造主流程,整合服务:
服务端:
客户端:
软件开发
  • GoLang
  • RPC
  • 【gRPC】grpc-gateway:把gRPC服务转换为HTTP服务【Golang包】go module 依赖包版本管理
    目录