美文网首页
001 service discovery相关

001 service discovery相关

作者: notatent | 来源:发表于2019-04-29 18:33 被阅读0次

    1.服务发现框架

    框架 CAP 协议 语言 依赖环境 集成方式
    zk CP Paxos(ZAB) Java JVM Clients use language specific bindings
    Doozer CP Paxos Go
    Etcd Raft Go Clients use language specific bindings/ HTTP
    Eureka AP Java JVM Java Client,其他语言要SideCar方式或 REST api
    Consul CA Raft Go

    2.区别

    2.1 zk

    通过ZAB选举出一个leader,写信息时只向这个leader写入,leader同步到其他followers,即保证数据的一致性。

    Service registration: 通过 watch 机制,client 去写临时节点,client失效或失去连接时,自动删除这个临时节点

    Service discovery: client 获取zk上的临时节点,client自己处理 load balance 和 failover

    network partition、脑裂等 问题

    zk zab协议,解决了分布式系统下数据在多个服务之间保持同步。

    CP,没有A,不能保证每次服务请求的可用性,作为分布式协同服务,zk很好,当zk不可用时(网络等原因),做为 Service Discovery不合适

    当network partition时,nodes数量没有达到zk规定的leader选举的数量,会从zk中断开,就不能做为提供 Service Discovery功能

    2.2 Etcd

    Service registration: service 利用 key 的 TTL 及心跳来确认这个 key 仍然可用。

    如果 service 更新 key 的 TTL 失败,Etcd 会对它过期处理。service 变的不可用时,client 需要自己处理连接失败和重试其他服务实例

    Service discovery: 服务发现涉及一个目录下所有的 keys 列表,等待这个目录下的变动。因为基于 HTTP API,client 应用与 etcd 集群之间保持 long-polling 连接

    利用 Raft 选举出一个leader,所有的客户端请求和处理都是靠这个 leader

    2.3 Eureka

    Service registration: Eureka client注册服务、定期发送心跳去renew租约

    Service discovery: Eureka client 从Eureka server获取当前注册的服务信息,并缓存在本地。Eureka client定期刷新这些信息,同时处理 load balance和failover

    没有leader选举,节点宕机自动切换到其他eureka节点,宕机的机器恢复后通过同步服务信息的方式加入到eureka集群

    network partition时,每个eureka持续对外提供服务(zk不会),在单个partition中照样可以提供 Service Discovery功能

    2.4 Consul

    相关文章

      网友评论

          本文标题:001 service discovery相关

          本文链接:https://www.haomeiwen.com/subject/bzsunqtx.html