【SpringCloud】微服务技术对比

微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和阿里巴巴的Dubbo。但不管是这两种的哪一种,他们所包含的组件和实现的功能基本上都是一致的。

首先,它们都需要去做微服务的拆分,形成微服务集群。而集群中的每一个服务都要遵循单一职责的原则,并且要面向服务,对外暴露接口,这样服务之间就可以做一些相应的调用了。只不过不同技术在实现这些接口的时候可能会有差异。但不管是那种技术,服务之间的关系错综复杂,一定需要我们去维护,所以在微服务流都会有一个注册中心,它可以去维护微服务里面每个结点的信息,并且去监控这些节点的状态。将来如果需要有些配置要修改,手动修改会十分麻烦,所以在微服务里面还会有一个配置中心,可以统一的去管理整个微服务群的配置,如果将来有变更,我们也可以利用通知的方式去让对应的服务监控到配置的变化,从而实现配置的热更新。

如此之多的微服务,用户怎么知道访问哪一个。所以微服务群往往还需要有一个统一的网关作为入口,用户可以去访问它,然后由网关再把请求路由到我们的微服务群,在路由过程中还可以去做负载均衡。

并且路由的时候,或者服务之间调用的过程中,我们还需要做好服务的容错处理,避免因为服务故障,导致宕机。

还要做好服务保护,隔离降级等等这些措施。

微服务技术对比

Dubbo技术早在2012年左右就已经开源出来,是阿里巴巴开源的。但那个时候微服务技术可能听都没听过。所以Dubbo并不是一个严格意义上的微服务技术。在那个时候它的核心就是服务的远程调用以及注册发现。所以在Dubbo里面注册体系并不完整。而且注册中心也不是Dubbo里面自己去实现的,而是依赖于redis、zookeeper还有一些其他的框架来做的。但这些并不是专业的注册中心,像redis做缓存的,zookeeper是用来做集群管理的。所以并不具备完善的注册中心功能。而服务的这种远程调用才是Dubbo的核心,当时,Dubbo专门基于这种ttp的协议订了一套标准,也就是Ddubbo协议。所以遵循Dubbo这种远程调用,你必须得定义Dubbo这种标准的接口。它要求你必须要用java实现,必须要实现JDK里面的serialize接口等等一系列要求。而配置中心、服务网关Dubbo并没有实现,至于服务监控和保护,Dubbo里只提供了一个最基本的dubbo-admin功能,只是来统计一下服务调用时的一个响应时间等等,功能非常单一。所以这个时候实现了这个服务的这种治理其实是非常不完善的。

而大概到了2015年一直到2017年,可以说是微服务技术井喷的时候。各种各样微服务技术层次不穷,但是一直没有一个一统江湖的。直到SpringCloud出来了。SpringCloud并不是发明了什么东西,而是整合,它把全球各公司的开源的微服务技术都整合起来了。然后形成了一套完整的微服务技术体系。它的功能是非常完善的:首先有完善的注册中心,里面包含Eureka、Consul这种专业的注册中心。而服务调用它并没有去整一种全新的协议和标准,那样会带来一些学习成本,所以它用的直接就是基于http协议的标准,我们以前编写的那些controller、RESTFul接口,都是属于http协议的。这个时候,只要遵循了RestFul,任何能够发http请求的都能调用它。所以这种学习成本很低。只不过它帮你封装了一个客户端:Feign,帮你发http的请求。当然你不用它也没问题,只要你遵循了RESTFul就行了。然后SpringCloud还提供了专业的配置中心:SpringCloudConfig,如果再结合SpringCloudBus,你就能实现这种配置变更时的自动通知、热更新,非常强大。另外,SpringCloud还提供了SpringCloudGateway、Zuul两个不同的网关,在目前比较流行的就是Gateway网关了,因为它里面给予了最新的这种响应式编程,吞吐能力非常强。还有服务的保护,Hystrix是一个非常强大的服务保护技术,当前它里面也带有一些监控功能,但核心是保护,主要就是实现了服务的隔离、熔断等等一些相关技术,功能也是十分的强大。

所以在Dubbo来看,它其实跟SpringCloud还是存在比较大的一些差距的,不是一个完善的技术栈。所以阿里巴巴也认识到了这一点,因此在近几年,其实也是在不断地去奋起直追,想办法追赶SpringCloud的脚步,它逐渐的实现了自己的注册中心、配置中心、服务监控等等组件,形成一套技术栈,起了个名字叫:SpringCloudAlibaba。它以SpringCloud开头说明这个组件首先是SpringCloud中的一部分。它实现了SpringCloud的这些标准接口,所以你会发现,SpringCloudAlibaba里面的很多技术组件用起来跟SpringCloud没什么差别,因为它们实现了统一的接口规范。Nacos注册中心强大之处在于:它既支持Dubbo这种调用,又支持Feign这种调用。因为SpringCloudAlibaba它同时兼容这两种架构(Dubbo和SpringCloud采用的协议不同,将来提供的接口标准不同,将来项目架构的方案就会不一样)。所以在国内,这套技术越来越火热了,后续也会基于这个来作为学习的重点。

image-20231013090635476

企业需求:

SpringCloud + FeignSpringCloudAlibaba这两种其是可以看成同一种,因为接口风格是一样的,调用方试也一样,至于技术栈的不同,SpringCloudAlibaba兼容SpringCloud,而且实现了相同的接口,使用起来其实几乎没有差别。

Dubbo原始模式升级到SpringCloudAlibaba,代码不用动,要变的仅仅是一些外部的组件(注册中心、配置中心等等),所以用起来非常的方便。

image-20231013090940703

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值