国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 從零開始手寫 RPC (00) 概覽 overview

這篇具有很好參考價值的文章主要介紹了java 從零開始手寫 RPC (00) 概覽 overview。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

rpc

rpc 是基于 netty 實現(xiàn)的 java rpc 框架,類似于 dubbo。

主要用于個人學習,由漸入深,理解 rpc 的底層實現(xiàn)原理。

特性

  • 基于 netty4 的客戶端調(diào)用服務(wù)端

  • p2p 調(diào)用

  • serial 序列化支持

  • timeout 超時處理

  • register center 注冊中心

  • load balance 負載均衡

  • callType 支持 oneway sync 等調(diào)用方式

  • fail 支持 failOver failFast 等失敗處理策略

  • generic 支持泛化調(diào)用

  • gracefully 優(yōu)雅關(guān)閉

  • rpcInterceptor 攔截器

  • filter 過濾器

  • check 客戶端啟動檢測服務(wù)是否可用

  • heartbeat 服務(wù)端心跳

快速入門

maven 引入

<dependency>
    <groupId>com.github.houbb</groupId>
    <artifactId>rpc-all</artifactId>
    <version>${rpc.version}</version>
</dependency>

ps: 如果本地 p2p 測試,register 注冊中心可選。

測試

注冊中心

RegisterBs.newInstance().start();

服務(wù)端

ServiceBs.getInstance()
         .register(ServiceIdConst.CALC, new CalculatorServiceImpl())
         .registerCenter(ServiceIdConst.REGISTER_CENTER)
         .expose();

客戶端

// 服務(wù)配置信息
ReferenceConfig<CalculatorService> config = ClientBs.newInstance();
config.serviceId(ServiceIdConst.CALC);
config.serviceInterface(CalculatorService.class);
// 自動發(fā)現(xiàn)服務(wù)
config.subscribe(true);
config.registerCenter(ServiceIdConst.REGISTER_CENTER);
// 攔截器測試
config.rpcInterceptor(new CostTimeInterceptor());

CalculatorService calculatorService = config.reference();
CalculateRequest request = new CalculateRequest();
request.setOne(10);
request.setTwo(20);

CalculateResponse response = calculatorService.sum(request);
System.out.println(response);

前言

工作至今,接觸 rpc 框架已經(jīng)有很長時間。

但是對于其原理一直只是知道個大概,從來沒有深入學習過。

以前一直想寫,但由于各種原因被耽擱。

技術(shù)準備

Java 并發(fā)實戰(zhàn)學習

TCP/IP 協(xié)議學習筆記

Netty 權(quán)威指南學習

這些技術(shù)的準備階段,花費了比較長的時間。

也建議想寫 rpc 框架的有相關(guān)的知識儲備。

其他 rpc 框架使用的經(jīng)驗此處不再贅述。

快速迭代

原來一直想寫 rpc,卻不行動的原因就是想的太多,做的太少。

想一下把全部寫完,結(jié)果就是啥都沒寫。

所以本次的開發(fā),每個代碼分支做的事情實際很少,只做一個功能點。

陸陸續(xù)續(xù)經(jīng)過近一個月的完善,對 rpc 框架有了自己的體會和進一步的認知。

代碼實現(xiàn)功能,主要參考 Apache Dubbo

文檔

文檔

文檔將使用 markdown 文本的形式,補充 code 層面沒有的東西。

代碼注釋

代碼有詳細的注釋,便于閱讀和后期維護。

測試

目前測試代碼算不上完善。后續(xù)將陸續(xù)補全。

rpc 模塊

模塊 說明
rpc-common 公共代碼
rpc-register 注冊中心
rpc-server 服務(wù)端
rpc-client 客戶端
rpc-all 全部引用模塊(簡化包引用)

代碼分支

release_0.0.1-server 服務(wù)端啟動

release_0.0.2-client 客戶端啟動

release_0.0.3-客戶端調(diào)用服務(wù)端

release_0.0.4-p2p 客戶端主動調(diào)用服務(wù)端

release_0.0.5-serial 序列化

release_0.0.6-通用的反射調(diào)用

release_0.0.7-timeout 超時處理

release_0.0.8-register 注冊中心

release_0.0.9-load balance 負載均衡

release_0.1.0-callType 調(diào)用方式

release_0.1.1-fail 失敗策略

release_0.1.2-generic 泛化調(diào)用

release_0.1.3-gracefully 優(yōu)雅關(guān)閉

release_0.1.4-rpcInterceptor 攔截器

文檔說明

0.0.1-server 服務(wù)端啟動

0.0.2-client 客戶端啟動

0.0.3-客戶端調(diào)用服務(wù)端

0.0.4-p2p 客戶端主動調(diào)用服務(wù)端

0.0.5-serial 序列化

0.0.6-通用反射調(diào)用

0.0.7-timeout 超時處理

0.0.8-register 注冊中心

0.0.9-load balance 負載均衡

0.1.0-callType 調(diào)用方式

0.1.1-fail 失敗策略

0.1.2-generic 泛化調(diào)用

0.1.3-gracefully 優(yōu)雅關(guān)閉

0.1.4-rpcInterceptor 攔截器

測試代碼

從 v0.0.6 及其之后,為了讓代碼保持純凈,將測試代碼全部放在 rpc-example。

每個測試代碼和實現(xiàn)版本一一對應(yīng)。文章來源地址http://www.zghlxwxcb.cn/news/detail-837317.html

