<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

      隨著公司規(guī)模的不斷擴(kuò)大,以及業(yè)務(wù)量的激增,單體應(yīng)用逐步演化為服務(wù)/微服務(wù)的架構(gòu)模式, 服務(wù)之間的調(diào)用大多采用rpc的方式調(diào)用,或者消息隊(duì)列的方式進(jìn)行解耦。幾乎每個(gè)大廠都會(huì)創(chuàng)建自己的rpc框架,或者基于知名的rpc框架進(jìn)行改造因此今天我們來(lái)講講rpc吧。

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      ?RPC概述

      RPC(Remote Procedure Call)即遠(yuǎn)程過程調(diào)用,也就是說(shuō)兩臺(tái)服務(wù)器A,B,一個(gè)應(yīng)用部署在A服務(wù)器上,想要調(diào)用B服務(wù)器上應(yīng)用提供的函數(shù)/方法,由于不在一個(gè)內(nèi)存空間,不能直接調(diào)用,需要通過網(wǎng)絡(luò)來(lái)表達(dá)調(diào)用的語(yǔ)義和傳達(dá)調(diào)用的數(shù)據(jù)。

      RPC框架原理

      在RPC框架中主要有三個(gè)角色:Provider、Consumer和Registry。如下圖所示:

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      節(jié)點(diǎn)角色說(shuō)明:

      * Server: 暴露服務(wù)的服務(wù)提供方。

      * Client: 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。

      * Registry: 服務(wù)注冊(cè)與發(fā)現(xiàn)的注冊(cè)中心。

      RPC調(diào)用流程

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      1.調(diào)用客戶端句柄;執(zhí)行傳送參數(shù)

      2.調(diào)用本地系統(tǒng)內(nèi)核發(fā)送網(wǎng)絡(luò)消息

      3.消息傳送到遠(yuǎn)程主機(jī)

      4.服務(wù)器句柄得到消息并取得參數(shù)

      5.執(zhí)行遠(yuǎn)程過程

      6.執(zhí)行的過程將結(jié)果返回服務(wù)器句柄

      7.服務(wù)器句柄返回結(jié)果,調(diào)用遠(yuǎn)程系統(tǒng)內(nèi)核

      8.消息傳回本地主機(jī)

      9.客戶句柄由內(nèi)核接收消息

      10.客戶接收句柄返回的數(shù)據(jù)

      服務(wù)注冊(cè)&發(fā)現(xiàn)

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      服務(wù)提供者啟動(dòng)后主動(dòng)向注冊(cè)中心注冊(cè)機(jī)器ip、port以及提供的服務(wù)列表;

      服務(wù)消費(fèi)者啟動(dòng)時(shí)向注冊(cè)中心獲取服務(wù)提供方地址列表,可實(shí)現(xiàn)軟負(fù)載均衡和Failover;

      使用到的技術(shù)

      1、動(dòng)態(tài)代理

      生成 client stub和server stub需要用到 Java 動(dòng)態(tài)代理技術(shù) ,我們可以使用JDK原生的動(dòng)態(tài)代理機(jī)制,可以使用一些開源字節(jié)碼工具框架 如:CgLib、Javassist等。

      2、序列化

      為了能在網(wǎng)絡(luò)上傳輸和接收 Java對(duì)象,我們需要對(duì)它進(jìn)行 序列化和反序列化操作。

      * 序列化:將Java對(duì)象轉(zhuǎn)換成byte[]的過程,也就是編碼的過程;

      * 反序列化:將byte[]轉(zhuǎn)換成Java對(duì)象的過程;

      可以使用Java原生的序列化機(jī)制,但是效率非常低,推薦使用一些開源的、成熟的序列化技術(shù),例如:protobuf、Thrift、hessian、Kryo、Msgpack

      關(guān)于序列化工具性能比較可以參考:jvm-serializers

      3、NIO

      當(dāng)前很多RPC框架都直接基于netty這一IO通信框架,比如阿里巴巴的HSF、dubbo,Hadoop Avro,推薦使用Netty 作為底層通信框架。

      4、服務(wù)注冊(cè)中心

      可選技術(shù):

      * Redis

      * Zookeeper

      * Consul

      * Etcd

      JAVA中幾種常用的RPC框架介紹

      Java中的RPC框架比較多,各有特色,廣泛使用的有RMI、Hessian、Dubbo等。

      RPC還有一個(gè)特點(diǎn)就是能夠跨語(yǔ)言,本文只以JAVA語(yǔ)言里的RPC為例。

      RMI(遠(yuǎn)程方法調(diào)用)

      JAVA自帶的遠(yuǎn)程方法調(diào)用工具,不過有一定的局限性,畢竟是JAVA語(yǔ)言最開始時(shí)的設(shè)計(jì),后來(lái)很多框架的原理都基于RMI,RMI的使用如下:

      對(duì)外接口

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      服務(wù)實(shí)現(xiàn)

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      RMI客戶端

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      五分鐘快速掌握RPC原理及實(shí)現(xiàn)

       

      開源的優(yōu)秀RPC框架

      • 阿里巴巴 Dubbo:https://github.com/alibaba/dubbo
      • 新浪微博 Motan:https://github.com/weibocom/motan
      • gRPC:https://github.com/grpc/grpc
      • rpcx :https://github.com/smallnest/rpcx
      • Apache Thrift :https://thrift.apache.org/
      posted @ 2018-11-03 14:07  Twinhead  閱讀(654)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 风韵丰满熟妇啪啪区老熟熟女| 久久人人97超碰精品| 无码囯产精品一区二区免费| 午夜精品一区二区三区成人| 亚洲综合av一区二区三区| 高潮毛片无遮挡高清视频播放| 沙河市| 中文字幕国产日韩精品| 在线国产精品中文字幕| 四虎成人在线观看免费| 亚洲综合色婷婷中文字幕| 2019国产精品青青草原| 99久久免费只有精品国产| 阿瓦提县| 少妇人妻偷人精品无码视频新浪| 亚洲色成人一区二区三区| 久久人人97超碰精品| 久久综合激情网| 久久亚洲av成人一二三区| 青青草一区在线观看视频| 中文字幕理伦午夜福利片| 国产欧美精品一区aⅴ影院| 717午夜伦伦电影理论片| 4hu亚洲人成人无码网www电影首页| 国产成人综合亚洲第一区| 国产不卡在线一区二区| 日本一卡2卡3卡四卡精品网站| 免费国产拍久久受拍久久| 久久精品人妻少妇一区二| 久久99精品国产99久久6尤物| 在线观看无码av五月花| 久久狠狠高潮亚洲精品夜色| 久久亚洲精品人成综合网| 国产偷自视频区视频| 国产免费午夜福利片在线| 午夜男女爽爽影院免费视频下载| 少妇人妻偷人精品免费| 中文字幕人妻无码一区二区三区| 麻豆果冻国产剧情av在线播放| 中文字幕理伦午夜福利片| 久久久精品94久久精品|