theme: scrolls-light
这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战
在微服务时代,服务的注册发现主要是为了解决两个问题,一个是屏蔽服务与服务之间依赖的细节,即解耦;另一个是满足对服务的动态管理。这篇文章就服务注册和发现,上手实现Netflix的Eureka和Feign。
一、服务注册发现模式
在实践之前,我们先来了解服务注册与发现的一些简单概念。
服务发现与注册 一般有两种实现模式: - 服务器端模式 - 客户端模式
服务器端模式通过使用一个中间的服务器,来屏蔽被调用服务的复杂性与变动性,当有新的服务加入或老服务剔除时,只需要修改中间服务器上的配置即可。
这种模式,常见的做法是提供一个具备负载均衡的服务器作为中间层,比如Nginx,F5,网络传输层的Ip负载均衡,即配置集中在独立的中间服务器端完成,对代码没有任何侵入性。缺点是,调用链过程中,要透穿中间服务器,中间层势必成为一个调用链中的单点,很有可能成为性能的瓶颈。
客户端服务发现模式允许服务在没有硬编码主机名和端口的情况下彼此查找和通信。这种架构中比较核心的概念是,服务必须统一注册到服务注册中心。比较有代表性的有Eureka、Consul、Zookeeper等等,其异同如下:
这种模式不需要穿透中间服务器,所以性能损耗比较小,但是需要在服务内部维护注册信息,负载均衡策略,对代码有侵入性,并且要引入一个新的注册中心服务,如果要考虑到服务的可用性以及可靠性,其维护维护成本也会增加。
少年,没看够?点击石头的主页,随便点点看看,说不定有惊喜呢?欢迎支持点赞/关注/评论,有你们的支持是我更文最大的动力,多谢啦!