springcloud概览
现在大多数公司技术发展的尽头好像就是云原生,不搞出一堆分布式系统相关东西出来,好像很low。以前听朋友说,他们公司就两研发,老板要搞云原生那套东西,当场笑喷,软件行业的先驱们早验证了一个真理No Silver Bullet:
There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.
耗在技术上的时间成本也许早超出了业务本身,如果公司的业务没有一定规模,微服务、docker、k8什么的还是需谨慎。最近接触了一个项目,相比以往的经历感觉算抽象得比较好的,用到了spring cloud相关的东西,这里就简单做下整理。
什么是spring cloud
什么是spring cloud,简单说来就是一套服务治理工具集。随着现代技术架构的演进,当时对服务治理这块没有一些API标准,于是与Netflix搞出了这套东西,也沿用了spring的设计哲学,拥抱变化,设计高度抽象的接口:
- Accommodate diverse perspectives. Spring embraces flexibility and is not opinionated about how things should be done. It supports a wide range of application needs with different perspectives.Care about API design. The Spring team puts a lot of thought and time into making APIs that are intuitive and that hold up across many versions and many years.
spring cloud主要架构图,如下:
spring cloud组件
如上图所示,微服务架构下有非常多的模式,spring cloud提供了一套API标准,也提供了一套服务治理框架,开发者不用关心spring繁琐的配置关系,达到了技术与业务分离的目的。下面列出一些常用服务治理的组件:
- API网关:Spring Cloud Gateway
- 配置中心:Spring Cloud Config或者
spring-cloud-alibaba-nacos-config - 注册发现:Spring Cloud Netflix Eureka、Spring Cloud Consul、Spring Cloud Zookeeper、spring-cloud-alibaba-nacos-discovery
- 负载均衡:Spring Cloud LoadBalancer
- 熔断限流:Resilience4j、spring-cloud-alibaba-nacos-sentinel
- 链路器:Spring Cloud Sleuth
除了上述组件,spring cloud还有一块最核心的组件Spring Cloud Commons,这个模块包含了两块内容:Spring Cloud Context,Spring Cloud Commons,为其他组件提供了非常便利的接口,开发者也可以非常方便实现自己的接口内容,这也是spring能活到现在的一个原因了,不管架构经过怎样变化,都能够适配。Spring Cloud Commons也是我最想研究的一块内容,对架构设计方面会有一些帮忙,下一步的计划就对该模块的源代码作下分析。spring cloud虽然庞杂,但是对最内核的模块分析下即可,关于spring cloud的书籍基本都介绍其他服务组件怎么使用,真没多大意思。学习spring cloud还是最推荐学习Spring Cloud Commons这块内容。