京東推出輕量級分布式 RPC 框架 — EasyRPC
在看|星標(biāo)|留言,? 真愛

RPC,即 Remote Procedure Call(遠(yuǎn)程過程調(diào)用),調(diào)用遠(yuǎn)程計(jì)算機(jī)上的服務(wù),就像調(diào)用本地服務(wù)一樣。RPC 可以很好的解耦系統(tǒng),如 WebService 就是一種基于 HTTP協(xié)議的 RPC。
EasyRPC 框架使用的一些技術(shù)所解決的問題:
通信:使用Netty作為通信框架。
Spring:使用Spring配置服務(wù),加載Bean。
動(dòng)態(tài)代理:客戶端使用代理模式透明化服務(wù)調(diào)用。
消息編解碼:使用Protostuff序列化和反序列化消息。
"
一個(gè)服務(wù)接口

一個(gè)服務(wù)實(shí)現(xiàn)

spring-server.xml?配置文件

服務(wù)在啟動(dòng)的時(shí)候通過 Spring 加載自定義 Bean

通過實(shí)現(xiàn) export 啟動(dòng) Netty Server,并注冊服務(wù)到 Server

Junit Test

spring-client.xml?配置文件

客戶端調(diào)用使用代理模式調(diào)用服務(wù)

代理類,為 RpcFuture 設(shè)置超時(shí),否則會(huì)出現(xiàn)卡死現(xiàn)象

通過 ConsumerFactoryBean 注入 Spring Bean

通過 refer 啟動(dòng) Client Server

通過對?connectFuture.channel().closeFuture 聽見監(jiān)聽,實(shí)現(xiàn)斷線自動(dòng)重練

基于 Protostuff 實(shí)現(xiàn)序列化和反序列化工具

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

消息編解碼時(shí)開始4個(gè)字節(jié)表示消息的長度,也就是消息編碼的時(shí)候,先寫消息的長度,再寫消息。

前線推出學(xué)習(xí)交流群,加群一定要備注:
研究/工作方向+地點(diǎn)+學(xué)校/公司+昵稱(如大數(shù)據(jù)+上海+上交+可可) 根據(jù)格式備注,可更快被通過且邀請進(jìn)群,領(lǐng)取一份專屬學(xué)習(xí)禮包 掃碼加我微信進(jìn)群 大廠內(nèi)推和技術(shù)交流,和前輩大佬們零距離 歷史推薦 今日頭條技術(shù)架構(gòu)到底有多牛? 騰訊推出高性能 RPC 開發(fā)框架 滴滴十大技術(shù)方向開源項(xiàng)目出爐! 阿里巴巴微服務(wù)架構(gòu)的四大金剛利器 騰訊全文檢索引擎 wwsearch 正式開源 好文點(diǎn)個(gè)在看吧!


