一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Golang - Dubbo為什么用Go重寫?

Dubbo為什么用Go重寫?

2022-01-07 22:30Hollis Golang

一個(gè)公司或部門內(nèi)有人用Java版Dubbo,有人用Go,這兩者需要通信,于是就有了Dubbo-Go,用來(lái)解決通信問(wèn)題。

Dubbo為什么用Go重寫?

連接過(guò)去和未來(lái)

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

Dubbo為什么用Go重寫?

官方給出的中文翻譯是

Apache Dubbo Go 語(yǔ)言實(shí)現(xiàn),架起 Java 和 Golang 之間的橋梁,與 gRPC/Dubbo 生態(tài)互聯(lián)互通,帶領(lǐng) Java 生態(tài)享受云原生時(shí)代的技術(shù)紅利。

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

所以第一個(gè)問(wèn)題來(lái)了,為什么一個(gè)公司用了Java,又用了Go?

編程語(yǔ)言的抉擇

對(duì)于編程語(yǔ)言的選擇,在商業(yè)公司里,我覺得最最主要考慮的點(diǎn)就是效率,至于其他的點(diǎn)都是次要。因?yàn)樯虡I(yè)公司的主要目的就是盈利,不管什么語(yǔ)言,只要能用最低的成本拿到相等的收益就是好語(yǔ)言。

效率又包含了好幾個(gè)方面:

  • 開發(fā)效率。開發(fā)效率高,項(xiàng)目能早日上線,占領(lǐng)市場(chǎng),也能節(jié)約人力成本
  • 運(yùn)行效率。運(yùn)行效率高,能省下服務(wù)器成本

縱觀國(guó)內(nèi)很多商業(yè)公司的選擇都是如此考慮,比如阿里。

阿里早期是PHP,選擇PHP的考量點(diǎn)主要是開發(fā)效率,但隨著業(yè)務(wù)的發(fā)展,PHP的性能無(wú)法支撐,必須得換一個(gè)運(yùn)行效率高的語(yǔ)言。

運(yùn)行效率高自然想到C/C++,但這兩個(gè)語(yǔ)言的開發(fā)效率低,得在開發(fā)效率和運(yùn)行效率中找到一個(gè)平衡點(diǎn),于是阿里選擇了Java。

阿里官方在知乎上回答為什么選擇Java時(shí),主要有以下幾點(diǎn)考慮:性能、簡(jiǎn)單易學(xué)、生態(tài)豐富、社區(qū)活躍

把性能放第一位,簡(jiǎn)單易學(xué)、生態(tài)豐富、社區(qū)活躍其實(shí)也都是說(shuō)的開發(fā)效率,正是有了這些優(yōu)點(diǎn),開發(fā)效率才高。

當(dāng)阿里巴巴選擇Java后,自研了大量的Java中間件,培養(yǎng)了大量的Java人才,所以其他公司在技術(shù)選型時(shí),也參考了阿里巴巴,導(dǎo)致越來(lái)越多的公司選擇了Java。

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

在2012年Go發(fā)布了,大家又多了一個(gè)選擇,Go既有很高的性能,又非常地簡(jiǎn)單易上手,像字節(jié)跳動(dòng)這類新公司就以Go為主。

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

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

  • Go語(yǔ)言相比Java有啟動(dòng)快,編譯速度快、占用內(nèi)存小、擅長(zhǎng)高并發(fā)(協(xié)程)的特性,所以在已經(jīng)有Java的公司,也會(huì)考慮Go,只不過(guò)目前這類公司占比不多。
  • 某些公司沒有強(qiáng)制的技術(shù)棧,所以新部門新業(yè)務(wù)可以擺脫束縛,選擇新語(yǔ)言Go來(lái)進(jìn)行開發(fā)。

小結(jié)

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

Dubbo在RPC框架中的勝出

公司早期通常是單體服務(wù),在規(guī)模達(dá)到一定程度,單體應(yīng)用無(wú)法支撐業(yè)務(wù)發(fā)展時(shí),會(huì)選擇微服務(wù)架構(gòu),這時(shí)就需要一個(gè)好用的RPC框架。

能適配Java語(yǔ)言的RPC框架中,Dubbo是國(guó)內(nèi)最早開源,于2011年開源。

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

只有Thrift 比它早,但Thrift只是個(gè)RPC框架,Dubbo可是包含了開箱即用的服務(wù)治理能力,如服務(wù)注冊(cè)與發(fā)現(xiàn)、負(fù)載均衡、容錯(cuò)、動(dòng)態(tài)配置等等。

可以說(shuō)早期Java的RPC框架沒得選。

Dubbo為什么用Go重寫?

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

小結(jié)

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

由于Dubbo協(xié)議是私有協(xié)議,用Go重新實(shí)現(xiàn)一遍的代價(jià)還是挺大。于是Dubbo-Go應(yīng)運(yùn)而生,從這個(gè)角度看,Dubbo-Go在連接Java和Go的通信這條路上還是具有相當(dāng)大的價(jià)值的。

終結(jié)與線程池的斗爭(zhēng)

如果使用了Dubbo框架,很多時(shí)候需要一個(gè)Dubbo網(wǎng)關(guān)

