为什么PaaS需要 服务发现框架

网友投稿 594 2022-05-30

为什么需要服务发现框架?

Paas上的微服务可以自动扩容,数量是动态变化的 lPaaS上的微服务实例的地址是动态分配的 l问题: l客户端怎么知道微服务在哪里?

l访问多个服务实例时,如何做到负载均衡?

怎么发现?- 客户端发现模式

特点:客户端不用感知服务注册中心,也不用负责对请求实现负载均衡

l负载均衡Proxy从服务注册中心查询所有可用的服务实例 l负载均衡Proxy使用负载均衡算法选择一个实例 lAWS中的ELB, Kubernetes的Kube-proxy,Marathon l负载均衡Proxy:Nginx,HAproxy

优点:客户端不感知

缺点:负载均衡Proxy管理

怎么注册?- 自注册方式

l特点:服务端不用感知服务注册中心,也不用负责心跳

l服务管理器通过:查询部署信息,或者订阅事件,来跟踪运行服务的变化。 l当管理器发现一个新的可以服务实例,会向服务注册中心注册。并负责心跳刷新 lRegistrator开源项目,PaaS组件当前使用的服务发现框架 lKubernetes服务

优点:服务端不感知

缺点:服务管理器的管理

对比

服务注册 / 客户端

客户端发现

服务端发现

自注册

小系统,比较原始:

缺点:

客户端要改代码,感知服务注册中心

服务端要改代码,感知服务注册中心

优点:

客户端不用感知服务注册中心

缺点:

服务端需要感知服务注册中心

第三方注册

优点:

服务直接上线,不用感知服务注册中心。

缺点:

客户端需要感知服务中心

(例外:通过DNS感知)

优点:

服务直接上线,不用感知服务注册中心。

客户端不用感知服务注册中心,可以快速使用服务。

第三方注册 + 服务端发现 是终极目标。

服务注册表实现

l服务注册中心是服务发现很重要的部分,它记录了所有服务实例网络地址信息。

l一些服务注册表例子包括:

为什么PaaS需要 服务发现框架

lETCD – 是一个高可用,分布式的,一致性的,键值表,用于共享配置和服务发现。两个著名案例包括Kubernetes和Cloud Foundry。

lconsul – 是一个用于发现和配置的服务。提供了一个API允许客户端注册和发现服务。Consul可以用于健康检查来判断服务可用性。

lZooKeeper – 是一个广泛使用,为分布式应用提供高性能整合的服务。Apache ZooKeeper最初是Hadoop的子项目,现在已经变成顶级项目。

lSkyDNS – 一个较新的开源项目,原理与ETCD及consul一致,都是基于Go-raft协议,复杂度则介于两者之间

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python开发手册
下一篇:【云小课】基础服务第68课 华为云基础服务2020年工单热点问题(网络篇)
相关文章