1、微服务
拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行
2、集群、分布式、节点
集群
分布式
节点
3、远程调用
分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要互相调用,我们称为远程调用。
SpringCloud 中使用 HTTP+JSON 的方式完成远程调用。
4、负载均衡
A 服务调用 B 服务,B 服务部署在多台机器,A 发送请求到任意一个服务器均可完成调用。
为了使每台服务器不至于忙于处理请求,可以将请求均衡到每一个服务器,提升网站的可用性。
负载均衡算法:
5、服务注册、服务发现、注册中心
A 服务调用 B 服务、C 服务,但是 A 服务不知道 B、C 服务所在的服务器是正常还是下线,注册中心可以帮助解决。
注册中心实时知道哪些服务正常,哪些服务下线,也能记录新增的正常服务。服务之间调用不需要去判断哪些服务正常,注册中心会告诉服务有效的调用地址。
**服务注册:**服务将自己的 IP 和端口报告给注册中心的过程。
**服务发现:**查询可用微服务列表及其网络地址的机制。
**注册中心:**集中记录每个服务的地址,注册和注销服务。
**服务检查:**检查已注册的服务,如发现某服务长时间无法访问,则会从注册中心移除该服务。
6、配置中心
每个服务都有大量配置,更新一个配置,需要同步到每个服务,如何修改每个服务的配置呢?
每个服务从配置中心获取配置,自动更新自己的配置。
7、服务熔断、服务降级
下单场景:用户下单了一个商品,客户端调用订单服务来生成预付款订单,订单服务调用商品服务查看下单的哪款商品,商品服务调用库存服务判断这款商品是否有库存,如有库存,则可以生成预付款订单。
雪崩场景:
服务熔断:
设置服务的超时,当被调用的服务某段时间内失败率达到某个阈值,则对该服务开启短路保护,后来的请求不调用这个服务,直接返回默认的数据。
服务降级:
对非核心业务降级运行:某些服务不处理,或者简单处理(抛异常、返回 Null、返回 Mock 数据)
8、API 网关