服务发现

Catalogue
  1. 1. 关于服务发现的定义
  2. 2. 关于服务发现的实现
  3. 3. 性能测试
  4. 4. 参考资料

关于服务发现的定义

这部分稍微要注意的是服务发现分为 客户端发现模式服务端发现模式,Eureka 采用的是客户端发现的模式,这样职责单一,对于
服务端的要求也不会太高。

关于服务发现的实现

  • Eureka: Netflix 开源的服务发现,当前的1.0版本有几个问题

    • 全量更新
    • 无一致性保证
    • 非长连接,轮询保证服务健康
  • Zookeeper: 很多老点的系统会使用这个,优点是有一致性协议保证,缺点也就是不太友好,需要理解它的概念。
    主要通过虚节点来实现。

  • etcd: 本质上一个KeyValue的储存,这个也需要自己实现一个轮训的接口。

  • Consul: 我觉得这是最为完美的方案,有一致性协议保证,consul 自己实现了Client 和 Server

SpringCloud对Eureka支持最好,Consul也有支持,其他的就完全需要自己搞一套了。

性能测试

其实作为底层服务,性能是需要重要考虑的特性。官网有一个performance。见参考资料

2017Q1-00-cpu-1M-client-scaling

整体看起来 Consul 和 etcd 是接近的,Zoo在大量的节点连接的时候CPU和内存都需要大量的占用,在微服务设计的时候需要考虑。

最后补充一个 Eureka的性能测试

参考资料