天天看點

第01篇:手寫JavaRPC架構之思路分析

第01篇:手寫JavaRPC架構之思路分析

作者: 西魏陶淵明

部落格: ​​https://blog.springlearn.cn/​​

天下代碼一大抄, 抄來抄去有提高, 看你會抄不會抄!
第01篇:手寫JavaRPC架構之思路分析

一、前言

如果不是因為熱愛,我不會這樣;如果不是為了,漲點粉絲,我不會這樣;

如果不是為了幾兩散碎銀子,我更不會這樣。

以前的文章開場太過嚴肅,太過專業。就像大學老師上課,隻知道講課。不知道互動。這樣

效果太差,寫的沒意思,讀者更是沒意思。大資料分析還以為你是抄的,還不給你推薦熱門 😭。

不然就改變一下風格吧,從本系列文章開始,小編就要放飛 ✈️ 自我,随心 ❤️ 而動。希望在分享,總結自己掌握的知識點的同時,能給各位客官帶來一點小小的收獲。小編盡量全力輸出幹貨,如果看完感覺還行的話,希望能多多關注。你的關注,就是我進步的最大動力。如果看完,感覺就這? 可以留言讨論。接受各位看官的批評和意見。共同學習共同進步。

二、目标

本系列文章的總體目标是從零實作一個RPC架構,我們将從TCP通信協定開始,

一步一步實操,将socket 二進制資料流一步一步變成Java可以認識的資料類型,

進而最終實作RPC遠端通信,并可以內建在Spring中,同時也可以支援SpringBoot的自動化配置。最終我們會将項目釋出到全球Maven倉庫, 讓大家都可以下載下傳學習。

本系列文章主要知識點以思維導圖的方式,展示在下圖=面,内容隻會多不會少。幹貨較多,對于初級的同學可以收藏起來慢慢看。畢竟一口也吃不了一個胖子。但是不能沒有信心。

正如小編的口頭禅: 寫代碼和寫文章是一樣一樣的。

天下代碼一大抄,抄來抄去有提高,看你會抄不會抄。

第01篇:手寫JavaRPC架構之思路分析

三、思路分析

3.1 什麼是RPC架構

我們在要寫RPC架構,我們先思考下RPC是什麼? 白話點就是一個遠端通信的工具而已。

他可以讓開發者像調用本地方法一樣,友善的調用遠端的方法。

目前市面上的RPC架構主要有下面這些

  • dubbo
  • grpc
  • feign

可能對于銀行和傳統國企可能偏愛國産的dubbo架構,可能會涉及到國家安全吧,而對于網際網路公司更多的會使用SpringCloud的全家桶。那麼不管他們使用的其中的哪一款,其實這些架構都是能做到,讓開發者像調用本地方法一樣實作遠端方法的調用的。

可以實作遠端調用的呢? 答案當然就是利用socket通信了。而socket底層通信

都是基于tcp/ip協定實作的。是以以上這三款的

3.2 通信架構的差別

  • dubbo
  • grpc
  • feign

共同點:

  • 都是基于tcp/ip協定來實作通信
  • 都屏蔽底層通信細節,使開發者隻用關心自己的業務即可

不同點:

  • grpc和feign都是基于tcp協定更上層的http協定來實作的
  • dubbo是基于tcp協定上自己重新實作了一套自己的規則,而這個規則就是dubbo協定。

dubbo協定因為是直接基于tcp協定定制的,是以可能性能會更加的好。能實作更多的底層的特性,比如說長連接配接。而其他兩款是基于http協定來進行封裝的,正因為它的這個特性,是以隻是http用戶端都可以進行調用,更适合跨平台,跨語言。因為不管是什麼語言,都支援http協定。但是他的性能可能就相對沒有dubbo好,綜上所述他們各有勝負。現在主要比的就是看誰的生态比較好,誰的周邊擴充更加豐富。

3.3 RPC底層實作

前面我們說了,RPC架構是一個,可以讓程式猿像調用本地方法一樣實作遠端方法調用的一個工具。其實這句話就說出了主要的答案。

第01篇:手寫JavaRPC架構之思路分析

既然知道了他的大概實作,那麼其實思路就有了。我們第一步就是使用Java語言來實作底層

的通信能力建設,然後在這個基礎上進行二次封裝,最終通過動态代理的形式,将底層通信的細節給屏蔽起來。如此就能實作一個RPC協定了。

思路就是這個思路。

第01篇:手寫JavaRPC架構之思路分析

是以本系列文章的第一部分,就是先完成通信層的建設,使用Java實作一個通用的底層協定,實作通信能力。