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

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

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

常用的注册与发现组件有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中读取到准确的配置信息。

本次面试答案,以及收集到的大厂必问面试题分享:

试答案,以及收集到的大厂必问面试题分享:

[外链图片转存中…(img-gNKhspgE-1624962603901)]

资料领取方式:戳这里即可免费下载

java软件工程师面试话术,已拿offer入职相关推荐

  1. Java面试必问的HashMap,java软件工程师面试话术

    前言 我们从一个问题引入今天的主题. 在日常业务开发中,我们可能经常听到 DBA 对我们说"不要"(注意:不是禁止)使用 join,那么为什么 DBA 对 join 这么抵触呢?是 ...

  2. 安卓开发用什么语言好!这是一份用心整理的Android面试总结,已拿offer入职

    前阵子,我和阿里的薪酬福利专家M同学聊了一下午,M同学做了9年薪酬,和我们吐槽了很多薪酬方面的现象,也道出了少有人关注的薪酬逻辑和常识. 这一次,我又找了一位阿里技术岗位的招聘专家T同学,从他的视角中 ...

  3. [JAVA软件工程师-面试宝典-2013最新版]

    http://blog.csdn.net/u012099645/article/details/13756447 [JAVA面试宝典-2013最新版] 一. Java基础部分............. ...

  4. 2021最新秋招Java软件工程师面试笔试必备面试题及答案汇总

    这套面试题主要目的是帮助那些还没有java 软件开发实际工作经验,而正在努力寻找 java 软件开发工作的朋友在笔试时更好地赢得笔试和面试. 由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两 ...

  5. 厉害了!助你金九银十稳进大厂,已拿offer入职

    前言 说真的,在 Java 使用最多的集合类中,List 绝对占有一席之地的,它和 Map 一样适用于很多场景,非常方便我们的日常开发,毕竟存储一个列表的需求随处可见.尽管如此,还是有很多同学没有弄明 ...

  6. RocketMQ消息丢失场景及解决办法,已拿offer入职

    前言 当前我们都会说SpringBoot是Spring框架对"约定优先于配置理念的最佳实践的产物,一个典型的SpringBoot应用本质上其实就是一个基于Spring框架的应用,而如果大家对 ...

  7. 一口气拿了9家公司的offer,已拿offer入职

    前言 相信很多同学都会有这样的感受,前三天刚刚复习的知识点,今天问的时候怎么就讲不出个所以然了呢? 本文的目的就是致力于帮助大家尽可能的建立Android知识体系,希望大家会喜欢~ 字节跳动Andro ...

  8. 2018年上海后半年JAVA软件工程师面试真题

    查询超过该部门员工大于3个的部门 SELECT deptid FROM table1 GROUP BY deptid HAVING COUNT(deptid) > 3 如果员工名称重复的部门id ...

  9. 透露一下Java软件工程师面试常见问题集锦之一

    1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象 ...

最新文章

  1. 德国虚拟主机 linux,细说Linux虚拟主机的搭建及配置
  2. JMeter 分布式性能测试
  3. 一般单纯形法的matlab程序,实验报告(单纯形法的matlab程序)
  4. Struts 体系结构与工作原理(图) .
  5. unsigned short占几个字节_ARM中,字、半字、字节分别是多少位?
  6. latex 小于_一份菜鸡的Latex课堂作业works--(ii)
  7. uni-app 组件传值
  8. LintCode 1753. 写作业(二分查找)
  9. Android多个音频源采集,android音频采集
  10. 大数据新手之路四:联合使用Flume和Kafka
  11. php函数积累第二弹(关于文件操作)
  12. 微软前WP主管乔北峰长假回归 新岗位或将得罪不少用户
  13. 安装慢_python安装第三方库太慢,很容易失败报错?教你如何提速
  14. python划分train val test
  15. 线程调度及进程调度详解
  16. kaggle泰坦尼克
  17. 《Java学习笔记1》
  18. Exploring Simple Siamese Representation Learning阅读笔记
  19. Vue 移动端 股票 分时 K线
  20. 时间序列 工具库学习(5) Darts模块-多个时间序列、预训练模型和协变量的概念和使用

热门文章

  1. 链接错误 LINK : fatal error LNK1104: 无法打开文件“XX.obj”
  2. 怎么让热图显示基因名_热图怎么做? | 热图函数pheatmap()
  3. 如何在Adobe XD中创建酒店预订UI设计
  4. mysql性能模块uptime_MySQL性能监控小知识 (转)
  5. Java项目之搜索引擎
  6. matplotlib之2017年各产业第一季度国民生产总值行业构成分布饼图
  7. 下载一个电影,普通下载方式和utorrent方式,速度为什么差这么多?原理是什么?
  8. Palo Alto FW Policy 配置
  9. 竞品分析很关键,云时代如何科学地做竞品?(Taobao/jd/1688API在竞品分析中的应用)
  10. OpenCV-俄罗斯方块