EasySwoole RPC
- 订单系统
- 用户管理系统
- 商品管理系统
那么在这样的架构中,就会存在一个Api网关的概念,或者是叫服务集成者。我的Api网关的职责,就是把一个请求
,拆分成N个小请求,分发到各个小服务里面,再整合各个小服务的结果,返回给用户。例如在某次下单请求中,那么大概
发送的逻辑如下:
- Api网关接受请求
- Api网关提取用户参数,请求用户管理系统,获取用户余额等信息,等待结果
- Api网关提取商品参数,请求商品管理系统,获取商品剩余库存和价格等信息,等待结果。
- Api网关融合用户管理系统、商品管理系统的返回结果,进行下一步调用(假设满足购买条件)
- Api网关调用用户管理信息系统进行扣款,调用商品管理系统进行库存扣减,调用订单系统进行下单(事务逻辑和撤回可以用请求id保证,或者自己实现其他逻辑调度)
而在以上发生的行为,就称为远程过程调用。而调用过程实现的通讯协议可以有很多,比如常见的HTTP协议。而EasySwoole RPC采用自定义短链接的TCP协议实现,每个请求包,都是一个JSON,从而方便实现跨平台调用。
粗暴来理解,一般是某个服务故障或者是异常引起的,类似现实世界中的‘保险丝’,当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时。
什么是服务降级?
什么是服务限流?
粗暴来理解,例如某个服务器最多同时仅能处理100个请求,或者是cpu负载达到百分之80的时候,为了保护服务的稳定性,则不在希望继续收到
新的连接。那么此时就要求客户端不再对其发起请求。因此EasySwoole RPC提供了NodeManager接口,你可以以任何的形式来
监控你的服务提供者,在getServiceNode方法中,返回对应的服务器节点信息即可。