自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

真是頭疼,Proto 代碼到底放哪里?

開(kāi)發(fā) 架構(gòu)
雖然我朋友他們已經(jīng)從大單體切換為微服務(wù)化有一定的年頭了,但一些細(xì)節(jié)方面的處理總會(huì)有不同的人有不同的看法。

[[442750]]

本文轉(zhuǎn)載自微信公眾號(hào)「腦子進(jìn)煎魚(yú)了」,作者 陳煎魚(yú)。轉(zhuǎn)載本文請(qǐng)聯(lián)系腦子進(jìn)煎魚(yú)了公眾號(hào)。

大家好,我是煎魚(yú)。

雖然我朋友他們已經(jīng)從大單體切換為微服務(wù)化有一定的年頭了,但一些細(xì)節(jié)方面的處理總會(huì)有不同的人有不同的看法。

而且時(shí)不時(shí)就會(huì)有人出來(lái)反復(fù)問(wèn),這其中的一個(gè)重要討論點(diǎn),就是 Proto 這個(gè) IDL 的代碼到底放在哪里?

實(shí)施方案

經(jīng)過(guò)多輪討論對(duì) Proto 的存儲(chǔ)方式和對(duì)應(yīng)帶來(lái)的優(yōu)缺點(diǎn)。

一共有如下幾種方案:

  • 代碼倉(cāng)庫(kù)。
  • 獨(dú)立倉(cāng)庫(kù)。
  • 集中倉(cāng)庫(kù)。
  • 鏡像倉(cāng)庫(kù)。

方案一:存放在代碼倉(cāng)庫(kù)

直接將項(xiàng)目所依賴到的所有 Proto 文件都存放在 proto/ 目錄下,不經(jīng)過(guò)開(kāi)發(fā)工具的自動(dòng)拉取和發(fā)布:

缺點(diǎn)

項(xiàng)目所有依賴的 Proto 都存儲(chǔ)在代碼倉(cāng)庫(kù)下,因此所有依賴 Proto 都需要人工的向其它業(yè)務(wù)組 “要” 來(lái),再放到 proto/ 目錄下,人工介入極度麻煩。

Proto 升級(jí)和變更,經(jīng)常要重復(fù)第一步,溝通成本高。

優(yōu)點(diǎn)

項(xiàng)目所有依賴的 Proto 都存儲(chǔ)在代碼倉(cāng)庫(kù)下,因此不涉及個(gè)人開(kāi)倉(cāng)庫(kù)權(quán)限的問(wèn)題。

多 Proto 的切換開(kāi)銷減少,因?yàn)槎荚诖a倉(cāng)庫(kù)下,不需要看這看那。

方案二:獨(dú)立倉(cāng)庫(kù)

獨(dú)立倉(cāng)庫(kù)存儲(chǔ)是我們最早采取的方式,也就是每個(gè)服務(wù)對(duì)應(yīng)配套一個(gè) Proto 倉(cāng)庫(kù):

這個(gè)方案的好處就是可以獨(dú)立管理所有 Proto 倉(cāng)庫(kù),并且權(quán)限劃分清晰。但最大的優(yōu)點(diǎn)也是最大的缺點(diǎn)。

因?yàn)橐粋€(gè)服務(wù)會(huì)依賴多個(gè) Proto 倉(cāng)庫(kù),并且存在跨業(yè)務(wù)組調(diào)用的情況:

如上圖所示,svc-user 服務(wù)分別依賴了三塊 Proto 倉(cāng)庫(kù),分別是自己組的、業(yè)務(wù)組 A、業(yè)務(wù)組 B 總共的 6 個(gè) Proto 倉(cāng)庫(kù)。

缺點(diǎn)

  • 假設(shè)你是一個(gè)新入職的開(kāi)發(fā)人員,那么你就需要找不同的業(yè)務(wù)組申請(qǐng)不同的倉(cāng)庫(kù)權(quán)限,非常麻煩。如果沒(méi)有批量賦權(quán)工具,也沒(méi)有管理者權(quán)限,那么就需要一個(gè)個(gè)賦權(quán),非常麻煩。
  • 在運(yùn)行服務(wù)的時(shí)候,你需要將所有相關(guān)聯(lián)的 Proto 倉(cāng)庫(kù)拉取下來(lái),如果沒(méi)有工具做半自動(dòng)化的支持,麻煩程度無(wú)法忍受。

優(yōu)點(diǎn)

  • 使得安全性較高(但 IDL 本身沒(méi)有太多的秘密)。
  • 按需拉取,不需要關(guān)注其余的服務(wù) Proto。

方案三:集中倉(cāng)庫(kù)

