SpringCloud初体验
由于要去的新单位使用SpringCloud做应用开发,所以近期想学一学。
之前我在小米时,使用的是Dubbo+nacos实现微服务的注册和发现,使用的版本是2.7.x。由于其最初定位就只是实现微服务的注册和发现,因此比较轻。如果想要引入其他的功能,就需要额外引入其他的组件,比如限流,熔断,鉴权等等。也就是说Dubbo最开始本身并不是为了提供微服务治理的。不过,目前的Dubbo版本,及Dubbo3以后,Dubbo一直在致力于将自己发展为提供微服务的完整解决方案,包括微服务治理,用于对标SpringCloud。可以看到其官网上,已经加入了很多微服务治理的技术解决方案。他们都是通过Dubbo插件的形式接入Dubbo。
对比一下SpringCloud与Dubbo.
SpringCloud | Dubbo | 备注 | |
服务注册级别 | 应用级别 | 接口级别,Dubbo3支持应用级别 | 接口级别可能会给注册中心带来一定的性能压力。但好处是可以只暴露部分接口 |
接口方式 | REST风格的http协议(通过Feign调用) | RPC接口如Dubbo,grpc,http等等。 | SpringCloud只能是微服务的闭环。如果想和其他外部微服务通信的话,就不如RPC接口那样更通用 |
通信协议 | http | http .http/2,TCP | 这个和第二点是对应的。SpringCloud就是标准的http协议。Dubbo可以使用基于Netty的采用TCP传输的方式,性能上会更好一些。 |
其他的我觉得不算是他们本身的区别。只是SpringCloud集成了很多的组件罢了。
SpringCloud的架构:
Dubbo生态:
注册中心:
注册中心的种类有很多,ZK,Nacos,Eureka,Consule等等。SpringCloud采用的Eureka,Dubbo最早默认使用ZK,现在都是用nacos。而SpringCloud目前也基本上使用SpringCloud AliBaBa的nacos,nacos的优势在于其既可以是注册中心,也可以是配置中心。否则其他的只能是注册中心,配置中心还得结合消息总线等去额外实现。
接下来要重点好好研究一下nacos的源码,原理。
API网关:
我在小米时网关都是小米自研的(说是自研,其实也借鉴了别人),Dubbo本身并不提供API网关的。现在的Dubbo3支持通过插件的方式将Dubbo服务注册到某些网关。现在接入比较好的就是Apache ShenYu.支持多协议转换。当然,Shenyu也可以接入SpringCloud
SpringCloud中默认的是使用SpringCloud GateWay,支持限流,重试,熔断等方案。
这个地方也要好好学习一下。
熔断:
限流:
负载均衡:
微信分享/微信扫码阅读