Spring Cloud

我所理解的 Spring Cloud 就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册配置中心消息总线负载均衡断路器数据监控 等操作,而 Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。

配置中心

什么是配置中心

微服务系统中,存在很多功能开关和各种参数的配置项,传统的配置文件、数据库等方式无法满足开发人员对配合管理的需求,此时,分布式配置中心应运而生。

配置中心的特点

  1. 统一管理:配置中心服务端负责配置的管理(新增、修改、删除、发布),集成了配置中心客户端的微服务程序可以统一从配置中心服务端拉取配置,从而实现整个微服务系统的统一配置管理。
  2. 区分环境:一个微服务应用中的某些配置项,在不同的环境(开发、测试、生产)通常是不同的,作为分布式配置中心需要具有隔离不同环境的功能,使得同一个微服务在不同环境能拉取到对应的配置。
  3. 实时刷新:当配置中心服务端中的配置发生了修改时,配置中心客户端需要能实时监听到配置的改变,使得微服务应用程序可以实时获取到最新配置,并且不用重新部署应用程序。
  4. 权限控制:在配置中心中,可以针对不同的角色或用户设置对应的权限,比如张三可以新建配置项,但不能发布配置;比如小明可以查看配置项,但不能修改配置。
  5. 版本控制:在使用配置中心的过程中,难免会出现误操作,而这个时候就需要进行版本回退,所以作为配置中心,是一定要支持版本控制的。
  6. 灰度发布:在需要发布一项配置时,如果需要发布到多个实例(集群),那么此时可以只发布到部分实例,待测试通过后,在发布到全部实例,这就是配置的灰度发布。

    常见配置中心组件

  7. Spring Cloud Config

  8. Nacos
  9. Apollo
  10. consul

    注册中心

    什么是注册中心

    注册中心相当于微服务架构中的地址通讯录,记录每个微服务及其地址的映射关系,每个微服务会将服务及其地址注册到注册中心,服务消费者在调用某个微服务之前会先从注册中心查找服务地址,然后进行调用。

    注册中心的特点

  11. 服务的自动注册:微服务应用在启动时,通过注册中心客户端组件,将服务相关信息自动注册给注册中心服务端。

  12. 服务的健康检查:当已经注册到注册中心的微服务实例宕机后,注册中心服务端能发现实例已经宕机,并把相关信息从注册中心删除掉。
  13. 服务的自动发现:服务消费者需要能实时监听到注册中心中服务信息的变更,以能在真正调用服务时不会出现错误。

    常见注册中心组件

  14. Zookeeper

  15. Eureka
  16. Nacos
  17. Consul

    服务网关

    什么是服务网关

    服务网关是整个微服务架构中对外的统一入口,所有的客户端都通过统一的网关使用微服务,服务网关起到了隔离外部访问和内部系统的作用,服务网关是微服务架构中的一个标配组件。

    服务网关的特点

  18. 高并发:作为微服务架构中的对外入口,必须能支持高并发,能承担更高的并发量,并保证高性能;

  19. 安全:服务网关通常具有权限认证、黑名单、白名单等保证安全功能;
  20. 路由转发:服务网关接收到外部请求后,要求能够转发到后端的微服务上去;
  21. 监控与限流:作为整个系统的流量入口,服务网关要能监控流量情况,遇到突发情况时能及时限流,保证整个系统的稳定;
  22. 灰度发布:当某个微服务有新版本更新上线时,可以利用服务网关进行流量的切换,实现灰度发布;
  23. 服务重试:当服务网关调用某个微服务失败后,可以设置重试策略来重新尝试调用该服务;
  24. 服务别名:可以在服务网关中给某个或某些微服务设置别名,从而对外屏蔽内部微服务相关信息

    常见服务网关组件

  25. Kong

  26. Zuul
  27. Spring Cloud Gateway

    RPC调用

    什么是RPC调用

    RPC就是远程过程调用,对于Java程序而言,RPC就是远程方法调用,表示一个方法调用远程的另外一个方法,微服务架构中一个服务调用另外一个服务就可以用RPC调用

    RPC调用与HTTP调用区别

  28. HTTP调用使用的是HTTP协议,是网络7层中的应用层协议,HTTP协议规定了数据传输的格式,Restful风格就可以通过HTTP协议来实现。

  29. RPC调用时不是网络层面的协议,而是更上层的更灵活的通信协议,RPC调用可以自定义数据格式、数据传输方式,只要能保证调用到远程方法即可。

    常用的RPC调用组件或框架

  30. Dubbo

  31. gRPC
  32. Thrift
  33. Feign

    服务熔断

    什么是服务熔断

    服务熔断是指,当服务A调用的某个服务B不可用时,上游服务A为了保证自己不受影响,从而不再调用服务B,直接返回一个结果,减轻服务A和服务B的压力,直到服务B恢复。

    熔断器

    实现熔断功能的叫熔断器,代表组件为Hystrix、Sentinel

    熔断器的三种状态

  34. Closed:关闭状态,当调用失败次数达到阈值值则启动熔断器;

  35. Open:打开状态,此时不会真正的调用下游服务,而是直接返回,当过了某段时间后,熔断器会进入到半打开状态;
  36. Half-Open:半打开状态,此时会有部分请求访问下游服务,如果这些请求都调用成功,则认为下游恢复了,关闭熔断器,否则熔断器回到打开状态。

    服务降级

    什么是服务降级

    服务降级是指,当发现系统压力过载时,可以通过关闭某个服务,或限流某个服务来减轻系统压力,这就是服务降级。

    服务降级与服务熔断的区别

  • 相同点:
    • 都是为了防止系统崩溃;
    • 都让用户体验到某些功能暂时不可用;
  • 不同点:
    • 熔断是下游服务故障触发的,降级是为了降低系统负载;