国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Dubbo 為什么用 Go 重寫?

開發 后端
Apache Dubbo Go 語言實現,架起 Java 和 Golang 之間的橋梁,與 gRPC/Dubbo 生態互聯互通,帶領 Java 生態享受云原生時代的技術紅利。

[[443126]]

先說兩句

我常常在散步時思考很多技術上的「為什么問題」,有時一個問題會想很久,直到問題的每一個點都能說服自己時,才算完結。于是想把這些思考記錄下來,形成文章,可以當做一個新的系列。這些文章中你可能看不到代碼,但能窺探到一些容易被忽視的問題,以及問題更深層次的「為什么」。

今天帶來第1篇,Dubbo為什么要用Go重寫?

誕生于阿里巴巴,2011年開源的Dubbo已經走過了10個年頭。在2019年,它被用Go重寫并開源,如今兩年過去,已經從當初的V1.0.0版本發展到了V3.0.0,截止目前star數3.8K。

有一次同事問我,為什么Dubbo這么"老"的項目還要用Go重寫,有什么現實意義嗎?

今天就來談談我的一些看法。

連接過去和未來

我覺得要回答好這個問題,得從Dubbo-go的初衷談起,github主頁上它是這樣介紹自己的:

官方給出的中文翻譯是

Apache Dubbo Go 語言實現,架起 Java 和 Golang 之間的橋梁,與 gRPC/Dubbo 生態互聯互通,帶領 Java 生態享受云原生時代的技術紅利。

我再通俗地翻譯一下:一個公司或部門內有人用Java版Dubbo,有人用Go,這兩者需要通信,于是就有了Dubbo-Go,用來解決通信問題。

所以第一個問題來了,為什么一個公司用了Java,又用了Go?

編程語言的抉擇

對于編程語言的選擇,在商業公司里,我覺得最最主要考慮的點就是效率,至于其他的點都是次要。因為商業公司的主要目的就是盈利,不管什么語言,只要能用最低的成本拿到相等的收益就是好語言。

效率又包含了好幾個方面:

  • 開發效率。開發效率高,項目能早日上線,占領市場,也能節約人力成本
  • 運行效率。運行效率高,能省下服務器成本

縱觀國內很多商業公司的選擇都是如此考慮,比如阿里。

阿里早期是PHP,選擇PHP的考量點主要是開發效率,但隨著業務的發展,PHP的性能無法支撐,必須得換一個運行效率高的語言。

運行效率高自然想到C/C++,但這兩個語言的開發效率低,得在開發效率和運行效率中找到一個平衡點,于是阿里選擇了Java。

阿里官方在知乎上回答為什么選擇Java時,主要有以下幾點考慮:性能、簡單易學、生態豐富、社區活躍

把性能放第一位,簡單易學、生態豐富、社區活躍其實也都是說的開發效率,正是有了這些優點,開發效率才高。

當阿里巴巴選擇Java后,自研了大量的Java中間件,培養了大量的Java人才,所以其他公司在技術選型時,也參考了阿里巴巴,導致越來越多的公司選擇了Java。

而選擇Go也是如此,一些年輕的公司早期可能是PHP、Python等腳本語言,等發展壯大后,不得不面臨和阿里一樣的問題:性能問題。

在2012年Go發布了,大家又多了一個選擇,Go既有很高的性能,又非常地簡單易上手,像字節跳動這類新公司就以Go為主。

所以綜合來看,選擇Java或者Go都是合理的,存在即合理。

為什么有公司選擇了Java,又想用Go呢?

  • Go語言相比Java有啟動快,編譯速度快、占用內存小、擅長高并發(協程)的特性,所以在已經有Java的公司,也會考慮Go,只不過目前這類公司占比不多。
  • 某些公司沒有強制的技術棧,所以新部門新業務可以擺脫束縛,選擇新語言Go來進行開發。

小結

綜上看來,選擇Java或選擇Go都合理,一個公司內兩者都選擇,也有合理之處,雖然占比不多,但還是有Java和Go通信的需求。

Dubbo在RPC框架中的勝出

公司早期通常是單體服務,在規模達到一定程度,單體應用無法支撐業務發展時,會選擇微服務架構,這時就需要一個好用的RPC框架。

能適配Java語言的RPC框架中,Dubbo是國內最早開源,于2011年開源。

而和他類似的競品如Spring Cloud在2014年開源,微博的Motan在2017年開源,跨語言的gRPC在2015年開源,Thrift 2007年開源。

只有Thrift 比它早,但Thrift只是個RPC框架,Dubbo可是包含了開箱即用的服務治理能力,如服務注冊與發現、負載均衡、容錯、動態配置等等。

可以說早期Java的RPC框架沒得選。

就算到了RPC框架百花齊放的時代,這么多公司的使用加上阿里的背書,Dubbo也有它的一席之地。

小結

當一個公司選擇了Java編程語言和Dubbo框架(這種選擇還是挺多的),后來又想嘗試Go,或者一些新業務、新部門想嘗試Go時,他們就面臨了一個難題,Go如何跟Java的Dubbo通信。

