写点什么

五年 Java 开发者小米、阿里面经,附相关架构及资料

发布于: 1 小时前

业界常用的服务注册与发现组件对比

了解服务注册与发现的基本原理后,如果你要在项目中使用服务注册与发现组件,当面对众多的开源组件该如何进行技术选型?


在互联网公司里,有研发实力的大公司一般会选择自研或者基于开源组件进行二次开发,但是对于中小型公司来说直接选用一款开源软件会是一个不错的选择。


常用的注册与发现组件有 eureka,zookeeper,consul,etcd 等,由于 eureka 在 2018 年已经宣布放弃维护,这里就不再推荐使用了。



业界开源组件


下面结合各个维度对比一下各组件。


组件优点缺点接口类型一致性算法 zookeeper1.功能强大,不仅仅只是服务发现;2.提供 watcher 机制可以实时获取服务提供者的状态;3.广泛使用,dubbo 等微服务框架已支持;1.没有健康检查;2.需要在服务中引入 sdk,集成复杂度高;3.不支持多数据中心;sdkPaxosconsul1.开箱即用,方便集成;2.带健康检查;3.支持多数据中心;4.提供 web 管理界面;不能实时获取服务变换通知 restful/dnsRaftetcd1.开箱即用,方便集成;2.可配置性强 1.没有健康检查;2.需配合三方工具完成服务发现功能;3.不支持多数据中心;restfulRaft


从整体上看 consul 的功能更加完备和均衡。接下来以 consul 为例详细介绍一下。

Consul——值得推荐的服务注册与发现开源组件

简单认识一下 Consul

Consul 是 HashiCorp 公司推出的开源工,使用 Go 语言开发,具有开箱即可部署方便的特点。Consul 是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。

Consul 有哪些优势?

  • 服务注册发现:Consul 提供了通过 DNS 或者 restful 接口的方式来注册服务和发现服务。服务可根据实际情况自行选择。

  • 健康检查:Consul 的 Client 可以提供任意数量的健康检查,既可以与给定的服务相关联,也可以与本地节点相关联。

  • 多数据中心:Consul 支持多数据中心,这意味着用户不需要担心 Consul 自身的高可用性问题以及多数据中心带来的扩展接入等问题。

Consul 的架构图


Consul 架构


Consul 实现多数据中心依赖于 gossip protocol 协议。这样做的目的:


  • 不需要使用服务器的地址来配置客户端;服务发现是自动完成的。

  • 健康检查故障的工作不是放在服务器上,而是分布式的。

Consul 的使用场景

Consul 的应用场景包括服务注册发现服务隔离服务配置等。


服务注册发现场景中 consul 作为注册中心,服务地址被注册到 consul 中以后,可以使用 consul 提供的 dns、http 接口查询,consul 支持 health check。


服务隔离场景中 consul 支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持 tls 证书分发,service-to-service 加密。


服务配置场景中 consul 提供 key-value 数据存储功能,并且能将变动迅速地通知出去,借助 Consul 可以实现配置共享,需要读取配置的服务可以从 Consul 中读取到准确的配置信息。

惊喜

最后还准备了一套上面资料对应的面试题(有答案哦)和面试时的高频面试算法题(如果面试准备时间不够,那么集中把这些算法题做完即可,命中率高达 85%+)




资料获取方式:戳这里免费领取

用户头像

VX:Lzzzzzz63 领取资料 2021.07.07 加入

还未添加个人简介

评论

发布
暂无评论
五年Java开发者小米、阿里面经,附相关架构及资料