微架构的出现,很好地适应了这个时代对快速发展变化的要求。它不再提倡一体化的项目设计,而是对项目进行有效的“业务区”(可以简单理解为不同的子系统〉划分,并利用合理的技术对业务性能做出提升和改善,同时又极大地简化了配置文件的使用与 profile配置。总而言之,微架构是开发之中看起来非常简单的一种实现技术,但简单的背后考究的却是开发者对于开源技术的熟练程度。
SpringBoot 作为一种Web整合开发框架,很好地解决了Web程序的编写困难,可以更简单、高效地实现 MVC 设计模式。更为重要的是,它可以轻松地整合当前各类主流的开发项目,如消息组件、SQL数据库、NoSQL数据库、邮件服务等,因此能极大地缩短项目的开发周期,更快地响应客户的需求变更。SpringCloud 作为SpringBoot 的延续,可以基于Restful流行架构实现RPC业务中心的搭建,可以基于消息组件实现远程配置动态的抓取,还可以与Docker相结合,采用虚拟化手段实现便捷的云服务管理。可以说,微架构的出现与云时代是密不可分的。
了解服务注册与发现的基本原理后,如果你要在项目中使用服务注册与发现组件,当面对众多的开源组件该如何进行技术选型?
在互联网公司里,有研发实力的大公司一般会选择自研或者基于开源组件进行二次开发,但是对于中小型公司来说直接选用一款开源软件会是一个不错的选择。
常用的注册与发现组件有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是HashiCorp公司推出的开源工,使用Go语言开发,具有开箱即可部署方便的特点。Consul是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。
Consul架构
Consul 实现多数据中心依赖于gossip protocol协议。这样做的目的:
Consul的应用场景包括服务注册发现、服务隔离、服务配置等。
服务注册发现场景中consul作为注册中心,服务地址被注册到consul中以后,可以使用consul提供的dns、http接口查询,consul支持health check。
服务隔离场景中consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持tls证书分发,service-to-service加密。
服务配置场景中consul提供key-value数据存储功能,并且能将变动迅速地通知出去,借助Consul可以实现配置共享,需要读取配置的服务可以从Consul中读取到准确的配置信息。
即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!
资料领取方式:蓝色传送门
我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:
JVM面试专题
Java并发面试专题
Kafka面试专题
MongDB面试专题
MyBatis面试专题
MySQL面试专题
Netty面试专题
RabbitMQ面试专题
Redis面试专题
Spring Cloud面试专题
SpringBoot面试专题
zookeeper面试专题
常见面试算法题汇总专题
计算机网络基础专题
设计模式专题
1VeTu4-1624337141856)]
计算机网络基础专题
[外链图片转存中…(img-4U2m1Q2I-1624337141857)]
设计模式专题
[外链图片转存中…(img-g8WHIov3-1624337141858)]