在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net core grpc 通信 的基础上加上 服务注册,服务发现,负载均衡。
如对.net core grpc 通信不太熟悉的,可以看上一篇 .net core grpc 实现通信(一) ,然后再看本篇。
grpc(https://grpc.io/)是google发布的一个开源、高性能、通用RPC(Remote Procedure Call)框架,使用HTTP/2协议,支持多路复用,并用ProtoBuf作为序列化工具,提供跨语言、跨平台支持。
Consul(https://www.consul.io)是一个分布式,高可用、支持多数据中心的服务注册、发现、健康检查和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发。
本次服务注册、发现 通过 Consul Api 来实现,开发过程中结合.net core 依赖注入,切面管道思想等。
软件版本
.net Core:2.0
grpc:1.11.0
Consul:1.1.0
Consul Nuget注册组件:0.7.2.5
项目结构
.net core 代码部分:
Snai.GrpcClient 客户端 .net core 2.0控制台程序
Snai.GrpcService.Hosting 服务端宿主,Api服务注册,asp.net core 2.0网站程序
Snai.GrpcService.Impl 协议方法实现 .net standard 2.0类库
Snai.GrpcService.Protocol 生成协议方法 .net standard 2.0类库
Consul:
conf 配置目录,本次用api注册服务,可以删除
data 缓存数据目录,可清空里面内容
dist Consul UI目录,本次用默认的UI,可以删除
consul.exe 注册软件
startup.bat 执行脚本