由于Dubbo協議是私有協議,用Go重新實現一遍的代價還是挺大。于是Dubbo-Go應運而生,從這個角度看,Dubbo-Go在連接Java和Go的通信這條路上還是具有相當大的價值的。

終結與線程池的斗爭

如果使用了Dubbo框架,很多時候需要一個Dubbo網關,關于Dubbo網關可以參考我這篇文章:《微服務網關演進之路》。

在這篇文章中,詳細介紹了一款Dubbo網關的背景、難點、選型、設計、演進以及踩坑經歷,其中我花了大篇幅介紹了「與線程池所做的斗爭」,在Java中,線程是很寶貴的,但Dubbo網關如果是同步調用,必須一個請求占用一個線程,這就導致并發上不去,而且線程池打滿后,會影響其他請求。

所以解決方案要么是隔離線程池,要么改成異步調用。隔離線程池只解決了請求不相互影響,但并發還是上不去,改成異步調用可以完美解決,但是編碼實在是太復雜。

而Go的協程可以剛好解決這個問題,Go的協程很輕量,調度效率也更高,所以我們可以用簡單的代碼寫出非常高效率的網關。

舉個例子可以直觀感受一下,Nginx的性能大家有目共睹,但如果用Java來實現,不知道得堆多少機器才能達到Nginx的性能,但百度在反向代理上使用了Go寫的BFE來代替Nginx,可見其性能有多夸張。

關于協程的介紹和原理,可以參考我這篇文章:《寫了一年golang,來聊聊進程、線程與協程》。

小結

所以在Dubbo網關上,Dubbo-Go也提供了一種新的解法,涂鴉智能已經有用于線上的Dubbo-Go網關,并且已經開源為Dubbo-go-pixiu。

為Dubbo Mesh鋪路

Service Mesh也漸漸成為了下一代微服務架構,Go在Mesh上也絕對是一個閃亮的明星語言,無論是K8S、Docker等云原生基礎設施都采用Go編寫,還是Go的開發速度以及協程的高并發能力,都使它成為了Mesh的首選語言。

基于此,Dubbo的Mesh化,Dubbo-Go也為其鋪平了道路,但目前Dubbo Mesh還處于小面積階段,完整落地的方案并沒有開源,從這點上來說,如果某公司想走Dubbo Mesh化之路,Dubbo-Go可能也是他們要著重考慮的點之一。

總結

說了這么多,該正面回答Dubbo為什么要用Go重寫,這個問題的答案還是官方給出的那句話:架起 Java 和 Golang 之間的橋梁。至于為什么要「架起這座橋梁」,參考下圖:

 

責任編輯:武曉燕 來源: 捉蟲大師
相關推薦

2022-01-07 14:05:33

DubboGoJava

2020-02-14 15:22:58

編寫基礎架構Python

2012-04-06 10:35:30

SpringJavaHibernate

2021-08-10 18:54:48

射頻系統SMA

2020-02-14 13:13:04

Go機器學習Python

2022-07-13 07:06:47

HTTPSHTTP協議

2020-07-20 14:09:36

Python編程語言注釋符

2023-10-10 08:24:12

2023-02-13 15:03:33

JDKJavaHotSpot

2009-07-07 17:18:57

Facelets介紹JSP與Facelet

2025-01-06 08:28:45

C語言操作系統程序

2024-12-25 15:32:29

2020-12-25 09:07:38

EclipseCode工具

2022-06-26 00:24:57

C語言操作系統語言

2023-11-02 08:20:54

SocketZygoteAndroid

2018-02-09 09:36:25

DubboSpring Clou支付

2023-03-10 08:48:29

2021-03-18 23:38:26

EqualsHashcode方法

2020-02-27 21:03:30

調度器架構效率

2020-04-07 16:12:56

Go編程語言開發
點贊
收藏

51CTO技術棧公眾號

