引言
- 微服务这个词的热度自从它出现以后,就一直高烧不退,而微服务之所以这么火,其实和近几年互联网的氛围是分不开的。
- 与传统行业不同,互联网企业有一个特点,那就是市场扩张的速度非常之快,可能几天的时间一个原本不知名的公司,摇生一变,就成一个尽人皆知的互联网独角兽公司。
- 而伴随着这些,接踵而来的,就是业务的极速变化与规模的扩张,这就对应用应对变化的能力提出了很高的要求。
- 微服务,就是专门质量这种情况的良药。也因此, 现在绝大多数互联网公司都逐渐引入了微服务架构,以便于应对发展越来越快的业务需求。
- 如今作为一名程序员,特别是Java程序员如果说不知道微服务都不好意思出门见人。
- 而就在
2018年10月31日凌晨,这个伟大的日子里,Spring Cloud Alibaba 正式入驻了Spring Cloud官方孵化器,并在maven中央仓库发布了第一个版本。
而从那天起一个新的微服务领袖诞生了。
什么是Spring Cloud
- 说起微服务就不得不提到Spring Cloud和Spring 是个神奇的团队。
- 说起这个团队,他们的代码质量,包括他们的工匠精神,都是所有程序员应该学习的榜样。
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 Cloud的核心功能。
- 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有着诸多的缺陷,Spring团队看不下去,才站出来发不了SpringMVC(个人理解),进而成立现金主流的MVC框架。
同样,Spring Cloud也是如此, Spring Cloud的核心并没有实现任何上述功能,只是制定了一套规范。Spring Cloud官方文档的一段介绍:
Many of those features are covered by Spring Boot, on which Spring Cloud builds. Some more features are delivered by Spring Cloud as two libraries: Spring Cloud Context and Spring Cloud Commons. Spring Cloud Context provides utilities and special services for the
ApplicationContext
of a Spring Cloud application (bootstrap context, encryption, refresh scope, and environment endpoints). Spring Cloud Commons is a set of abstractions and common classes used in different Spring Cloud implementations (such as Spring Cloud Netflix and Spring Cloud Consul). 翻译: 这些功能(就是上面列举的功能)大部分是由Spring Boot覆盖的,而Spring Cloud基于Spring Boot构建。Spring Cloud作为两个libraries提供了更多的功能。这两个libraries分别是,Spring Cloud Context
和Spring Cloud Commons
。
- Spring Cloud Context提供了一些工具,以及一个Spring Cloud应用的 ApplicationContext的特殊服务,比如bootstrap上下文(关于这个家伙,后面有机会笔者会详细介绍)、加密、刷新、环境端点这些功能。
- Spring Cloud Commons则是一组抽象和在不同Spring Cloud实现(比如Spring Cloud Netflix和Spring Cloud Consul)中使用的通用类。
从官方介绍也可以看出Spring Cloud其实就是一套规范,而不是一个可以直接拿来使用的即用的框架。而Spring Cloud Negflix以及Spring Cloud Consul,才是基于Spring Cloud规范的实现方。
而从Spring Cloud Alibaba发布那天开始,Spring Cloud的实现又多了一种。 接下来的文章我们就来认识下什么是Spring Cloud Alibaba,以及它如何使用。