微服务这个词的热度自它出现以后,就一直是高烧不退,而微服务之所以这么火,其实和近几年互联网的创业氛围是分不开的。
与传统行业不同,互联网企业有一个特点,那就是市场扩张速度非常之快,可能也就是几天的时间,一家原本名不经传的互联网公司就会人尽皆知,一家独角兽公司也就诞生了。
而伴随着这些,接踵而来的,一般是业务的急速变化与规模的扩张,这就对应用应对变化的能力提出了更高的要求。
微服务,就是专门治疗这种情况的良药。
也因此,现在的绝大多数互联网公司,都逐渐引入了微服务架构,以便于应对发展越来越快的公司业务。
如今程序员聊天,尤其是Java后端猿,你要不怼上几句微服务,你都不好意思说话。
而就在今天,2018年10月31日的凌晨,这个伟大的日子里,Spring Cloud Alibaba正式入驻了Spring Cloud官方孵化器,并在maven中央库发布了第一个版本。
可能有的同学会问,为啥要选在凌晨发布?难道是因为更有仪式感吗?
笔者很负责的告诉你,非也,是因为美国特么的和咱们有时差,-_-。
聊聊Spring Cloud
说起微服务这个话题,就不得不提到Spring Cloud以及Spring这个神奇的团队。
笔者个人一直是Spring团队的脑残粉,这不仅仅是因为Spring团队开源的情怀,更是因为,Spring团队的代码,是唯一让笔者觉得挑不出什么毛病的代码。
这在程序员身上是很难发生的,尤其是笔者这种有点代码洁癖的人,因为程序员有个特点,那就是看谁的代码都是垃圾,包括从前的自己都不例外。
这也从侧面说明了Spring团队的强大,以及他们的工匠精神。
好了,这一波马屁拍完,该来谈谈Spring Cloud了。
Spring Cloud是什么?
很多人虽然在用Spring Cloud,但其实并不了解Spring Cloud到底是什么,只知道开发微服务,可以选择使用Spring Cloud。
咱们首先来看看Spring Cloud官方的介绍,其实这一句话基本说出了Spring Cloud的本质。
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems.Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer's own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.
笔者翻译:Spring Cloud提供了一些工具,可以让开发者快速构建基于一些通用模式的分布式应用。分布式应用的协调都遵循“锅炉板模式”(boiler plate patterns),使用Spring Cloud以后,开发者可以更快的构建实现了这些模式的服务和应用。而这些服务和应用,也可以很好的工作在任何分布式环境,包括开发者自己的笔记本,裸金属数据中心以及像Cloud Foundry这样的托管平台。
和Spring团队以往的做法相似,不管是之前的Spring Framework,还是后来的Spring Boot,Spring团队一直在致力于让开发者可以“更快更好”的做开发。
这也是为何Spring团队在开发者圈子里口碑一直很好,是因为Spring团队一直在为开发者服务,而且都是开源项目,可以说,Java之所以能这么火,Spring团队功不可没。
一波隐晦的商业互捧之后,咱们来具体谈一谈,Spring Cloud到底都提供了哪些工具。
从Spring Cloud官方文档里,我们可以摘取到Spring的核心功能。
Distributed/versioned configuration【分布式以及版本化的配置】
Service registration and discovery【服务注册与发现】
Routing【路由】
Service-to-service calls【服务调用】
Load balancing【负载均衡】
Circuit Breakers【断路器】
Distributed messaging【分布式消息】
不难发现,其实上面这些功能,就是开发微服务架构下的分布式应用,会经常用到的。
不过,Spring团队厉害的地方就在于,他们很少会重复造轮子,而是让别人帮他们来造轮子。
比如最早的Spring framework,Spring只是提供了IOC和AOP的核心功能,而具体的MVC框架、ORM框架、缓存等等,Spring都只是提供了很好的支持和兼容,并不会去自己实现一个。
当然,除非是对方做的不够好,比如Spring MVC,就是因为当初的Struts2有着诸多的缺陷,才应运而生,并且很快就替代掉了Struts2,成为了主流的MVC框架。
同样,Spring Cloud也是如此,Spring Cloud的核心并没有实现任何上述功能,让我们来看看Spring Cloud官方文档的一段介绍。