总结一下 eureka 和 zookeeper
zk的目标是一个分布式的协调系统,用于进行资源的统一管理,为了满足CP而进行设计。
eureka的目标是一个服务注册发现系统,专门用于微服务的服务发现注册,按照满足AP而进行设计。
zk在用于服务发现的问题
zk将数据一致性作为自己设计的首要目标,从而不保证服务的可用性,因为当节点crash后,需要
进行leader的选举,在这个期间内,zk服务是不可用的。
对于服务的注册发现来说,对数据一致性并没有很大的需求,因为就算获取到不可用的服务,也会返回相应的
错误response,但是如果从注册中心中获取不到服务,就会是一个很大的问题。zk的leader选举时间有非常长,
所以用于服务发现,不是一个很好选择
eureka的思考
eureka是按照AP的设计目标去实现的,当节点宕机后,并不会影响服务的获取和注册,client会从别的节点中获取服务信息,
同时当eureka的服务端发现85%以上的服务都没有心跳的话,它就会认为自己的网络出了问题,就不会从服务列表中删除这些
失去心跳的服务,同时eureka的客户端也会缓存服务信息。eureka对于服务注册发现来说是非常好的选择。
提一个小疑问,我自己在搭eureka集群的时候,发现每一个eureka实例都要配置其他实例的地址,这样的话,如果加一台机器,
已经启动的机器要怎么发现这台新的节点,好像节点之前没有转播功能,不知道是不是我配置的不对。先记下来,解决了再更新。