京东技术:【揭秘】一个轻量级分布式 RPC 框架 — EasyRpc

禅あ思 2019-03-25 14:22:08 ⋅ 916 阅读
Tech

"

RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。RPC 可以很好的解耦系统,如 WebService 就是一种基于 HTTP协议的 RPC。


EasyRPC 框架使用的一些技术所解决的问题:

  • 通信:使用Netty作为通信框架。

  • Spring:使用Spring配置服务,加载Bean。

  • 动态代理:客户端使用代理模式透明化服务调用。

  • 消息编解码:使用Protostuff序列化和反序列化消息。

"



服务端发布服务




一个服务接口



一个服务实现



spring-server.xml 配置文件



服务在启动的时候通过 Spring 加载自定义 Bean



通过实现 export 启动 Netty Server,并注册服务到 Server




客户端调用服务




Junit Test



spring-client.xml 配置文件



客户端调用使用代理模式调用服务



代理类,为 RpcFuture 设置超时,否则会出现卡死现象



通过 ConsumerFactoryBean 注入 Spring Bean



通过 refer 启动 Client Server



通过对 connectFuture.channel().closeFuture 听见监听,实现断线自动重练



基于 Protostuff 实现序列化和反序列化工具

由于处理的是 TCP 消息,TCP 的粘包处理 Handler。



消息编解码时开始4个字节表示消息的长度,也就是消息编码的时候,先写消息的长度,再写消息。

作者简介

张松然。京东零售商家研发部架构师。对构建高性能,高可用的大规模分布系统有丰富的开发经验,有多年NIO领域的设计、开发经验,对HTTP、TCP长连接技术有深入研究与领悟。


---------------END----------------

后续的内容同样精彩

长按关注“IT实战联盟”哦




全部评论: 0

    我有话说:

    京东到家订单中心系统mysql到es的转化之路

    原文:https://www.toutiao.com/i6796507988602389006 京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常

    Martian框架发布 3.0.3 版本,Redis分布式

    项目简介 Martian 是一个声明式 API 编程(DAP)框架,可以帮助你快速开发后端服务。 以HttpServer作为 http服务,彻底脱离Tomcat这一类的Web容器和Servlet

    微服务调用为啥都选择使用用RPC,http不更简单吗?

    最近在整理微服务技术架构体系,抛出一个问题大家讨论一下!  

    京东技术:Hystrix 分布式系统限流、降级、熔断框架

    Hystrix是Netflix开源的一款容错框架,包含常用的容错方法:线程隔离、信号量隔离、降级策略、熔断技术

    精品推荐:JDFlutter | 京东技术中台新一代跨平台开发框架

    DFlutter 是商城共享技术部-多端融合技术部推出的新一代跨平台开发框架,可快速集成至现有 Android/iOS 工程,开发者可借助 JDFlutter 平台快速完成 Flutter 业务开发。

    精品推荐:如何实现一个TCC分布式事务框架一点思考

    本文将以Spring容器为例,试图分析一下,实现一个通用的TCC分布式事务框架需要注意的一些问题。

    蚂蚁金服 Java RPC 开源框架—SOFARPC

    SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架

    码云推荐:一个优秀的分布式spring boot/Spring Cloud API限流框架,特别适合微服务架构

    一个优秀的分布式spring boot/Spring Cloud API限流框架,特别适合微服务架构.

    【开源资讯】JWCloud 专业版 v1.0.0 发布,基于 SpringCloud 研发的微服务框架

    简介 JavaWeb_Cloud 微服务平台是一款基于 SpringCloud 框架研发的分布式微服务框架,主要使用技术栈包括: SpringCloud、Vue、ElementUI

    京东技术:使用JDReact小程序双向转换

    JDReact是京东商城前台产品研发部推出的多端融合开发框架

    京东技术:如何实现靠谱的分布式锁?(附SharkLock的设计选择)

    分布式锁,是用来控制分布式系统中互斥访问共享资源的一种手段,从而避免并行导致的结果不可控。

    DDDplus 1.0.2 发布,轻量级业务中台开发框架

    DDDplus 简介 一套轻量级业务中台开发框架,以DDD思想为本,致力于业务资产的可沉淀可传承,全方位解决复杂业务场景的扩展问题,实现中台核心要素,赋能中台建设。 融合了前中台复杂生态协作方法论

    京东技术:多数据模型数据库 | 应用实例解析

    作 者 简 介吕信,京东商城技术架构部资深架构师,拥有多年数据产品研发及架构经验。

    Java并发解决方案:分布式应用限流实践

    任何限流都不是漫无目的的,也不是一个开关就可以解决的问题,常用的限流算法有:令牌桶,漏桶。在之前的文章中,也讲到过,但是那是基于单机场景来写。 之前文章:接口限流算法:漏桶算法&令牌桶算法

    DDDplus 1.1.0 发布,轻量级业务中台开发框架

    DDDplus是一套轻量级业务中台开发框架,以DDD思想为本,致力于业务资产的可沉淀可传承,全方位解决复杂业务场景的扩展问题,实现中台核心要素,赋能中台建设。 融合了前中台复杂生态协作方法论,充分

    Python ORM框架SQLAlchemy 1.3.20 发布

    SQLAlchemy 1.3.20 发布了。SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射(ORM)框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库

    微型Java开发框架Solon 1.1发布,QPS达10万+

    简介 Solon 是一个微型的Java开发框架。项目从2018年启动以来,参考过大量前人作品;历时两年,2700多次的commit;内核保持0.1m的身材,超高的Web跑分,良好的使用体验

    京东技术:使用京东Taro重构小程序

    >>>>  Taro 简介 Taro 是一个基于 React 语法规范的多端统一开发框架,大家可以通过 taro