服务发现

服务发现,即消费端自动发现服务地址列表的能力,是微服务框架需要具备的关键能力,借助于自动化的服务发现,微服务之间可以在无需感知对端部署位置与 IP 地址的情况下实现通信。

什么是发现

服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去(比如: zookeeper\consul\etcd)。

服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。

实现服务发现的方式有很多种

为什么做服务发现

单体 -> 微服务

在不用服务注册之前,我们可以想象一下,怎么去维护这种复制的关系网络呢?答案就是:写死!。
靠人手的去写配置和变更配置,对于运维和开发同学来说简直就是灾难。

健康检查

服务注册和服务发现的难点及业界的解决方案

服务注册和服务发现的难点

  1. 集群: 得组成集群,这样单台出现故障,不至于服务宕机
  2. 数据同步: 组成了集群,得要数据同步,注册的信息,在1台注册了,在其他机器上也能看到,不然的话,1台挂了,他这台的数据都丢失了。
  3. 强一致性: 数据同步,在多台要有一致性的要求,保证数据不会出现不一致的情况。
  4. 高并发高可用: 要能保证请求量比较大的情况下,服务还能保持高可用。
  5. 选举机制: 在有集群和数据同步以及一致性要求的情况下,得有一个master来主持整个运作,那就要有选取机制,确保选举公平和稳定。
  6. 分布式: 随着微服务上云,各个机器可能近在眼前,却远在天边,如何支撑分布式上的不同环境的机器互联,这也是一个很大的问题。
  7. 安装简单: 一个软件好不好用,是否亲民,安装的易用性是一个很大的因素,如果一个软件安装简单,调试方便,那么就会很受欢迎。

业界的解决方案

目前市面上已经有了服务注册和服务发现的解决方案,代表作是:zookeeperconsul以及etcd,他们功能强大,安全稳定,高并发高可用,强一致性,目前市面上都是用这几个来实现自己的服务注册和发现的。

参考资料

[1] 4、服务发现
[2] 深入了解服务注册与发现
[3] 服务发现