概念
服务发现包括几个角色,服务提供者,服务消费者以及服务中介/服务注册中心(有些去中心化的架构,会将服务中介角色属性弱化)。我们看一下这个流程,服务提供者启动服务,根据配置的服务注册中心的地址,将自己的服务名,ip,服务版本号等提交到服务注册中心存储。由于在分布式环境中,服务可能不单单一台机器,是由多个机器组成的具有负载均衡能力的服务集群,那么服务消费者要进行消费的时候,就要找到一个ip进行交换,那么去寻找这个主机的过程就是服务发现的主要流程。 服务中介起到的主要作用就是为消费者提供服务路由,告诉他在分布式环境中,某个服务提供者服务集群的ip是多少,或者直接给你一批结果让你存储在本地,不用每次使用都去查询。
关注点
注册服务,发现服务,心跳检查,故障机器下线(故障转移)
设计思路
产品
Eureka
consul
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案相比,Consul的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。使用起来也较为简单。Consul使用Go语言编写,因此具有天然可移植性(支持Linux、Windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。
ectd
dubbo(HSF)
nacos