关注“Java艺术”一起来充电吧!
GitHub:https://github.com/spring-cloud/spring-cloud-kubernetes
“Spring Cloud Kubernetes提供使用Kubernetes原生服务的Spring Cloud公共接口实现。此代码仓库中提供的项目是促进在Kubernetes中运行的Spring Cloud和Spring Boot应用程序的集成“,这是官方的介绍。
了解Spring Cloud Alibaba的朋友就很容易理解这句话。简单说,Spring Cloud Alibaba就是为快速搭建集成Dubbo、Nacos等阿里开源的生态服务的微服务项目提供的脚手架。而Spring Cloud Kubernetes就是帮助大家更快的搭建使用Kubernetes原生服务的微服务项目,并与Spring Cloud集成。
比如使用Kubernetes的原生etcd服务实现服务的发现与注册、配置中心,而不需要使用第三方服务注册中心、配置中心。
其实,在社区的贡献下,Dubbo也提供了使用etcd做服务注册中心和配置中心的支持,但估计很少人会去使用。
Dubbo的服务注册、发现、调用都依赖IP,且Dubbo的服务注册是以接口为维度的,而不是以进程为维度,因此Dubbo的服务注册发现模型与Kubernetes的服务注册发现模型不是很匹配,这些都使得将一个Dubbo项目迁移至Kubernetes容器变得困难,需要对原有Dubbo项目作出一些改变,这也是我们在做新项目技术选型时需要考虑的问题。好消息是,Dubbo将在3.x版本提供服务级别的注册和发现功能,Dubbo也在向云原生靠拢。
上图为Spring Cloud Kubernetes的源码框架截图,后续我们将会使用到的模块有:实现服务注册和发现的discovery模块、实现配置中心的config模块。
spring-cloud-kubernetes的1.1.3.RELEASE对应spring cloud版本为Hoxton.SR5。Spring Cloud每个版本依赖的Spring Boot版本,官网都有给出说明。关于版本,我们也可以从pom.xml文件中获取到。
在了解Spring Cloud Kubernetes是什么之后,我们再讨论下为什么要选择Spring Cloud Kubernetes?
选择Spring Cloud Kubernetes意味着我们想要将服务部署到Kubernetes集群,Spring Cloud Kubernetes为我们实现了Spring Cloud的一些接口,让我们可以快速搭建Spring Cloud微服务项目框架,并能使用Kubernetes云原生服务。
Kubernetes提供服务注册和发现、以及配置中心的实现,我们完全没有必要再自己部署一套注册中心、配置中心,因此Spring Cloud Kubernetes为我们提供使用这些原生服务的接口实现。除注册中心和配置中心之外,如果我们还想使用istio,Spring Cloud Kubernetes也提供了支持,这些无非就是解释文章开头的那句话“Spring Cloud Kubernetes提供使用Kubernetes原生服务的Spring Cloud公共接口实现”。
除此之外,我们依然可以使用Spring Cloud生态的各种第三方框架的快速集成starter,如网关Spring Cloud Gateway、限流熔断组件Sentinel。
下一篇我们开始使用Spring Cloud Kubernetes搭建一个Demo级别的微服务项目。
公众号:Java艺术
扫码关注最新动态