Lnk$RPC 使用说明文档$
!
第一章 概述
1.1 项目背景
使用 MQ 实现的 RPC 特性:$
1.可以把请求的压力保存到 MQ,逐渐释放出来,让处理者按照自己的节奏来处
理。!
2.由于 MQ 本身具有的缓冲性质,可以在应对高并发的时候保证请求不丢失。!
3.异步单向的消息,不需要等待消息处理的完成,故原生支持异步调用模型。!
4.无需服务注册中心和负载均衡的概念,完全依赖 MQ 来完成。!
5.引入一下新的 MQ 结点,系统的可靠性会受 MQ 结点的影响。!
6.对于有同步返回需求,用 MQ 则变得麻烦。!
7.因为 AM QP 协议面向的场景主要是高可用性的场景,所以其服务端的实现略复
杂,并且协议数据比直接 tcp 的裸数据大不少,另外无论是服务端还是客户端都
存在着成对的拆包和封包的过程。!
!
基于 Netty 和 Mina 等通讯框架实现的 RPC 的特性:$
1.请求压力会直接传递到服务端,需要熔断,限流,降级,超时等服务治理策略。!
2.需要有注册中心和负载均衡策略。!
3.支持同步和异步调用。!
4.性能比较高。!
!
综上所述:由于 MQ 的稳定性依然成为我们目前系统稳定性和可靠性的最大障
碍,而 RabbitMQ 的优化定制难度较高,所以寻找一款可替代的 MQ 服务或者去
除 MQ 结点成为本项目的主题,在对市面上 MQ 的调研之后,我们决定选择后者
方案,因为基于点对点模型的 RPC 解决方案目前来说比较成熟,可以借鉴学习
的产品和思路比较多,很容易打造一款适合我们自身业务特性的 RPC 产品。!
!
Lnk$ RPC 是一款基于 Netty 和 Mina 实现 RPC 通讯协议,支持同步,异步和异
步回调三种 RPC 调用方式,支持参数和返回值多态。支持多种负载均衡方式,
支持调用流量控制,支持 zook eeper 服务注册发现方式,服务端口支持开发人员,
运维人员配置以及动态分配,支持服务依赖关系梳理以及调用链路跟踪。支持
spring 配置。在服务端通过分组策略将来自不同组别的请求处理资源隔离,该思
路借鉴与 RocketMQ 的实现思想。!
1.2 面向的读者
运维人员,开发人员。!
!
评论0