1. 概述
微服务是复杂业务的良好解决方案,但是实现成本和难度都略高,Spring Cloud大大简化的这个步骤。这一章主要讲业务常用的解决方案,包括:
- Spring Cloud Netflix
- Spring Cloud Alibaba
2. 什么是Spring Cloud
Spring Cloud是帮助开发者快速构建微服务的工具,主要致力于解决如下问题:
- 配置中心,提供版本号、有审核的配置管理
- 服务注册与发现
- 智能路由
- 负载均衡
- 断路器
- 领导者选举
- 分布式消息
- 微代理(micro-proxy)
- 控制总线(control bus)
- Token(one-time token)
- 分布式锁(global locks)
- 分布式session
- 集群状态(cluster state)
Spring本身擅长的是整合,将一些优秀的开源组件按照Spring Cloud的规范,引入到Spring Cloud中,极大的简化使用的复杂度。Spring Cloud Alibaba和Spring Cloud Netflix就是符合对应Spring Cloud规范的一套实现。
3. Spring Cloud的版本简介
Spring Cloud本身的版本是通过伦敦的地铁站名词命名的。通过官网你可以看对对应版本匹配的Spring Boot版本:
官网的Spring Cloud下放置了对应组件,组件会带对应兼容的版本号:
4. Spring Cloud Netflix
Spring Cloud Netflix是Netflix的一系列组件在Spring Cloud规范下的整合,包括:
- Eureka,服务注册与发现
Zuul,服务网关Ribbon,客户端负载均衡- Feign,远程服务的客户端代理
Hystrix,断路器,实现熔断和限流Hystrix Dashboard,监控面板Turbin,各个实例的Hystrix信息整合
由于Netflix维护不利,Zuul、Ribbon、Hystrix相关的项目(带删除线)已经处于维护模式(基本等于黄了)。
开源软件不再维护的情况并不鲜见,架构师要有改代码的能力,至少能做到官方不维护的情况下能过修改痛点,让公司能够在小成本的情况下切换到新的技术栈。
5. Spring Cloud Alibaba
Spring Cloud Alibaba是阿里旗下开源组件在Spring Cloud规范下的整合。包括:
- Sentinel,流控和服务降级
- Nacos,配置中心
- Nacos,服务注册与发现
- Seata,分布式事务
- RocketMQ,消息队列
- Dubbo,RPC通信
相较于Spring Cloud Netflix,Spring Cloud Alibaba的群众基础更好,Dubbo已经被国内公司大量使用。