服务发现追求CP还是AP?

服务发现

生产环境中服务提供者对外提供服务,集群里面得ip随时再发生改变,那么就需要一个“通讯录”随时去获取服务节点,那么这个就是服务发现

为什么需要服务发现

对于服务提供者来说,契约就是接口,也就是相当于通讯录中得名字,服务节点就是提供该服务得一个实例。服务ip集合作为通讯录中得地址,可以通过获取服务ip来完成服务得发现,这就是RPC的服务发现机制。

1、服务注册:再服务启动的时候,将服务提供者暴露的服务注册到注册 中心,注册中心将服务名称和IP地址保存。

2、服务订阅:再服务调用方启动得时候,会从注册中心拉取服务并保存到缓存,以便于下次得调用。

为什么不使用DNS

服务的注册其实就是将服务名称和IP地址进行映射,那么将IP用域名进行替换,会不会更加方便呢?

从上图可知:域名浏览先从JVM缓存进行解析,再是到本地DNS缓存中进行匹配(hosts文件),本地缓存不存在,则去DNS服务器进行匹配解析,否则则去DNS远程服务器进行解析匹配。

但是再实际得工作过程中却很少去使用该方式,原因在于:

  • 如果ip端口下架了,那么这个服务节点能否即时摘除。
  • 如果之前就上线了一部分服务,这个时候需要进行扩容,新上线的节点能够即时提供服务。

但是以上的问题答案都是否,因为dns为了提升性能采取了多级缓存,服务调用者不能即时感知服务节点变化。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章