Spring Cloud #
国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言。
- Eureka:各个服务启动时,Eureka Client 都会将服务注册到 Eureka Server,并且 Eureka Client 还可以反过来从 Eureka Server 拉取注册表,从而知道其他服务在哪里
- Ribbon:服务间发起请求的时候,基于 Ribbon 做负载均衡,从一个服务的多台机器中选择一台
- Feign:基于 Feign 的动态代理机制,根据注解和选择的机器,拼接请求 URL 地址,发起请求
- Hystrix:发起请求是通过 Hystrix 的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题
- Zuul:如果前端、移动端要调用后端系统,统一从 Zuul 网关进入,由 Zuul 网关转发请求给对应的服务
Eureka #
Eureka 是微服务架构中的注册中心,专门负责服务的注册与发现。
- Eureka Client:负责将这个服务的信息注册到 Eureka Server 中
- Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号
Feign #
Feign 的一个关键机制就是使用了动态代理。
Ribbon #
负载均衡
Ribbon 的负载均衡默认使用的最经典的 Round Robin
轮询算法
Hystrix #
Hystrix 是隔离、熔断以及降级的一个框架。
Hystrix 会搞很多个小小的线程池, 比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。 每个线程池里的线程就仅仅用于请求那个服务。
解决服务雪崩:
-
熔断
比如在 5 分钟内请求积分服务直接就返回了,不要去走网络请求卡住几秒钟。 这个过程,就是所谓的熔断!
-
降级
每次调用积分服务,你就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,你可以根据这些记录手工加一下积分。 这个过程,就是所谓的降级。
Zuul #
微服务网关
可以做统一的降级、限流、认证授权、安全等等
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。