成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

RPC框架原理及從零實(shí)現(xiàn)系列博客(一):思路篇

tracy / 3386人閱讀

摘要:等之所以支持跨語言,是因?yàn)樗麄冏约憾x了一套結(jié)構(gòu)化數(shù)據(jù)存儲格式,如的,用于編解碼對象,作為各個語言通信的中間協(xié)議。

前段時間覺得自己一直用別人的框架,站在巨人的肩膀上,也該自己造造輪子了 一時興起 就著手寫起了RPC框架 這里寫了系列博客拿給大家分享下

這篇是開篇的思路篇 項(xiàng)目最終的代碼放在了我的github上
https://github.com/wephone/Me...
歡迎star,提issues

首先說下關(guān)于RPC的幾個常見問題

什么是RPC

PRC:Remote Procedure Call 遠(yuǎn)程過程調(diào)用
在分布式系統(tǒng)中,每個節(jié)點(diǎn)之間的通信都是靠RPC來完成 RPC是分布式應(yīng)用的基本組件

常見的RPC框架

Apache的Thrift
Google的gprc
阿里巴巴的dubbo等
dubbo應(yīng)該是3這中最簡單易用的了,但dubbo只支持Java語言,thrift和gprc都是支持跨語言的,并且dubbo內(nèi)部幫你實(shí)現(xiàn)了對分布式注冊中心zookeeper的使用,另外兩個仍需自己實(shí)現(xiàn)對注冊中心的操作。
thrift grpc等之所以支持跨語言,是因?yàn)樗麄冏约憾x了一套結(jié)構(gòu)化數(shù)據(jù)存儲格式,如Google的protobuf,用于編解碼對象,作為各個語言通信的中間協(xié)議。

RPC和HTTP請求有什么區(qū)別

RPC是一個概念,普通web開發(fā)的curl rest接口,也可以算作一種基于HTTP協(xié)議的RPC調(diào)用
RPC的使用比起curl一個重要的點(diǎn)就是忽略底層細(xì)節(jié),像使用本地服務(wù)一樣調(diào)用遠(yuǎn)程服務(wù) 我們將在RPC框架中使用動態(tài)代理來實(shí)現(xiàn)這個要求

本系列博客由淺到深,帶大家打造一個支持跨語言,也支持zookeeper的RPC框架 目前先用Java實(shí)現(xiàn)

實(shí)現(xiàn)思路

RPC有兩個使用方 一個是本地調(diào)用端 一個是遠(yuǎn)程實(shí)現(xiàn)端

調(diào)用端使用動態(tài)代理 代理我們需要遠(yuǎn)程調(diào)度的接口 實(shí)現(xiàn)忽略底層細(xì)節(jié) 像使用本地服務(wù)一樣使用調(diào)用遠(yuǎn)程服務(wù)

將我們本地調(diào)用的接口方法信息(形參,方法名,返回類型等)通過網(wǎng)絡(luò)發(fā)送至遠(yuǎn)程實(shí)現(xiàn)端

遠(yuǎn)程實(shí)現(xiàn)端接收到相應(yīng)信息,反射調(diào)用對象的實(shí)現(xiàn)類

執(zhí)行完實(shí)現(xiàn)類后把返回值發(fā)回給調(diào)用端

調(diào)用端接收到返回值,代理返回結(jié)果 遠(yuǎn)程調(diào)用完畢

實(shí)現(xiàn)細(xì)節(jié)

使用Netty作為Java端網(wǎng)絡(luò)傳輸框架

為盡量支持跨語言 傳輸數(shù)據(jù)編解碼使用json格式(本來想用protobuf 但它只支持強(qiáng)類型Int這種 不支持編解碼Object這樣的弱類型 會降低使用的靈活性)

下一篇博客中 將帶大家用11個Java類 實(shí)現(xiàn)一個基于spring的Java RPC框架
暫時不使用一些常見設(shè)計(jì)模式,暫時不做zookeeper的支持和異常處理等細(xì)節(jié)問題

后續(xù)版本再對這個demo進(jìn)行優(yōu)化,并支持zookeeper

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68274.html

相關(guān)文章

  • RPC框架原理從零實(shí)現(xiàn)系列博客(三):zookeeper注冊中心原理

    摘要:每個都可以通過其路徑唯一標(biāo)識,同時每個節(jié)點(diǎn)還可以存儲少量數(shù)據(jù)。監(jiān)聽機(jī)制,監(jiān)聽某個當(dāng)該發(fā)生變化時,會回調(diào)該,但是這個是一次性的,下次需要監(jiān)聽時還得再注冊一次。 前面的文章中 我用netty實(shí)現(xiàn)了一個簡單的一對一的RPC 11個類實(shí)現(xiàn)簡單java rpc 接下來的文章中 我將使用zookeeper作為rpc調(diào)用的分布式注冊中心 從而實(shí)現(xiàn)多對多(多個調(diào)用者,多個提供者)的rpc調(diào)用,負(fù)載均...

    codergarden 評論0 收藏0
  • RPC框架原理從零實(shí)現(xiàn)系列博客(二):11個類實(shí)現(xiàn)簡單RPC框架

    摘要:項(xiàng)目版本源碼在上一博文中跟大家講了的實(shí)現(xiàn)思路思路畢竟只是思路那么這篇就帶著源碼給大家講解下實(shí)現(xiàn)過程中的各個具體問題讀懂本篇需要的基本知識若尚未清晰請自行了解后再閱讀本文動態(tài)代理框架的基本使用的基本配置最終項(xiàng)目的使用如下調(diào)用端代碼及配置測試類 項(xiàng)目1.0版本源碼 https://github.com/wephone/Me... 在上一博文中 跟大家講了RPC的實(shí)現(xiàn)思路 思路畢竟只是思路...

    you_De 評論0 收藏0
  • java

    摘要:多線程編程這篇文章分析了多線程的優(yōu)缺點(diǎn),如何創(chuàng)建多線程,分享了線程安全和線程通信線程池等等一些知識。 中間件技術(shù)入門教程 中間件技術(shù)入門教程,本博客介紹了 ESB、MQ、JMS 的一些知識... SpringBoot 多數(shù)據(jù)源 SpringBoot 使用主從數(shù)據(jù)源 簡易的后臺管理權(quán)限設(shè)計(jì) 從零開始搭建自己權(quán)限管理框架 Docker 多步構(gòu)建更小的 Java 鏡像 Docker Jav...

    honhon 評論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務(wù)方面的使用。目標(biāo)達(dá)成后還會有去構(gòu)建微服務(wù),希望大家多多支持。原文地址手把手教程優(yōu)雅的應(yīng)用四手把手實(shí)現(xiàn)后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學(xué)習(xí) | 掘金技術(shù)征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評論0 收藏0
  • 幾行代碼實(shí)現(xiàn)RPC框架

    摘要:前言昨天看了一篇關(guān)于用幾行代碼實(shí)現(xiàn)框架的博客,收獲很大,于是我想在這篇博客的基礎(chǔ)上理一理思路,盡可能的多加一點(diǎn)注釋,進(jìn)一步降低學(xué)習(xí)框架原理的門檻。 前言 昨天看了一篇關(guān)于用幾行代碼實(shí)現(xiàn)RPC框架的博客[http://javatar.iteye.com/blog...](),收獲很大,于是我想在這篇博客的基礎(chǔ)上理一理思路,盡可能的多加一點(diǎn)注釋,進(jìn)一步降低學(xué)習(xí)RPC框架原理的門檻。 原理圖...

    Caicloud 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<