在這篇文章中,詳細(xì)介紹了一款Dubbo網(wǎng)關(guān)的背景、難點(diǎn)、選型、設(shè)計(jì)、演進(jìn)以及踩坑經(jīng)歷,其中我花了大篇幅介紹了「與線程池所做的斗爭(zhēng)」,在Java中,線程是很寶貴的,但Dubbo網(wǎng)關(guān)如果是同步調(diào)用,必須一個(gè)請(qǐng)求占用一個(gè)線程,這就導(dǎo)致并發(fā)上不去,而且線程池打滿后,會(huì)影響其他請(qǐng)求。

所以解決方案要么是隔離線程池,要么改成異步調(diào)用。隔離線程池只解決了請(qǐng)求不相互影響,但并發(fā)還是上不去,改成異步調(diào)用可以完美解決,但是編碼實(shí)在是太復(fù)雜。

而Go的協(xié)程可以剛好解決這個(gè)問(wèn)題,Go的協(xié)程很輕量,調(diào)度效率也更高,所以我們可以用簡(jiǎn)單的代碼寫出非常高效率的網(wǎng)關(guān)。

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

小結(jié)

所以在Dubbo網(wǎng)關(guān)上,Dubbo-Go也提供了一種新的解法,已經(jīng)有用于線上的Dubbo-Go網(wǎng)關(guān),開源項(xiàng)目可參考Dubbo-go-pixiu。

為Dubbo Mesh鋪路

Service Mesh也漸漸成為了下一代微服務(wù)架構(gòu),Go在Mesh上也絕對(duì)是一個(gè)閃亮的明星語(yǔ)言,無(wú)論是K8S、Docker等云原生基礎(chǔ)設(shè)施都采用Go編寫,還是Go的開發(fā)速度以及協(xié)程的高并發(fā)能力,都使它成為了Mesh的首選語(yǔ)言。

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

總結(jié)

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

Dubbo為什么用Go重寫?

原文地址:https://mp.weixin.qq.com/s/7XO0fRRa8VUhJemVP8ZLjg

延伸 · 閱讀

精彩推薦
  • Golanggolang如何使用struct的tag屬性的詳細(xì)介紹

    golang如何使用struct的tag屬性的詳細(xì)介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細(xì)介紹,從例子說(shuō)起,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看...

    Go語(yǔ)言中文網(wǎng)11352020-05-21
  • Golanggo語(yǔ)言制作端口掃描器

    go語(yǔ)言制作端口掃描器

    本文給大家分享的是使用go語(yǔ)言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggo日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    go日志系統(tǒng)logrus顯示文件和行號(hào)的操作

    這篇文章主要介紹了go日志系統(tǒng)logrus顯示文件和行號(hào)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang的httpserver優(yōu)雅重啟方法詳解

    golang的httpserver優(yōu)雅重啟方法詳解

    這篇文章主要給大家介紹了關(guān)于golang的httpserver優(yōu)雅重啟的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,...

    helight2992020-05-14
  • GolangGolang通脈之?dāng)?shù)據(jù)類型詳情

    Golang通脈之?dāng)?shù)據(jù)類型詳情

    這篇文章主要介紹了Golang通脈之?dāng)?shù)據(jù)類型,在編程語(yǔ)言中標(biāo)識(shí)符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語(yǔ)言中標(biāo)識(shí)符允許由...

    4272021-11-24
  • GolangGolang中Bit數(shù)組的實(shí)現(xiàn)方式

    Golang中Bit數(shù)組的實(shí)現(xiàn)方式

    這篇文章主要介紹了Golang中Bit數(shù)組的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    天易獨(dú)尊11682021-06-09
  • Golanggolang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang 通過(guò)ssh代理連接mysql的操作

    golang 通過(guò)ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過(guò)ssh代理連接mysql的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧...

    a165861639710342021-03-08
主站蜘蛛池模板: 97国产精品久久碰碰牛牛 | 丰满大乳欲妇三级k8 | 青草悠悠视频在线观看 | aaaa大片 | 日本护士handjob | 日韩欧美国产一区二区三区 | 无码一区国产欧美在线资源 | 91高清免费国产自产 | 无套插入 | 亚洲色图15p | yy111111免费观看| 和岳m的小说 | 五月天精品视频播放在线观看 | 国产高清在线看 | 国产综合图区 | 亚洲AV无码专区国产乱码网站 | 369手机看片 | 日本视频高清免费观看xxx | 国产日韩一区二区三区 | 好吊色永久免费视频大全 | 我和么公的秘密小说免费 | 翁熄性放纵交换01 | 国产成+人+综合+亚洲欧美丁香花 | 亚洲咪咪| 久久精品免视看国产 | 亚洲va欧美va国产综合久久 | 男人机机桶女人 | 久久91精品国产91久久户 | 国内自拍网红在线自拍综合 | 垫底辣妹免费观看完整版 | 天天澡夜夜澡狠狠澡 | 羞羞漫画免费漫画页面在线看漫画秋蝉 | 久久偷拍国2017 | 青草青青在线视频 | 日韩资源 | 九九九精品视频 | 午夜A级理论片左线播放 | 女娃开嫩苞经历小说 | 欧美精品国产一区二区三区 | 9丨精品国产高清自在线看 9久热这里只有精品免费 | 成人福利网 |