k8s 和 spring cloud 的本质上并不是一个东西,所以并不能直接比较优劣。
k8s 是容器编排工具,现在也不单是编排了,更是一个大的平台。
spring cloud 是微服务的一个实现。
《凤凰架构》文中将这两放在一起是为了体现系统架构的演进,即 spring cloud 原本使用的组件如配置中心、注册中心、网关等现在正在往云原生方向发展。文中做对比的更多是一般的 spring cloud 和 spring-cloud-kubernetes (
https://spring.io/projects/spring-cloud-kubernetes )。
要理解为什么是这样的发展趋势得结合整个架构演进来看,也就是看书中的下一章“演进中的架构”,微服务对比单体服务而且带来了极为便捷的横向扩展能力,但随之而来的是复杂度,以及为了应对这些复杂度引入的新的组件,例如:因为有了多个实例,导致需要负载均衡,导致要有 ribbon 等。随着发展,目前主流趋势是希望把这部分不属于业务的内容下沉到更底层中去,而不需要业务代码层面上关心。所以有了 service mesh ,再往下 serverless 。
spring cloud kubernetes 就是将配置中心等交给 k8s 来负责。
所以如果从整体角度来看,他们也并没有本质区别,甚至对于大部分中小企业来说复杂度在不断上升,但是对于大型企业来说,让专门的人员负责专门的事是有效率提升的,业务 coder 就写业务就行了。