到了這里,關(guān)于java 從零開始手寫 RPC (00) 概覽 overview的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 從零開始學JAVA——常用類

    將字符串“2016-02-22”轉(zhuǎn)換為對應(yīng)的java.sql.Date類的對象 new+構(gòu)造器 單例、Calendar.getInstance() 解釋何為編碼?解碼?何為日期時間的格式化?解析? 編碼:字符串–字節(jié) 解碼:字節(jié)–字符串 格式化:日期–字符串 解析:字符串–日期 自定義Person類如下,如何實現(xiàn)自然排序(按

    2024年02月11日
    瀏覽(22)
  • 【從零開始學習JAVA | 第十五篇】 多態(tài)

    【從零開始學習JAVA | 第十五篇】 多態(tài)

    本篇我們來解釋一下什么是多態(tài)關(guān)系,多態(tài)關(guān)系屬于面向?qū)ο笕筇卣鞯淖詈笠粋€,可以說面向?qū)ο蟮闹攸c就在多態(tài),因此我們要學好面向?qū)ο缶幊趟枷?,就要學好多態(tài)。 ????????Java中的多態(tài)是指 同一類對象在不同情況下可能表現(xiàn)出不同的形態(tài)和行為。 它包括了 方法重

    2024年02月10日
    瀏覽(23)
  • 【從零開始學習JAVA | 第三十篇】方法引用

    【從零開始學習JAVA | 第三十篇】方法引用

    目錄 前言: 方法引用: 方法引用基本概念: 方法可以被引用的條件: 方法引用的種類: 方法引用的優(yōu)點: 總結(jié): 方法引用作為一個重要的知識點,雖然他使用起來很復(fù)雜,而且會降低代碼的可讀性,但是如果用好了方法引用,我們也會獲得不錯的效率,因此我們在今天

    2024年02月15日
    瀏覽(93)
  • 【從零開始學習JAVA | 第十八篇】接口介紹

    【從零開始學習JAVA | 第十八篇】接口介紹

    目錄 前言: 接口: 如何定義一個接口: 如何使用一個接口: 接口中成員的特點: 接口與類的區(qū)別:?? 接口的應(yīng)用: 總結(jié): ????????接口其實是為了彌補繼承的缺點: 我們無法讓父類完美的適應(yīng)每一個子類的要求 。 例如我們有一個動物類的父類,有一個蝌蚪類,魚

    2024年02月10日
    瀏覽(21)
  • 【從零開始學習JAVA | 第八篇】String類

    【從零開始學習JAVA | 第八篇】String類

    目錄 前言: String類: 常見的認識誤區(qū): 創(chuàng)建String類: ?注意點: 總結(jié): ? ? ? ? String類是Java中最常見的一個類,本篇將對Stirng類的各種功能進行詳細的介紹,各位小伙伴如果感興趣可以點擊進來觀看。 Java中的String類是一個非常常用的類, 它表示一串字符序列 。Java的字

    2024年02月10日
    瀏覽(25)
  • 【從零開始學習JAVA | 第二十五篇】泛型

    【從零開始學習JAVA | 第二十五篇】泛型

    目錄 前言: 泛型: 額外拓展: 總結(jié): ????????本文將詳細介紹之前我們在JAVA 中一直在講的泛型,各位感興趣的同學可以點擊進來觀看。 ????????泛型是一種編程概念, 它允許在定義類、接口或方法時使用類型參數(shù),這樣可以在使用時指定實際的類型。 通過使用泛

    2024年02月16日
    瀏覽(26)
  • 【從零開始學習JAVA | 第四十五篇】反射

    【從零開始學習JAVA | 第四十五篇】反射

    目錄 前言: ?反射: ?使用反射的步驟: 1.獲取階段: 2.使用階段: 反射的應(yīng)用場景: 使用反射的優(yōu)缺點: 總結(jié): Java中的反射是一項強大而靈活的功能,它允許程序在運行時 動態(tài)地獲取、操作和利用類的信息 。通過反射,我們可以在運行時檢查和修改類的屬性、調(diào)用類

    2024年02月13日
    瀏覽(92)
  • 手寫簡單的RPC

    手寫簡單的RPC

    RPC(Remote Procedure Call,遠程過程調(diào)用)是一種通過網(wǎng)絡(luò)從遠程計算機程序上請求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間攜帶信息數(shù)據(jù)。在OSI網(wǎng)絡(luò)通信模型中,RPC跨越了傳輸層和應(yīng)用層。RPC使得開發(fā)包括網(wǎng)絡(luò)分布

    2024年04月22日
    瀏覽(19)
  • 如何手寫一個RPC?

    如何手寫一個RPC?

    在學習 RPC 框架之前,我們先來手寫一個RPC。 我們在學習的過程中,一定要做到知其然,還要知其所以然。 單體架構(gòu) 要知道,在以前單體架構(gòu)的時候,會將所有的應(yīng)用功能都集中在一個服務(wù)當中。 單體架構(gòu)初始開發(fā)簡單,所有的功能都在一個項目中,容易理解整個應(yīng)用的業(yè)

    2024年01月17日
    瀏覽(19)
  • 手寫rpc和redis

    rpc框架搭建 consumer 消費者應(yīng)用 provider 提供的服務(wù) Provider-common 公共類模塊 rpc 架構(gòu) service-Registration 服務(wù)發(fā)現(xiàn) nacos nacos配置中心 load-balancing 負載均衡 redis-trench 手寫redis實現(xiàn)和鏈接 rpc框架核心代碼 相關(guān)的gitub倉庫地址:(https://github.com/zhaoyiwen-wuxian/RpcTrench.git) master分支,進行切

    2024年01月24日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包