天天做天天爱天天综合网2021| 欧美日韩一区二区三| 成人av在线不卡| 日韩中文视频| 亚洲黄色成人| 伊人久久免费视频| 欧美日韩视频在线播放| 国产精品久久久久影院老司| 男同互操gay射视频在线看| 日韩精品分区| 国产激情视频一区二区三区欧美| 国产精品丝袜白浆摸在线| 日本久久二区| 亚洲视频专区在线| 尤物在线视频| 99视频免费观看蜜桃视频| 精品国产一区二区三区2021| 色综合色狠狠综合色| 俄罗斯精品一区二区| 最新av在线网站| 黑色丝袜福利片av久久| 欧美精品一区二区不卡| 黄色综合网址| 亚洲精品国产系列| 亚洲美女在线一区| 男人天堂成人在线| 亚洲午夜久久| 91精品欧美综合在线观看最新| 国产精品成人国产| 久久福利影视| 久久久久久欧美| 亚洲人成无码www久久久| 99日韩精品| 亚洲成av人乱码色午夜| 国产熟女高潮视频| 精品三级av| 欧美成人免费网站| 在线视频中文字幕久| 六月丁香婷婷色狠狠久久| 一区二区三区四区视频| 成人免费高清| 亚洲视频一区二区在线观看| 乱小说综合网站| 亚洲欧美日韩综合aⅴ视频| www.51av欧美视频| 日韩码欧中文字| 国产 福利 在线| 99久久婷婷国产综合精品| 国内精品国语自产拍在线观看| 国产一区二区三区四区五区3d| 偷拍视频一区二区三区| 亚洲色图官网| 精品一区二区三区欧美| 亚洲成人www| 中文在线a在线| 中文字幕一区二区三区在线播放| 日本黄色播放器| 久久爱www成人| 日韩久久午夜影院| 国产精品视频一区二区三区综合| 精品久久久久人成| 成人午夜在线影院| 在线中文资源天堂| 亚洲国产精品成人综合色在线婷婷 | 国产成人综合精品在线| 黄在线观看免费网站ktv| 日韩亚洲欧美综合| 国产探花视频在线观看| 午夜啪啪免费视频| 久久av网站| 国产色综合天天综合网| 91在线观看免费视频| 精品国产自在久精品国产| 二区三区四区高清视频在线观看| 色哟哟入口国产精品| 图片小说视频色综合| 日韩深夜视频| 福利精品视频| 午夜精品爽啪视频| 白白色在线观看| 5858s免费视频成人| 伊人色综合久久天天| 久久久久亚洲| 97视频在线免费| 老司机午夜免费精品视频| 亚洲欧美日韩不卡一区二区三区| 久久精品72免费观看| 精品久久久久久久无码| 亚洲加勒比久久88色综合| 欧美日韩在线免费观看| 爽好多水快深点欧美视频| 九色视频成人自拍| 国模精品视频一区二区三区| 一本到12不卡视频在线dvd| 69av在线| 91一区二区三区| 亚洲日韩欧美一区二区在线| 欧美在线va视频| xxxxx成人.com| 欧美精品国产| 国产精品久久久久久久9999| 午夜伊人狠狠久久| 久久精品xxxxx| 成人有码在线视频| 国产精品伊人色| 色噜噜狠狠一区二区| 国产丝袜精品第一页| 视频在线观看国产精品| 可以免费在线看黄的网站| 国产丝袜一区二区三区| 激情五月综合网| 天堂在线中文| 欧美专区在线视频| 中文字幕巨乱亚洲| 理论片一区二区在线| 一区二区传媒有限公司| 奇米4444一区二区三区| 色天使色偷偷av一区二区| 天堂男人av| 欧美成人午夜剧场免费观看| 久久狠狠亚洲综合| 国产精品偷拍| 青青影院一区二区三区四区| 色狠狠综合天天综合综合| 日本韩国欧美精品大片卡二| 久久免费美女视频| 性欧美video另类hd尤物| 日韩精品免费一区| 欧美日韩高清不卡| 午夜久久久久久久久久一区二区| 欧美性videos高清精品| 香蕉乱码成人久久天堂爱免费| 九七影院97影院理论片久久| 在线观看成人影院| 久久精品人人做人人爽电影| 亚洲视频精品在线| 综合久久久久综合| 麻豆成人av在线| 伊人久久婷婷| 激情五月综合网| 7m精品国产导航在线| 亚洲欧美专区| 欧亚av在线| 久久精品视频网| 久久精品免费观看| 亚洲欧美色图| 久久夜夜操妹子| 在线播放麻豆| 亚洲精品视频区| 日韩在线第三页| 国产亚洲精品美女久久久m| 日韩中文字幕在线视频| 一区二区三区四区国产精品| 看片的网站亚洲| 欧美日韩综合| 亚洲成av人片乱码色午夜| 制服丝袜日韩| 欧美第一精品| 99在线|亚洲一区二区| 亚洲欧美bt| 久久精品亚洲| 另类小说视频一区二区| 韩国三级电影一区二区| 成人丝袜18视频在线观看| 香蕉视频在线免费| 视频一区二区在线观看| 国产91沈先生在线播放| 亚洲少妇第一页| 中文字幕在线永久在线视频 | 欧美不卡在线一区二区三区| 农村寡妇一区二区三区| 国产精品一 二 三| 一区视频二区视频| 六月婷婷激情网| 麻豆一区二区三区在线观看| 国产视频一二三| 麻豆蜜桃在线观看| 激情久久99| 久久久精品区| 久久精品国产大片免费观看| 欧美日韩破处视频| 久久精品av| 首页亚洲中字| 中文字幕国内自拍| 在线观看亚洲色图| 日本激情视频在线观看| xxxxx.日韩| 欧美一区二区性| 久久先锋影音av鲁色资源网| 欧美天堂亚洲电影院在线播放| 亚洲欧洲xxxx| 青青草原成人在线视频| 国产女主播一区二区三区| 能看的毛片网站| 欧美第一视频| 一区免费视频| 色综合色综合色综合色综合色综合 | 一本久久青青| 91丨porny丨国产入口| 欧美午夜片在线观看|