精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一文詳細解讀 Dubbo 中的 Http 協議

網絡 網絡管理
說到 Dubbo 框架支持的協議,你的第一反應是什么?大概會有 Dubbo 默認支持的 dubbo 協議,以及老生常談的由當當貢獻給 Dubbo 的 rest 協議,或者是今天的主角 http。

太陽紅彤彤,花兒五顏六色,各位讀者朋友好,又來到了分享 Dubbo 知識點的時候了。說到 Dubbo 框架支持的協議,你的第一反應是什么?大概會有 Dubbo 默認支持的 dubbo 協議,以及老生常談的由當當貢獻給 Dubbo 的 rest 協議,或者是今天的主角 http。截止到目前,Dubbo 最新版本演進到了 2.7.3,已經支持了:dubbo,hessain,http,injvm,jsonrpc,memcached,native-thrift,thrift,redis,rest,rmi,webservice,xml 等協議,有些協議的使用方式還沒有補全到官方文檔中。原來 Dubbo 支持這么多協議,是不是有點出乎你的意料呢?

[[278760]]

 

這么多 RPC 協議,可能有人會產生如下的疑問:rest,jsonrpc,webservice 不都是依靠 http 通信嗎?為什么還單獨有一個 http 協議?先不急著回答這個問題,而是引出今天的話題,先來介紹下 Dubbo 框架中所謂的 http 協議。

Dubbo 中的 http 協議

在 Dubbo 使用 http 協議和其他協議基本一樣,只需要指定 protocol 即可。

  1. <dubbo:protocol name="http" port="8080" server="jetty" /> 

server 屬性可選值:jetty,tomcat,servlet。

配置過后,當服務消費者向服務提供者發起調用,底層便會使用標準的 http 協議進行通信。可以直接在 https://github.com/apache/dubbo-samples 中找到官方示例,其中的子模塊:dubbo-samples-http 構建了一個 http 協議調用的例子。

為避免大家誤解,特在此聲明:本文中,所有的 http 協議特指的是 dubbo 中的 http 協議,并非那個大家耳熟能詳的通用的 http 協議。

http 協議的底層原理

從默認的 dubbo 協議改為 http 協議是非常簡單的一件事,上面便是使用者視角所看到的全部的內容了,接下來我們將會探討其底層實現原理。

翻看 Dubbo 的源碼,找到 HttpProtocol 的實現,你可能會吃驚,基本就依靠 HttpProtocol 一個類,就實現了 http 協議

 

一文詳細解讀 Dubbo 中的 http 協議

 

要知道實現自定義的 dubbo 協議,有近 30 個類!http 協議實現的如此簡單,背后主要原因有兩點:

  • remoting 層使用 http 通信,不需要自定義編解碼
  • 借助了 Spring 提供的 HttpInvoker 封裝了 refer 和 exporter 的邏輯

Spring 提供的 HttpInvoker 是何方神圣呢?的確是一個比較生僻的概念,但并不復雜,簡單來說,就是使用 Java 序列化將對象轉換成字節,通過 http 發送出去,在 server 端,Spring 能根據 Url 映射,找到容器中對應的 Bean 反射調用的過程,沒見識過它也不要緊,可以通過下面的示例快速掌握這一概念。

 

Spring HttpInvoker

本節內容可參見 Spring 文檔:https://docs.spring.io/spring/docs/4.3.24.RELEASE/spring-framework-reference/htmlsingle/#remoting-httpinvoker-server

下面的示例將會展示如何使用 Spring 原生的 HttpInvoker 實現遠程調用。

