目录
服务发现
每个服务端把自己的ip和端口号注册到服务发现模块
客户端访问服务的时候去服务发现模块查找IP:PORT,然后访问相应的服务
[服务发现,也可以看做一个服务,是为服务提供服务的]
图片来源:
https://www.bilibili.com/video/BV1po4y1X7hH?p=85
健康检查:
服务发现模块定期查看服务端能不能访问
client、server工作流程:
- 每个server启动时,都将自己的IP、port 和 服务名 注册给 ”服务发现“
- 当 client 向服务发现发起服务请求时, “服务发现” 会自动找一个可用的 服务,将其 IP/port/服务名返回给 client
- client 再借助服务发现,访问 server。
服务发现的种类:
- consul: 常应用于 go-micro 中。
- mdns:go-micro中默认自带的服务发现。
- etcd:k8s 内嵌的服务发现
- zookeeper:java中较常用。
consul
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。
特性:
- 服务发现: consul 提供服务, 服务端 主动向 consul 发起注册。
- 健康检查: 定时发送消息,类似于 “心跳包”,保证 客户端获得到的 一定是 健康的服务。
- 键值存储: consul 提供,但是我们使用 redis
- 多数据中心:可以轻松搭建集群。
安装 consul 源码包:
$ go get -u -v github.com/hashicorp/consul
启动命令
consul agent -dev
consul和grpc
使用整体流程
-
创建 proto文件 , 指定 rpc 服务
<