Dubbo、SpringCloud和Kubernetes优缺点

如题所述

第1个回答  2022-07-11
总所周知,Dubbo、SpringCloud和Kubernetes是当前三个主流的开源框架和平台。

服务化框架和平台的选择是搭建微服务的一个基础,非常重要。其中Dubbo是阿里巴巴开源的,SpringCloud是netflix开源的,Kubernetes是谷歌开源的。它们都是分布式微服务框架平台的一套解决办法。值得一提的是,这3种产品其功能上是有重叠的,部分功能还可能是排他的,所以说不要相互之间进行混搭使用,架构保持一致性,维护起来也方便。

微服务的最终目的是要实现业务逻辑,实现业务价值。为了让开发人员更专注于业务逻辑的开发,通常微服务需要底层的基础设施的支撑,这些基础设施的支撑称为微服务公共关注点(Common Concerns)。如下图所示:

服务发现与负载均衡中,dubbo主要是基于Zookeeper实现的,阿里还开源了一个产品Nacos,其功能像Java版的Consul,Nacos后续可能会替换zk成为dubbo首选的服务发现机制。

在API网关中,阿里没有开源网关,而K8s中则是定义了名叫Ingress规范,具体可以采用不同的实现,比如说Nginx,Envoy或者Traefik。

在配置管理中,Nacos也具备配置的功能。SpringCloud采用的是Config,其后端是基于Git进行配置管理的。

在服务框架中,K8s是与框架无关的,只认容器,不同的语言栈都可以住在K8s中,这是最大的亮点。

在自动伸缩和自愈方面,K8s具有自动故障和自愈的能力,自动伸缩需要引入额外的组件,完全实现是需要一定的门槛,感兴趣可以关注一下。

在进程隔离方面,K8s是通过容器进行进程隔离的,同时还引入Pod进一步对服务进行隔离。

在环境管理方面,K8s是内置Namespace进行逻辑隔离的,可以实现多环境,各个环境可以单独配置认证授权机制。

在流量治理方面,这里的流量治理指的是高级的流量调度、A、B和蓝绿部署的能力。Dubbo通过zk+client是支持一定的流量调度能力的。

Dubbo、SpringCloud是框架组件,K8s是平台。

所以我们在理解服务的关注点,根据企业上下文考量后选择,尽量不要混搭,保持体系的一致性。

看了大牛的分析,自己学到了很多。
相似回答