集中倉(cāng)庫(kù)也是一些公司考慮的方式之一,是按公司或大事業(yè)部的維度進(jìn)行 Proto 代碼的存儲(chǔ)。

這樣子只需要拉取一個(gè)倉(cāng)庫(kù),就可以獲取到所有所需的 IDL:

缺點(diǎn)

安全性下降,因?yàn)槠渌鼧I(yè)務(wù)組的 IDL 也全都 “泄露” 了。

非按需拉取,在查看原始文件時(shí),需要關(guān)注一些多余的。

優(yōu)點(diǎn)

只需要拉取一次 Proto 倉(cāng)庫(kù)就可以輕松把一個(gè)服務(wù)所需的 IDL 集齊。

倉(cāng)庫(kù)權(quán)限管理的復(fù)雜度下降。

方案四:鏡像倉(cāng)庫(kù)

結(jié)合上面幾種方案的特點(diǎn),我們也可以得出鏡像倉(cāng)庫(kù)的方式。

也就是自己服務(wù)的 Proto 文件存放在代碼倉(cāng)庫(kù)的 proto 文件中,在本次 feature 提交或發(fā)布后,自動(dòng)同步到鏡像倉(cāng)庫(kù)去。

你所依賴的其他服務(wù) Proto 則直接通過(guò)讀取集中的鏡像倉(cāng)庫(kù)的方式獲?。?/span>

這樣子的話,通過(guò)開(kāi)發(fā)工具的配合,開(kāi)發(fā)人員在開(kāi)發(fā)時(shí)就只需要關(guān)注自己項(xiàng)目的 Proto 就好了。

集中的鏡像倉(cāng)庫(kù)主要用于構(gòu)建和部署,大幅度降低了多 Proto 的關(guān)注和切換開(kāi)銷。

方案五:其他

本質(zhì)上上述的所有方案多多少少都有一些利弊存在,并且都需要開(kāi)發(fā)工具來(lái)進(jìn)行支持,否則實(shí)操起來(lái)還是非常麻煩。

如果想一勞永逸,可以通過(guò)云開(kāi)發(fā)環(huán)境來(lái)解決,因?yàn)樵诜峙湓崎_(kāi)發(fā)機(jī)時(shí),你已經(jīng)有了身份認(rèn)證,你能夠擁有什么權(quán)限,不能擁有什么權(quán)限,基本都是明確的。

所以一般在組內(nèi)、跨組聯(lián)調(diào)時(shí),也可以直接調(diào)度,不需要像其它方案那樣進(jìn)行過(guò)多的關(guān)注,甚至在自己本地運(yùn)行一套微服務(wù)。

這需要大量的工具/資源支持,也需要研發(fā)有一定規(guī)模才能做。

小結(jié)

在本文中我介紹了比較常見(jiàn)的 5 種 Proto 代碼的管理方式,其各有利弊,不同公司不同人的理解或適配度都不一樣。

大家可以根據(jù)實(shí)際環(huán)境進(jìn)行選用,并且建議拉上核心的人員進(jìn)行討論和選型,因?yàn)?Proto 代碼涉略面還是比較廣的,多多少少都有人有不一樣的看法。

 

責(zé)任編輯:武曉燕 來(lái)源: 腦子進(jìn)煎魚(yú)了
相關(guān)推薦

2016-11-30 16:14:12

容器

2020-08-20 08:39:54

CTO代碼數(shù)據(jù)

2014-01-07 13:54:40

Hadoop日志

2015-08-13 09:34:31

公有云私有云云服務(wù)

2021-03-02 20:01:08

寫代碼開(kāi)發(fā)工具idea

2015-06-30 14:33:52

物聯(lián)網(wǎng)

2017-03-16 14:31:11

2023-06-27 17:30:13

數(shù)字化

2020-08-06 09:08:51

開(kāi)發(fā)谷歌微軟

2019-02-01 10:03:57

混沌工程分布式系統(tǒng)故障

2018-01-23 11:42:50

程序員編程代碼

2020-12-02 09:51:06

C++語(yǔ)言學(xué)習(xí)

2020-11-06 07:25:17

手機(jī)閃存

2011-09-05 10:30:51

重構(gòu)代碼庫(kù)業(yè)務(wù)模型

2011-07-14 09:39:52

三星HTC蘋果

2016-03-17 20:17:02

人臉識(shí)別技術(shù)

2011-05-05 09:37:35

J-Hi

2010-08-09 09:09:36

Linux與BSD的區(qū)

2023-02-11 08:18:15

AI人工智能ChatGPT

2010-03-16 09:57:18

交換機(jī)配置文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)