国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

tracy / 3370人閱讀

摘要:等之所以支持跨語言,是因為他們自己定義了一套結構化數據存儲格式,如的,用于編解碼對象,作為各個語言通信的中間協議。

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

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

首先說下關于RPC的幾個常見問題

什么是RPC

PRC:Remote Procedure Call 遠程過程調用
在分布式系統中,每個節點之間的通信都是靠RPC來完成 RPC是分布式應用的基本組件

常見的RPC框架

Apache的Thrift
Google的gprc
阿里巴巴的dubbo等
dubbo應該是3這中最簡單易用的了,但dubbo只支持Java語言,thrift和gprc都是支持跨語言的,并且dubbo內部幫你實現了對分布式注冊中心zookeeper的使用,另外兩個仍需自己實現對注冊中心的操作。
thrift grpc等之所以支持跨語言,是因為他們自己定義了一套結構化數據存儲格式,如Google的protobuf,用于編解碼對象,作為各個語言通信的中間協議。

RPC和HTTP請求有什么區別

RPC是一個概念,普通web開發的curl rest接口,也可以算作一種基于HTTP協議的RPC調用
RPC的使用比起curl一個重要的點就是忽略底層細節,像使用本地服務一樣調用遠程服務 我們將在RPC框架中使用動態代理來實現這個要求

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

實現思路

RPC有兩個使用方 一個是本地調用端 一個是遠程實現端

調用端使用動態代理 代理我們需要遠程調度的接口 實現忽略底層細節 像使用本地服務一樣使用調用遠程服務

將我們本地調用的接口方法信息(形參,方法名,返回類型等)通過網絡發送至遠程實現端

遠程實現端接收到相應信息,反射調用對象的實現類

執行完實現類后把返回值發回給調用端

調用端接收到返回值,代理返回結果 遠程調用完畢

實現細節

使用Netty作為Java端網絡傳輸框架

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

下一篇博客中 將帶大家用11個Java類 實現一個基于spring的Java RPC框架
暫時不使用一些常見設計模式,暫時不做zookeeper的支持和異常處理等細節問題

后續版本再對這個demo進行優化,并支持zookeeper

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68274.html

相關文章

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

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

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

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

    you_De 評論0 收藏0
  • java

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

    honhon 評論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務方面的使用。目標達成后還會有去構建微服務,希望大家多多支持。原文地址手把手教程優雅的應用四手把手實現后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學習 | 掘金技術征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評論0 收藏0
  • 幾行代碼實現RPC框架

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

    Caicloud 評論0 收藏0

發表評論

0條評論

tracy

|高級講師

TA的文章

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