一、Spring Cloud是什么?
Spring Cloud为开发者提供了一套快速开发分布式系统的组件,Spring Cloud并不推荐重复造轮子,主张利用Spring Boot将其他公司较为成熟的组件进行封装。
二、核心概念
- 配置中心
- 注册中心
- 服务网关
- 负载均衡
- RPC调用
- 服务熔断
- 服务降级
- 服务限流
- 全局锁
- 控制总线
- 分布式事务
- 服务安全
- 链路追踪
- 集群管理
- 事件驱动
- 任务调度
- 云连接器
- 函数计算
三、分布式配置中心
3.1 分布式配置中心的由来
微服务系统中,存在很多功能开关和各种参数的配置项,传统的配置文件、数据库等方式无法满足开发人员对配合管理的需求,此时分布式配置中心应运而生。
3.2 分布式配置中心的特点
- 统一管理
- 区分环境
- 实时刷新
- 权限控制
- 版本控制
- 灰度发布
3.3 配置的统一管理
配置中心服务端负责配置的管理(新增、修改、删除、发布),集成了配置中心客户端的微服务程序可以统一从配置中心服务端拉取配置,从而实现整个微服务系统的统一配置管理。
一个微服务应用中的某些配置项,在不同的环境(开发、测试、生产)通常是不同的,作为分布式配置中心需要具有隔离不同环境的功能,使得同一个微服务在不同环境能拉取到对应的配置。
3.4 配置动态实时刷新
当配置中心服务端中的配置发生了修改时,配置中心客户端需要能实时监听到配置的改变,使得微服务应用程序可以实时获取到最新的配置,并且不用重新部署应用程序。
3.5 配置的权限控制
在配置中心,可以针对不同的角色或用户设置对应的权限,比如张三可以新建配置项,但不能发布配置;比如小明可以查看配置项,但不能修改配置。
3.6 配置的版本控制
在使用配置中心的过程中,难免会出现误操作,而这个时候就需要进行版本回退,所以作为配置中心,是一定要支持版本控制的。
3.7 配置的灰度发布
在需要发布一项配置时,如果需要发布到多个实例(集群),那么此时可以只发布到部分实例,待测试通过后,再发布到全部实例,这就是配置的灰度发布。
3.8 常用配置中心组件
- Spring Cloud Config
- 阿里Nacos
- 携程Apollo
- 谷歌consul
四、分布式注册中心
4.1 什么是注册中心?
注册中心相当于微服务架构中的地址通讯录,每个微服务会将服务及其地址注册到注册中心,服务消费者在调用某个微服务之前会先从注册中心查找服务地址,然后在进行调用。
4.2 注册中心的特点
- 服务的自动注册
- 服务的健康检查
- 服务的自动发现
4.3 服务的自动注册
微服务应用在启动时,通过注册中心客户端组件,将服务相关信息自动注册给注册中心服务端。
4.4 服务的健康检查
当已经注册到注册中心的微服务实例宕机后,注册中心服务端能发现实例已经宕机,并把相关信息从注册中心删除掉。
4.5 服务的自动发现
服务消费者需要能实时监听到注册中心中服务信息的变更,以能在真正调用服务时不会出现错误。
4.6 常见注册中心组件
- Zookeeper
- Eureka
- Nacos
- Consul
五、服务网关
5.1 什么是服务网关?
服务网关是整个微服务架构中对外的统一入口,所有的客户端都通过统一的网关使用微服务,服务网关起到了隔离外部访问和内部系统的作用,服务网关是微服务架构中的一个标配组件。
5.2 服务网关的特点
- 高并发
- 安全
- 路由转发
- 监控与限流
- 灰度发布
- 服务重试
- 服务别名
5.3 高并发
作为微服务架构中的对外入口,必须能支持高并发,能承担更高的并发量,并保证高性能。
5.4 安全
服务网关通常具有权限认证、黑名单、白名单等保证网关安全的功能
5.5 路由转发
服务网关接收到外部请求后,要求服务网关能根据请求和配置将请求转发到对应的后端微服务上去。
5.6 监控与限流
作为整个系统的流量入口,服务网关要能监控流量情况,遇到突发情况时能及时限流,保证整个系统的稳定。
5.7 灰度发布
当某个微服务有新版本更新上线时,可利用服务网关进行流量的切换,实现该微服务的灰度发布。
5.8 服务重试
当服务网关调用某个微服务失败后,可以通过服务网关设置重试策略来重新尝试调用该服务。
5.9 服务别名
可以在服务网关中给某个或某些微服务设置别名,从而对外屏蔽内部微服务相关信息。
5.10 常见服务网关组件
- Kong
- Zuul
- Spring Cloud Gateway