mac安装虚拟机windows10,王者笔记!
# **业界常用的服务注册与发现组件对比**
了解服务注册与发现的基本原理后,如果你要在项目中使用服务注册与发现组件,当面对众多的开源组件该如何进行技术选型?
在互联网公司里,有研发实力的大公司一般会选择自研或者基于开源组件进行二次开发,但是对于中小型公司来说直接选用一款开源软件会是一个不错的选择。
常用的注册与发现组件有eureka,zookeeper,consul,etcd等,由于eureka在2018年已经宣布放弃维护,这里就不再推荐使用了。
![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625405668263311.jpg)
业界开源组件
下面结合各个维度对比一下各组件。
**组件优点缺点接口类型一致性算法**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的架构图**
![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625405668155001.jpg)
Consul架构
Consul 实现多数据中心依赖于gossip protocol协议。这样做的目的:
* 不需要使用服务器的地址来配置客户端;服务发现是自动完成的。
* 健康检查故障的工作不是放在服务器上,而是分布式的。
# **Consul的使用场景**
Consul的应用场景包括**服务注册发现**、**服务隔离**、**服务配置**等。
**服务注册发现场景**中consul作为注册中心,服务地址被注册到consul中以后,可以使用consul提供的dns、http接口查询,consul支持health check。
**服务隔离场景**中consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持tls证书分发,service-to-service加密。
**服务配置场景**中consul提供key-value数据存储功能,并且能将变动迅速地通知出去,借助Consul可以实现配置共享,需要读取配置的服务可以从Consul中读取到准确的配置信息。
# 最后
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:
* Java基础部分
![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625405668815961.jpg)
* 算法与编程
![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625405669207986.jpg)
* 数据库部分
![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625405670909767.jpg)
* 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
![](http://www.icode9.com/i/li/?n=2&i=images/20210704/1625405671157306.jpg)
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
**作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。**
最后提醒一下哦,如果你想要学习,却无奈于没有干货学习资料,以上所有的资料内容都可以免费分享给你,只需你多多支持一下即可
**[“点赞文章,关注我,然后戳戳戳戳这里获取免费下载方式”](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**