刘懿东
spring cloud 和 kubernetes 比较
spring cloud和k8s
进入思维导图模式
微服务概念
技术匹配
小结
Spring Cloud有一个丰富的集合,完备整合了Java库
Kubernetes兼容多种语言,目标不止Java平台,并且以一种通用方式为所有语言实现了分布式功能
MSA需求
优缺点比较
Spring Cloud
优点
面向Java开发者,由Spring平台自身来提供统一的编程模型,加上Spring Boot的快速创建应用的能力,可以给开发者大量的微服务开发经验
有大量运行时库可供选择。因为所有的库都是用Java写的,它能提供更多的特性,更强的控制,以及更好的一致性选项
不同的Spring Cloud库都可以很好的整合在一起
缺点
Spring Cloud其中一个最主要的优点也是它的缺点,即它只针对Java。MSA 的强烈的目标是具备互换技术栈,库,必要的时候甚至是语言的能力。而这对Spring Cloud来说不可能
Java开发者需要关注非常多的事情,Java应用需要处理非常多的事情。每个微服务都需要运行各种客户端来获得配置恢复、服务发现、负载均衡等功能。除了实现所有的功能性服务外,Java开发者还需要构建和管理一个非试用型的微服务平台
单独使用Spring Cloud在微服务旅程上无法走得很长远,在一个完整的微服务经历中,开发者还需要考虑自动化部署,调度,资源管理,进程隔离,自愈,构建流水线等功能。
单独拿Spring Cloud和Kubernetes来比较不太公平,更公正的比较应该是Spring Cloud + Cloud Foundry(或者 Docker Swarm)和Kubernetes来比较。但是那也说明,对一个完整的端到端的微服务经历,Spring Cloud还需要补充一个应用平台,就像Kubernetes那样
Kubernetes
优点
Kubernetes是语言不感知的容器管理平台,能兼容运行原生云应用和传统的容器化应用。它提供的服务,比如配置管理,服务发现,负载均衡,度量收集,以及日志聚合,能被各种语言使用
和Spring Cloud相比,Kubernetes实现了更广阔的MSA概念集合。除了提供运行时服务,Kubernetes也允许我们提供环境变量,设置资源限制,RBAC,管理应用生命周期,使能自动伸缩和自愈(表现为就像一个反脆弱平台)
Kubernetes的技术是基于Google 15年的管理容器的研究和开发经验。除此以外,还有将近1000个 committer,它几乎是GitHub上开源社区最活跃的项目
缺点
Kubernetes是兼容多种语言的,因此它的服务和原语是通用的,不像Spring Cloud对JVM那样,没有针对不同的平台做优化。例如,配置是通过环境变量或者挂载文件系统传递给应用的。它没有Spring Cloud配置提供的那样精妙的配置更新能力
Kubernetes不是一个针对开发者的平台。它的目的是供有DevOps思想的IT人员使用。因此,Java开发者需要学习一些新的概念,并更开放得学习新的解决问题的方式
介绍
Kubernetes 是一个针对容器应用的自动化部署,伸缩和管理的开源系统。它兼容多种语言且提供了创建,运行,伸缩以及管理分布式系统