RPC高级运用

1. 基于Dubbo分布式高并发场景下的运用要点

 

1.1 异步处理机制

  • 为什么要采用异步?
    如果采用同步调用, CPU 大部分的时间都在等待而没有去计算,从而导致 CPU 的利用率不够。
    RPC 请求比较耗时的原因主要是在哪里?
在大多数情况下,RPC 本身处理请求的效率是在毫秒级的。RPC 请求的耗时大部分都是业务耗时。
  • 调用端如何实现异步?
    常用的方式就是 Future 方式,它是返回 Future 对象,通过 GET 方式获取结果;或者采用入参为 Callback 对象的回调方式,处理结果。
    基于 RPC 的 Dubbo 框架是如何实现异步调用呢?

  • 服务端如何实现异步?
    为了提升性能,连接请求与业务处理不会放在一个线程处理, 这个就是服务端的异步化。服务端业务处理逻辑加入异步处理机制。
在 RPC 框架提供一种回调方式,让业务逻辑可以异步处理,处理完之后调用 RPC 框架的回调接口。

RPC 框架的异步策略主要是调用端异步与服务端异步。调用端的异步就是通过 Future 方式。
服务端异步则需要一种回调方式,让业务逻辑可以异步处理。这样就实现了 RPC 调用的全异步化。

1.2 路由与负载均衡

  • 为什么要采用路由?
    真实的环境中一般是以集群的方式提供服务,对于服务调用方来说,一个接口会有多个服务提供方同时提供服务,所以 RPC 在每次发起请求的时候,都需要从多个服务节点里面选取一个用于处理请求的服务节点。
    这就需要在 RPC 应用中增加路由功能。
  • 如何实现路由?
    服务注册发现方式:
    通过服务发现的方式从逻辑上看是可行,但注册中心是用来保证数据的一致性。通过服务发现方式来实现请求隔离并不理想。
    RPC 路由策略:
    从服务提供方节点集合里面选择一个合适的节点(负载均衡),把符合我们要求的节点筛选出来。这个就是路由策略:
接收请求-->请求校验-->路由策略-->负载均衡-->

使用了 IP 路由策略后,整个集群的调用拓扑如下图所示:



有些场景下,可能还需要更细粒度的路由方式,比如说根据 SESSIONID 要落到相同的服务节点上以保持会话的有效性;
可以考虑采用参数化路由

  • RPC 框架中的负载均衡
    RPC 的负载均衡是由 RPC 框架自身提供实现,自主选择一个最佳的服务节点,发起 RPC 调用请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值