創建服務提供者

  1. public class AccountServiceImpl implements AccountService { 
  2.  @Override 
  3.  public Account findById(int id) { 
  4.  Account account = new Account(id, new Date().toString()); 
  5.  return account; 
  6.  } 
  7. @Bean 
  8. AccountService accountService(){ 
  9.  return new AccountServiceImpl(); 
  10. @Bean("/AccountService"
  11. public HttpInvokerServiceExporter accountServiceExporter(AccountService accountService){ 
  12.  HttpInvokerServiceExporter exporter = new HttpInvokerServiceExporter(); 
  13.  exporter.setService(accountService); 
  14.  exporter.setServiceInterface(AccountService.class); 
  15.  return exporter; 

暴露服務的代碼相當簡單,需要注意兩點:

  1. org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter 是 Spring 封裝的一個服務暴露器,它會以 serviceInterface 為公共接口,以 service 為實現類向外提供服務。
  2. @Bean("/AccountService") 不僅僅指定了 IOC 容器中 bean 的名字,還充當了路徑映射的功能,如果本地服務器暴露在 8080 端口,則示例服務的訪問路徑為http://localhost:8080/AccountService

創建服務消費者

  1. @Configuration 
  2. public class HttpProxyConfig { 
  3.  @Bean("accountServiceProxy"
  4.  public HttpInvokerProxyFactoryBean accountServiceProxy(){ 
  5.  HttpInvokerProxyFactoryBean accountService = new HttpInvokerProxyFactoryBean(); 
  6.  accountService.setServiceInterface(AccountService.class); 
  7.  accountService.setServiceUrl("http://localhost:8080/AccountService"); 
  8.  return accountService; 
  9.  } 
  10. @SpringBootApplication 
  11. public class HttpClientApp { 
  12.  public static void main(String[] args) { 
  13.  ConfigurableApplicationContext applicationContext = SpringApplication.run(HttpClientApp.class, args); 
  14.  AccountService accountService = applicationContext.getBean(AccountService.class); 
  15.  System.out.println(accountService.findById(10086)); 
  16.  } 

消費者端引用服務同樣有兩個注意點:

  1. org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean 是 Spring 封裝的一個服務引用器,serviceInterface 指定了生成代理的接口,serviceUrl 指定了服務所在的地址,與之前配置的服務暴露者的路徑需要對應。
  2. HttpInvokerProxyFactoryBean 注冊到容器之中時,會同時生成一個 AccountService 接口的代理類,由 Spring 封裝遠程調用的邏輯。

調用細節分析

對于 Spring HttpInvoker 的底層實現,就沒必要深究了,但大家肯定還是會好奇一些細節:dubbo 中的 http 報文體是怎么組織的?如何序列化對象的?

我們使用 Wireshark 可以抓取到客戶端發送的請求以及服務端響應的報文。

 

一文詳細解讀 Dubbo 中的 http 協議

 

追蹤報文流,可以看到詳細的請求和響應內容

 

一文詳細解讀 Dubbo 中的 http 協議

 

從 ContentType:application/x-java-serialized-object 和報文 Body 部分的 ASCII 碼可以看出,使用的是 Java Serialize 序列化。我們將 Body 部分導出成文件,使用 Java Serialize 反序列化響應,來驗證一下它的廬山真面目:

 

一文詳細解讀 Dubbo 中的 http 協議

 

使用 Java Serialize 可以正常反序列化報文,得到結果是 Spring 內置的包裝類 RemoteInvocationResult,里面裝飾著實際的業務返回結果。

http 協議的意義

Dubbo 提供的眾多協議有各自適用的場景,例如

  • dubbo://,dubbo 協議是默認的協議,自定義二進制協議;單個長連接節省資源;基于 tcp,架構于 netty 之上,性能還算可以;協議設計上沒有足夠的前瞻性,不適合做 service-mesh 談不上多么優雅,但是好歹風風雨雨用了這么多年,周邊也有不少配套組件例如 dubbo2.js, dubbo-go, dubbo-cpp,一定程度解決了多語言的問題。
  • webservice://,hession://,thrift:// 等協議,基本是為了適配已有協議的服務端/客戶端,借助于 dubbo 框架的 api,可以使用其功能特性,意義不是特別大。
  • redis://,memcached:// 等協議,并非是暴露給用戶配置的協議,一般是 dubbo 自用,在注冊中心模塊中會使用到相應的擴展

所有協議的具體使用場景和其特性,我可能會單獨寫文章來分析,而如今我們要思考的是 Dubbo 提供 http 協議到底解決什么問題,什么場景下用戶會考慮使用 Dubbo 的 http 協議。

我個人認為 Dubbo 現如今的 http 協議比較雞肋,原生 http 通信的優勢在于其通用性,基本所有語言都有配套的 http 客戶端和服務端支持,但是 Dubbo 的 http 協議卻使用了 application/x-java-serialized-object 的格式來做為默認的 payload,使得其喪失了跨語言的優勢。可能有讀者會反駁:HttpInvoker 支持配置序列化格式,不能這么草率的詬病它。但其實我們所關注的恰恰是默認實現,正如 dubbo:// 協議也可以配置 fastjson 作為序列化方案,但是我們同樣不認為 dubbo:// 協議是一個優秀的跨語言方案,理由是一樣的。當然,評價一個應用層協議是否是優秀的,是否適合做 mesh 等等,需要多種方向去分析,這些我不在本文去分析。

說到底,本文花了一定的篇幅向大家介紹了 Dubbo 的 http 協議,到頭來卻是想告訴你:這是一個比較雞肋的協議,是不是有些失望呢?不要失望,dubbo 可能在 2.7.4 版本廢棄現有的 http 協議,轉而使用 jsonrpc 協議替代,其實也就是將 jsonrpc 協議換了個名字而已,而關于 jsonrpc 的細節,我將會在下一篇文章中介紹,屆時,我也會分析,為什么 jsonrpc 比現有的 http 協議更適合戴上 http 協議的帽子,至于現有的 http 協議,我更傾向于稱之為:spring-httpinvoker 協議。

 

總結

dubbo 現有 http 協議的意義是什么?如果你習慣于使用 Spring HttpInvoker,那或許現有的 http 協議還有一定的用處,但從 Dubbo 交流群和 Spring 文檔介紹其所花費的篇幅來看,它還是非常小眾的。同時也可以讓我們更好地認識協議發展的歷史,知道一個協議為什么存在,為什么會被淘汰。

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2019-11-25 11:04:22

Http協議Dubbo

2022-06-20 09:09:26

IDaaSIAM身份即服務

2021-05-07 09:17:21

HTTPTCP協議

2022-05-11 11:54:55

Http傳送協議

2021-09-02 10:24:54

JavaScript前端語言

2019-05-14 10:50:11

HTTP協議HttpServlet

2024-12-23 14:46:24

2021-09-09 10:26:26

Javascript 文檔對象前端

2022-02-25 07:34:36

MQTT協議RabbitMQ

2020-03-08 21:22:03

HTTP112

2021-10-11 10:19:48

Javascript 高階函數前端

2017-05-04 20:29:12

HTTP服務器TCP

2025-01-10 08:42:27

分布式服務發布Dubbo

2023-08-26 20:56:02

滑動窗口協議

2022-02-24 07:34:10

SSL協議加密

2022-05-16 10:49:28

網絡協議數據

2021-04-27 05:53:50

6G 衛星通信6G 通信產業

2020-02-02 15:14:24

HTTP黑科技前端

2022-08-29 07:31:48

HashMap線程擴容

2023-01-09 08:14:08

GoHttpServer
點贊
收藏

51CTO技術棧公眾號

国产欧美日本| 亚洲男女网站| 久久久久99精品国产片| 国产精品色婷婷视频| 熟女av一区二区| 丁香一区二区| 欧美日韩国产综合视频在线观看| 国产精品99久久久久久大便| 日韩一卡二卡在线| 麻豆久久久久久久| 97成人精品区在线播放| 亚欧精品视频一区二区三区| jizz性欧美2| 欧美日韩视频在线观看一区二区三区| 成人国产一区二区三区| 大胆av不用播放器在线播放| 高清不卡在线观看| 国产啪精品视频| 91精品国产乱码久久久张津瑜| 97精品国产一区二区三区 | 一区二区不卡视频在线观看| 黄色亚洲大片免费在线观看| 色偷偷av一区二区三区| 国产激情第一页| 国产欧美88| 欧美在线免费观看亚洲| r级无码视频在线观看| 秋霞午夜在线观看| 久久综合999| 国产精品高清一区二区三区| 国产精品热久久| 视频在线观看91| 性欧美激情精品| 中文字幕手机在线观看| 日本黄色精品| 亚洲欧美另类在线观看| av地址在线观看| 2020国产精品小视频| 一本久道久久综合中文字幕| 欧美视频免费看欧美视频| av在线free| 国产精品乱子久久久久| 欧美一区二区视频在线| 污污网站在线免费观看| 丁香激情综合五月| 成人高清在线观看| 国产色视频在线| 国产在线视视频有精品| 国产中文字幕日韩| 91theporn国产在线观看| 日韩成人一级大片| 欧美亚洲国产另类| 日韩色图在线观看| 久久精品免费| 国产成人鲁鲁免费视频a| 亚洲精品中文字幕乱码三区91| 国产欧美日韩综合一区在线播放 | 中文字幕一精品亚洲无线一区| 国产又粗又猛又爽视频| 不卡一区2区| 爽爽爽爽爽爽爽成人免费观看| 精品欧美一区二区久久久| 国产videos久久| 亚洲最新av在线网站| 五月天精品在线| 999精品一区| 欧美精品生活片| 国产无套粉嫩白浆内谢| 亚洲精品乱码| 国产成人精品免高潮在线观看| 中文字幕在线观看精品| 激情综合一区二区三区| 99视频免费观看蜜桃视频| 日本黄视频在线观看| 91浏览器在线视频| 日本一区二区三区精品视频| 在线观看免费网站黄| 亚洲男人的天堂av| 可以在线看的av网站| 成人免费看视频网站| 欧美这里有精品| 中文字幕人妻熟女人妻a片| 给我免费播放日韩视频| 亚洲免费视频观看| 亚洲不卡的av| 韩日在线一区| 国产成人综合一区二区三区| 国产永久免费视频| 成人av资源站| 五月天色一区| 欧美亚洲天堂| 在线看日韩精品电影| 国产在线观看中文字幕| 欧美人妖视频| 久久视频免费在线播放| 日韩乱码一区二区| 美女视频黄 久久| 国产精品亚洲综合| www免费网站在线观看| 一区二区三区精品视频| 成人久久久久久久久| 精品国产一区二区三区2021| 亚洲欧美日韩天堂| 久草成人在线视频| 免费视频最近日韩| 国产一级二级三级精品| 四虎久久免费| 日韩欧美在线看| 宇都宫紫苑在线播放| 国产麻豆精品久久| 欧美国产日韩精品| 在线观看国产一区二区三区| fc2成人免费人成在线观看播放| 亚洲精品国产一区| 亚洲人成在线网站| 精品国产sm最大网站| 国产一区第一页| 美女诱惑一区| 国产女人水真多18毛片18精品| 免费在线看v| 午夜视频一区在线观看| 亚洲av毛片在线观看| 精品久久成人| 国产91|九色| 深爱五月激情五月| 亚洲美女淫视频| 亚洲免费成人在线视频| 成人影院天天5g天天爽无毒影院| 清纯唯美亚洲激情| 色中色在线视频| 亚洲午夜电影网| 在线观看免费看片| 婷婷综合社区| 成人激情视频在线播放| 在线中文资源天堂| 在线观看免费视频综合| 波多野结衣av在线免费观看| 1024日韩| 国产精品对白刺激久久久| 午夜激情在线| 欧美一级高清大全免费观看| 久久久久久久麻豆| 久久99精品久久久| 一区二区三区我不卡| 免费在线成人激情电影| 色综合亚洲精品激情狠狠| 波多野结衣绝顶大高潮| 欧美国产日本韩| 五月婷婷之综合激情| 青青一区二区三区| 国产精品亚洲精品| 欧美日韩视频在线播放| 91精品国产综合久久久久| 日本精品在线免费观看| 国产综合久久久久影院| 国产又粗又大又爽的视频| 精品中文字幕一区二区三区四区 | 午夜影院在线播放| 亚洲精品视频中文字幕| 手机看片久久久| 久久精品一区二区三区av | 国产成人午夜片在线观看高清观看| 视色,视色影院,视色影库,视色网| 欧美午夜在线播放| 国模私拍一区二区三区| 天堂av在线资源| 色8久久精品久久久久久蜜| 性猛交娇小69hd| 美女视频黄久久| 免费的一级黄色片| 久久香蕉精品香蕉| 国产成一区二区| 国产精品剧情一区二区在线观看| 日韩欧美资源站| 日韩在线视频免费播放| 欧美高清在线视频| 欧美色图校园春色| 亚洲中字在线| 一区二区91美女张开腿让人桶| 综合伊人久久| 日本一区二区不卡| 大片免费在线看视频| 亚洲成人av片| 自拍偷拍精品视频| 亚洲一区二区三区精品在线| 无码人妻精品一区二区中文| 国产在线精品一区二区三区不卡| 久久国产精品网| 成人6969www免费视频| 成人区精品一区二区| 午夜精品成人av| 欧美猛少妇色xxxxx| 欧美性孕妇孕交| 91精品国产高清一区二区三区蜜臀| 日韩三级小视频| 国产精品国产自产拍在线| 中文字幕在线观看91| 日本不卡视频一二三区| www.男人天堂网| 第一sis亚洲原创| 国产在线一区二| 欧美xxxx网站| 91精品国产色综合| 免费黄色在线| 精品一区二区三区电影| 91肉色超薄丝袜脚交一区二区| 天天综合色天天综合色h| 日本激情视频一区二区三区| 99麻豆久久久国产精品免费| 国内av免费观看| 青青草国产成人99久久| 欧美成人一区二区在线观看| 欧美一区91| 亚洲电影一二三区| 神马久久影院| 国产精品亚洲综合| 97久久中文字幕| 国产精品久久久久高潮| 筱崎爱全乳无删减在线观看 | 亚洲精品一区二区三区精华液 | 成人国产精品免费观看视频| 午夜剧场在线免费观看| 可以免费看不卡的av网站| 日韩精品视频在线观看视频| 国产精品99久久精品| 欧洲亚洲一区| 日韩欧美在线精品| 国产区一区二区三区| 麻豆一二三区精品蜜桃| 国产日韩在线看片| 成人国产综合| 国产成人小视频在线观看| 九色porny丨入口在线| 欧美激情国产日韩精品一区18| 米奇精品一区二区三区| 国产一区二区三区在线免费观看| 欧美高清电影在线| 日韩精品在线观看视频| 午夜视频在线播放| 亚洲高清久久网| 日日夜夜精品免费| 亚洲精品第一页| 色婷婷激情五月| 欧美成人综合网站| 亚洲av永久无码国产精品久久| 91精品国产乱| 成人av免费播放| 日韩三级在线免费观看| 国内精品久久久久久久久久久| 欧美一区二区三级| av中文字幕播放| 欧美xingq一区二区| 亚洲爱爱综合网| 精品成人在线观看| 五月婷婷六月丁香| 日韩精品中文在线观看| 国产三级在线| 最近日韩中文字幕中文| 香蕉视频网站在线观看| 欧美成人第一页| av不卡高清| 97高清免费视频| 亚洲www免费| 成人国产精品日本在线| 日韩一二三区在线观看| 国产精品美女久久久久av福利| 国产欧美自拍一区| 明星裸体视频一区二区| 成人vr资源| 日本免费在线视频观看| 尹人成人综合网| 人妻有码中文字幕| 麻豆精品一区二区三区| 999热精品视频| 99久久免费国产| 欧美熟妇激情一区二区三区| 国产精品久久99| 国产一区二区三区视频在线观看 | 清纯唯美激情亚洲| 国产欧美日韩伦理| 美女少妇全过程你懂的久久| 亚洲国产精品久久久久婷婷老年| 91精品综合| 91猫先生在线| 久久电影国产免费久久电影| 台湾佬美性中文| 国产三级精品三级| 欧洲第一无人区观看| 午夜精品久久久久久不卡8050| 国产又粗又猛又爽又| 3d成人h动漫网站入口| 天堂在线视频免费观看| 中文字幕精品—区二区| heyzo中文字幕在线| 国产精品久久久久久久午夜| 三级欧美日韩| 青娱乐国产91| 国产主播一区| 69久久久久久| 99精品国产99久久久久久白柏 | 午夜不卡av免费| 夜夜爽8888| 精品亚洲国产视频| 在线观看电影av| 国产精品久久91| 卡通动漫国产精品| 日本免费在线视频观看| 视频在线观看一区二区三区| 国产a√精品区二区三区四区| 中文一区在线播放| 成人毛片18女人毛片| 欧美一级黄色大片| 日本高清中文字幕在线| 日韩美女视频免费在线观看| 国产精品22p| 在线观看污视频| 麻豆精品在线视频| 国产精品20p| 欧美性生交大片免网| 精品区在线观看| 中文字幕欧美日韩精品| 中文字幕在线看片| 国精产品一区二区| 午夜精品999| 日本一二三四区视频| 中文字幕在线观看不卡| 草莓视频18免费观看| 亚洲国产精品国自产拍av秋霞| 影音先锋中文在线视频| 国产在线高清精品| 清纯唯美日韩| 手机在线免费观看毛片| 国产日韩欧美一区二区三区乱码| 欧美日韩乱国产| 日韩av在线天堂网| 三级中文字幕在线观看| 精品国产一二| 9色国产精品| 草草地址线路①屁屁影院成人| 午夜精品久久久久久不卡8050| 女人18毛片一区二区三区| 欧美劲爆第一页| 9999久久久久| 91动漫在线看| 波多野结衣中文一区| 久久婷婷一区二区| 亚洲精品一区二区三区香蕉| √8天堂资源地址中文在线| 国产98在线|日韩| 樱桃成人精品视频在线播放| 中文在线字幕观看| 亚洲午夜久久久久久久久电影网| 丁香六月天婷婷| 久久久日本电影| 人人网欧美视频| 成年人视频在线免费| 国产午夜三级一区二区三| 中文字幕在线观看视频一区| 久久久999成人| 51vv免费精品视频一区二区| 99国产精品白浆在线观看免费| 粉嫩久久99精品久久久久久夜| 国产精品suv一区二区69| 精品一区二区三区四区在线| 日本成人福利| 一区二区三区四区免费观看| 国产91精品精华液一区二区三区| 国产精品第56页| 亚洲日韩中文字幕| 青青伊人久久| 黄色一级片黄色| www欧美成人18+| 亚洲一区二区影视| 欧美成人高清视频| 老司机成人在线| 久久久精品麻豆| 亚洲精选免费视频| 天天操天天干天天干| 国产精品久久网| 欧美成人国产| xxxx日本免费| 欧美一级视频精品观看| 密臀av在线播放| 在线观看一区二区三区三州| 国产黄色精品视频| 无码人妻精品一区二区三区蜜桃91| 色狠狠av一区二区三区香蕉蜜桃| 日韩亚洲精品在线观看| 麻豆传传媒久久久爱| 一区二区三区四区精品在线视频| 欧美日韩免费做爰大片| 亚洲va码欧洲m码| 丝袜脚交一区二区| 免费视频一二三区| 一区二区三区高清国产| 盗摄系列偷拍视频精品tp| 依人在线免费视频| 精品国产31久久久久久| a在线免费观看| 亚洲韩国在线|