亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

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

tracy / 3427人閱讀

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

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

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

首先說(shuō)下關(guān)于RPC的幾個(gè)常見(jiàn)問(wèn)題

什么是RPC

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

常見(jiàn)的RPC框架

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68274.html

相關(guān)文章

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

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

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

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

    you_De 評(píng)論0 收藏0
  • java

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

    honhon 評(píng)論0 收藏0
  • Java后端

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

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

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

    Caicloud 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<