为什么要选择Spring Cloud Kubernetes?

原创 吴就业 123 0 2020-06-17

本文为博主原创文章,未经博主允许不得转载。

本文链接:https://wujiuye.com/article/69688b06a4d140178ad2bc351e9f9c4c

作者:吴就业
链接:https://wujiuye.com/article/69688b06a4d140178ad2bc351e9f9c4c
来源:吴就业的网络日记
本文为博主原创文章,未经博主允许不得转载。

本篇文章写于2020年06月17日,从公众号|掘金|CSDN手工同步过来(博客搬家),本篇为原创文章。

img

GitHub:https://github.com/spring-cloud/spring-cloud-kubernetes

Spring Cloud Kubernetes提供使用Kubernetes原生服务的Spring Cloud公共接口实现。此代码仓库中提供的项目是促进在Kubernetes中运行的Spring CloudSpring Boot应用程序的集成“,这是官方的介绍。

了解Spring Cloud Alibaba的朋友就很容易理解这句话。简单说,Spring Cloud Alibaba就是为快速搭建集成DubboNacos等阿里开源的生态服务的微服务项目提供的脚手架。而Spring Cloud Kubernetes就是帮助大家更快的搭建使用Kubernetes原生服务的微服务项目,并与Spring Cloud集成。

比如使用Kubernetes的原生etcd服务实现服务的发现与注册、配置中心,而不需要使用第三方服务注册中心、配置中心。

其实,在社区的贡献下,Dubbo也提供了使用etcd做服务注册中心和配置中心的支持,但估计很少人会去使用。

Dubbo的服务注册、发现、调用都依赖IP,且Dubbo的服务注册是以接口为维度的,而不是以进程为维度,因此Dubbo的服务注册发现模型与Kubernetes的服务注册发现模型不是很匹配,这些都使得将一个Dubbo项目迁移至Kubernetes容器变得困难,需要对原有Dubbo项目作出一些改变,这也是我们在做新项目技术选型时需要考虑的问题。好消息是,Dubbo将在3.x版本提供服务级别的注册和发现功能,Dubbo也在向云原生靠拢。

img

上图为Spring Cloud Kubernetes的源码框架截图,后续我们将会使用到的模块有:实现服务注册和发现的discovery模块、实现配置中心的config模块。

spring-cloud-kubernetes1.1.3.RELEASE对应spring cloud版本为Hoxton.SR5Spring Cloud每个版本依赖的Spring Boot版本,官网都有给出说明。关于版本,我们也可以从pom.xml文件中获取到。

img

在了解Spring Cloud Kubernetes是什么之后,我们再讨论下为什么要选择Spring Cloud Kubernetes

选择Spring Cloud Kubernetes意味着我们想要将服务部署到Kubernetes集群,Spring Cloud Kubernetes为我们实现了Spring Cloud的一些接口,让我们可以快速搭建Spring Cloud微服务项目框架,并能使用Kubernetes云原生服务。

Kubernetes提供服务注册和发现、以及配置中心的实现,我们完全没有必要再自己部署一套注册中心、配置中心,因此Spring Cloud Kubernetes为我们提供使用这些原生服务的接口实现。除注册中心和配置中心之外,如果我们还想使用istioSpring Cloud Kubernetes也提供了支持,这些无非就是解释文章开头的那句话“Spring Cloud Kubernetes提供使用Kubernetes原生服务的Spring Cloud公共接口实现”。

除此之外,我们依然可以使用Spring Cloud生态的各种第三方框架的快速集成starter,如网关Spring Cloud Gateway、限流熔断组件Sentinel

下一篇我们开始使用Spring Cloud Kubernetes搭建一个Demo级别的微服务项目。

#后端

声明:公众号、CSDN、掘金的曾用名:“Java艺术”,因此您可能看到一些早期的文章的图片有“Java艺术”的水印。

文章推荐

Spring Cloud OpenFeign源码分析,为什么不导入Ribbon应用会启动不起来?

如果指定了URL,那么getOptional方法不会返回null,且返回的Client是LoadBalancerFeignClient,但不会抛出异常。如果不指定URL,则走负载均衡逻辑,走的是loadBalance方法,且抛出异常。

将分布式项目sck-demo部署到本地kubernetes

本篇介绍如何搭建本地Kubernetes集群,以及将分布式项目sck-demo部署到本地kubernetes,以及实现版本升级和回滚。

Spring Cloud kubernetes入门项目sck-demo

本篇我们将从一个简单的demo上手Spring Cloud kubernetes,当然,我们只用到Spring Cloud kubernetes的服务注册与发现、配置中心模块。

Spring Cloud Kubernetes入门必知运维知识之Kubernetes

作为开发者,只有足够了解容器技术,才能做好技术选型,以及开发部署在Kubernetes容器服务之上的应用应该要注意哪些问题。如果运维不了解代码,开发也不了解Kubernetes,谁能解决将服务迁移到Kubernetes上遇到的各种问题呢?

Spring动态代理奇怪的空指针异常,字段明明不为空,但方法中获取字段的值确是空的

使用`cglib`生成的代理对象 (继承方式),在父类中,通过代理对象调用父类私有方法不会报错,但字段都是空的。

Java反序列化JSON,要避免泛型的类型擦除问题

如图,反序列化JSON数组正常,却在获取数组元素时抛出了类型转换异常。