精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩国产网站| 色一情一乱一区二区三区| 欧美好骚综合网| 日韩精品一区在线| 男女猛烈激情xx00免费视频| 九色视频在线播放| 国产乱子轮精品视频| 午夜精品视频网站| 亚洲aaa视频| 高潮按摩久久久久久av免费| 91黄色小视频| 久久这里只有精品18| 蜜桃免费在线| 国产精品一级片| 日本a级片电影一区二区| 国产乱子轮xxx农村| 国产精品欧美大片| 欧美精品在线观看一区二区| 精品丰满人妻无套内射| yw193.com尤物在线| 国产91露脸合集magnet| 国产精品美女午夜av| 国产精品白浆一区二小说| 成人激情视频| 日韩经典中文字幕| 青青草精品在线| 国产精品字幕| 精品久久久精品| 免费极品av一视觉盛宴| 男人的天堂在线| 国产成人av一区二区三区在线| 国产精品久久久| 国产黄色片免费看| 黄色欧美成人| 欧美成在线观看| youjizz亚洲女人| 日韩三级毛片| 欧美精品一区二区精品网| 亚洲精品综合在线观看| a欧美人片人妖| 五月婷婷综合激情| 成人一级生活片| 黄色网页在线免费观看| 国产精品久久久久久久蜜臀| 欧美成熟毛茸茸复古| 高潮毛片7777777毛片| 国产在线观看一区二区| 国产女精品视频网站免费| 免费看日批视频| 国产一区白浆| 69视频在线播放| 亚洲免费激情视频| 亚洲精品美女91| 欧美激情一区二区三区在线视频观看 | 最新国产拍偷乱拍精品 | 国产美女福利视频| 日韩欧美伦理| 中文字幕日韩有码| youjizz亚洲女人| 成人高清电影网站| 色婷婷成人综合| 久久久久久久麻豆| 亚洲综合五月| 欧美激情视频三区| 久久久久噜噜噜亚洲熟女综合| 一区二区国产在线| 欧美巨猛xxxx猛交黑人97人| 精国产品一区二区三区a片| 欧美国产免费| 国内精久久久久久久久久人| 日韩毛片在线视频| 国产农村妇女精品一二区| 欧美一区三区三区高中清蜜桃| 国产一级片毛片| 天堂久久一区二区三区| 国产精品亚洲第一区| 中文字幕自拍偷拍| 国产精品自拍毛片| 国产另类第一区| 深夜福利视频一区| 国产日韩三级在线| 中国人体摄影一区二区三区| a毛片在线观看| 亚洲地区一二三色| 国产成人精品无码播放| 性欧美video另类hd尤物| 日韩一级欧美一级| 欧美无人区码suv| 日产精品一区二区| 欧美日本亚洲视频| 天码人妻一区二区三区在线看| 奇米色一区二区| 999国产视频| 欧美日韩伦理片| 中文字幕一区二区三中文字幕 | 一区二区三区四区五区在线| 国产成人精品日本亚洲专区61| 一级片在线观看视频| 成人晚上爱看视频| 日韩欧美一区二区视频在线播放| 黄色大片在线播放| 欧美日韩国产综合新一区| 久久久久久久久久久久91| 日韩在线视频一区二区三区| 亚洲男人天堂网站| 久久久久99精品成人片试看| 亚洲一区二区伦理| 亚洲bt天天射| 国产专区在线| 亚洲一区二区三区四区在线免费观看 | 亚洲91av| 欧美三片在线视频观看| 秘密基地免费观看完整版中文| 成人av国产| 777国产偷窥盗摄精品视频| 国产精品视频无码| 国产午夜精品在线观看| 日韩精品一区二区免费| 激情小说亚洲| 日韩精品免费在线视频观看| 国产高清在线免费观看| 蜜臀va亚洲va欧美va天堂| 国产欧美一区二区三区另类精品| 欧美边添边摸边做边爱免费| 欧美日韩一二三四五区| 91成人在线观看喷潮蘑菇| 波多野结衣的一区二区三区| 2019中文在线观看| 丰满人妻av一区二区三区| 综合亚洲深深色噜噜狠狠网站| 日本三级免费观看| 欧美18免费视频| 久久久久久美女| 精品国产va久久久久久久| 中文字幕第一区二区| 国产精品人人妻人人爽人人牛| 国产三级精品三级在线观看国产| 九九热这里只有精品6| ,亚洲人成毛片在线播放| 国产香蕉久久精品综合网| 欧美亚洲精品一区二区| 国产精品欧美大片| 久久久久免费精品国产| 成 人 免费 黄 色| 亚洲美腿欧美偷拍| 天堂在线精品视频| 亚洲综合小说| 成人自拍偷拍| 丰乳肥臀在线| 亚洲的天堂在线中文字幕| 久久精品免费在线| 成人av在线电影| 国产欧美日韩网站| 久久aimee| 奇米4444一区二区三区| 女人偷人在线视频| 在线一区二区观看| 欧美色图17p| 久久97超碰国产精品超碰| av不卡在线免费观看| 麻豆一区在线| 欧美黄色三级网站| 十八禁一区二区三区| 欧美性xxxx在线播放| 一女三黑人理论片在线 | www.欧美日本| av伊人久久| 国产免费一区二区三区在线观看| 日韩伦理在线观看| 91精品国产麻豆国产自产在线| 色欲人妻综合网| 粉嫩一区二区三区在线看| 日韩视频在线视频| 亚洲+变态+欧美+另类+精品| 全亚洲最色的网站在线观看| 北条麻妃在线| 日韩亚洲欧美中文三级| 九九免费精品视频| 99久久精品免费看国产| av免费中文字幕| 成人在线视频免费观看| 5g国产欧美日韩视频| 丁香花在线电影| 国产丝袜高跟一区| 真实新婚偷拍xxxxx| 综合婷婷亚洲小说| 中文文字幕文字幕高清| 男男成人高潮片免费网站| 黄色高清视频网站| 久久大胆人体视频| 国产精品美女免费看| 深夜国产在线播放| 亚洲欧美制服第一页| 国产精品探花视频| 午夜不卡av免费| 天堂网中文在线观看| 国产aⅴ综合色| 99免费视频观看| 影音先锋日韩精品| 欧美精品国产精品久久久 | 小泽玛利亚一区二区免费| 丁香婷婷综合色啪| 色综合天天色综合| 一区二区自拍| 一级日韩一区在线观看| 欧美成人基地| 成人国产精品一区二区| 激情国产在线| 欧美精品一区二区免费| 成年人视频网站在线| 亚洲成人网在线| 中文字字幕在线观看| 精品久久久久久久久久久久久久| www.4hu95.com四虎| 成人福利电影精品一区二区在线观看| 少妇一级淫免费放| 亚洲影院在线| 欧美极品少妇无套实战| 欧美电影《睫毛膏》| 美女被啪啪一区二区| 亚洲一区二区三区中文字幕在线观看| 国产精品久久久久久搜索| av老司机在线观看| 久久成人一区二区| 在线毛片网站| 亚洲天堂av女优| 五月婷在线视频| 日韩精品一区二区三区视频播放 | 男人最爱成人网| 久久久久久久国产精品| a级片国产精品自在拍在线播放| 国产亚洲精品久久久| 亚洲欧美丝袜中文综合| 欧美刺激午夜性久久久久久久| 一区二区视频播放| 色国产精品一区在线观看| 国产成人自拍视频在线| 一区二区三区不卡视频| 午夜成人亚洲理伦片在线观看| 久久免费偷拍视频| 手机在线成人av| 成人在线视频首页| 色综合久久五月| 国产91精品一区二区麻豆网站| www.午夜av| 激情五月激情综合网| 久久国产这里只有精品| 日韩av一区二| 色综合天天色综合| 毛片av中文字幕一区二区| 亚洲中文字幕久久精品无码喷水| 亚洲神马久久| 女性女同性aⅴ免费观女性恋| 亚洲激情影院| 免费在线a视频| 性欧美长视频| 成人黄色一区二区| 美国欧美日韩国产在线播放| 我要看一级黄色大片| 麻豆精品一区二区av白丝在线| 亚洲xxxx2d动漫1| 久热成人在线视频| 国产黄色一区二区三区| 豆国产96在线|亚洲| 亚洲观看黄色网| 久久综合资源网| 国产人妻大战黑人20p| 国产精品久久久久天堂| 农村妇女精品一区二区| 亚洲一区二区三区四区的| 日韩精品一区三区| 色婷婷久久99综合精品jk白丝 | 日韩亚洲欧美综合| 成人免费公开视频| 亚洲精品一区二区网址| 国产黄在线观看免费观看不卡| 最新中文字幕亚洲| 直接在线观看的三级网址| 国语自产精品视频在线看| 色多多在线观看| 国产伦精品免费视频| 久久av偷拍| 精品欧美国产一区二区三区不卡| 夜色77av精品影院| 一级日韩一区在线观看| 亚洲婷婷在线| 中文字幕一区二区三区四区在线视频| 久久99精品久久久久久| 一级少妇精品久久久久久久| 久久综合丝袜日本网| 91人妻一区二区三区蜜臀| 五月激情六月综合| 中文字幕第一页在线播放| 日韩免费视频线观看| 欧美18xxxxx| 欧美高清无遮挡| 麻豆精品蜜桃| 国产aⅴ精品一区二区三区黄| 蜜桃一区二区三区| 日韩中文在线字幕| 久久中文欧美| 蜜桃视频无码区在线观看| 久久久久久久久99精品| 亚洲天堂黄色片| 欧美午夜在线一二页| 超碰在线观看av| 在线成人激情视频| yellow字幕网在线| 亚洲free性xxxx护士白浆| 亚洲区小说区| avav在线播放| 老司机免费视频一区二区三区| 国产精品成人99一区无码| 国产精品灌醉下药二区| 中文字幕亚洲精品一区| 91精品久久久久久蜜臀| 美女欧美视频在线观看免费| 欧美日韩高清在线观看| 国产亚洲欧美日韩精品一区二区三区 | 久久九九国产视频| 成人免费毛片高清视频| 亚洲天堂精品一区| 欧美在线免费观看亚洲| 熟妇人妻一区二区三区四区| 美日韩在线视频| 国产黄色精品| 三区精品视频| 久久久精品网| 亚洲永久无码7777kkk| 亚洲一区二区视频| 99热这里只有精| 日韩中文字幕在线视频| 欧美性理论片在线观看片免费| 国产精品久久久久久久小唯西川| 91免费精品| 成人性生交免费看| 国产日韩欧美不卡在线| www五月天com| 日韩精品免费在线视频观看| 国产后进白嫩翘臀在线观看视频 | 国产不卡av在线播放| 日韩在线激情视频| 99欧美精品| 午夜精品短视频| 美国毛片一区二区| 国产一二三av| 欧美日韩国产另类一区| 香蕉视频免费在线播放| 国产精品一区av| 久久精品国产www456c0m| 在线观看免费污视频| 国产精品少妇自拍| 91麻豆国产在线| 精品国产一区久久久| 亚洲国产综合在线观看| 婷婷视频在线播放| 国产成人av福利| 精品深夜av无码一区二区老年| 欧美成人精品二区三区99精品| 91精品久久| 国产综合色一区二区三区| 一本一本久久| 国产女主播喷水高潮网红在线| 日本韩国一区二区三区| sese一区| 3d动漫精品啪啪一区二区三区免费 | 国产激情视频一区二区三区欧美| 欧美三级 欧美一级| 亚洲第一视频在线观看| 在线免费看h| 午夜精品视频在线观看一区二区| 免费视频久久| 99热6这里只有精品| 欧美一级日韩一级| 97久久人人超碰caoprom| 蜜桃成人免费视频| 日韩在线一二三区| 天海翼在线视频| 精品电影一区二区| 午夜精品久久久久久久久久蜜桃| 三区精品视频观看| 狠狠色狠狠色综合日日91app| 久久久久噜噜噜亚洲熟女综合| 亚洲美女av在线| 欧美v亚洲v综合v国产v仙踪林| 天天想你在线观看完整版电影免费| 成人性生交大片免费看视频在线| 天天干天天干天天干天天| 中文字幕精品一区二区精品| 欧美久久一区二区三区| 国产a级一级片| 1区2区3区欧美| 天天色天天操天天射| 国产精品人成电影在线观看| 国产综合网站| www..com.cn蕾丝视频在线观看免费版| 欧美精品色一区二区三区| 韩日毛片在线观看| 中文字幕av日韩精品| 久久综合九色综合97婷婷|