天天看點

go 微服務架構_Micro 不能用了?關于 Go 語言微服務架構 Micro 的一些情況說明

點選上方藍色“polarisxu”關注我,設個星标,不會讓你失望

用過或了解過 Micro 這個架構的人,可能有所耳聞,大家對其抱怨比較多,典型的抱怨是更新後不相容。比如網上有教程是基于 1.x,但新版本是 2.x,完全不一樣了,而且似乎官方文檔也沒有及時更新,使用了它的人“痛苦不堪”。

前些天,有人問我有無其他 Go 微服務架構推薦,說 Micro 3.0.0 開始不能用了!!

我聽了一驚:我隻聽說它不穩定,總是變來變去,相容性不好,但沒聽說不能用。後來了解了下,原來 3.0 做了巨大的改變。主要有:

  • Micro 3.0 推薦叫做 M3O,微服務架構成為了雲原生開發平台
  • 廢棄了 Go-Micro
  • 開源 License 由 Apache 2.0 改為 Polyform Shield[1]

說明一點,Micro 是一個公司:Micro Services, Inc。

01 Micro 3.0 叫做 M3O,一個雲原生開發平台

在 11 月 05 日,官方宣布 Micro 3.0.0 釋出。這不再是一個微服務架構,而是一個雲原生平台。有什麼不一樣呢?

官方在 3.0 版本對主要工具進行了重大重構,并将其整合到可以從開發人員的角度解決建構、運作、管理和使用這整個工作流的問題。

為什麼做這樣的改變

Micro 最初是作為微服務開發的工具包,它結合了 api 網關,Web dashboard 和 cli 與使用 Go RPC 架構建構的服務進行互動。因為考慮到那時讓所有人重新購買 PaaS 感覺就像是一場失敗的戰鬥。是以,官方選擇圍繞 RPC 架構編寫單一用途的工具,以為它可以使人們逐漸采用它,直到他們看到對平台的需求為止。

雖然有一個簡單的 Go 架構以及一些用于查詢和與之互動的周圍元件,但是就像任何長期存在的項目一樣,随着試圖解決瑞士軍刀無法做到的那種平台體驗,其複雜性也在增加,開發了許多獨立的庫。這對于使用者而言,增加了認知上的負擔。

在 2019 年,官方對所有這些庫進行了合并,這提供了極大的幫助,但始終仍然存在一個懸而未決的問題。micro 和 go-micro 有什麼差別?一般我們将 go-micro 視為架構,将 micro 視為工具箱,但這樣的劃分似乎沒有意義。

過去 5 年,随着容器和容器編排成為焦點,“雲原生”工具激增,世界爆炸了。更具體地說,Docker 和 Kubernetes 重新定義了技術領域,并更加有意識地轉向在雲中建構軟體。

Micro 甚至可以追溯到 2015 年,都具有前瞻性的觀點。很明顯,分布式系統和雲原生将在未來幾年内成為後端服務開發的主導模型,但是不清楚要花多長時間花折騰各種工具,例如 docker,kubernetes,grpc,istio 等。這感覺就像重新建構技術棧。Micro 希望解決整個工作流上的事情,而隻是在微服務開發上。

M3O 官方認為 PaaS 3.0 不僅是在運作容器甚至是源代碼,而且還囊括了整個開發人員的經驗,包括用于編寫雲代碼的模型。是以它們打造了 Micro 3.0,或叫 M3O,這是用于雲原生開發的平台。

更多資訊可以看 Micro 3.0.0 的釋出公告[2]。

02 廢棄 Go-Micro

這個點上面已經做了一定說明。

官方終止對 go-micro 的支援。這個項目自 2014 年建立至今,已經擁有 14.7k+ Star。作者認為盡管它為許多人解決了一些問題,但它并沒有完成它的初衷。

現在這個項目并沒有直接放棄,而是轉交到個人名下(Micro 公司的 CEO Asim),為了避免混淆,項目名也改了,叫 Nitro[3]。現在它是一個快速的分布式應用程式開發架構。

雖然 go-micro 2.0 依然可以使用,但已經不維護。更多相信資訊可以檢視 Nitro 項目的 FAQ。

03 Licence 改為 Polyform Shield

Polyform Shield 這個 Licence 我是第一次見 ,相信很多人也是。官方的說法是:

Micro 繼續保持開源狀态,但使用 Polyform Shield 進行了許可,這可以防止該軟體被提取并作為服務運作。這是為了與 AWS 和其他運作開放源代碼以謀取利益而不回饋的人抗衡。

這個 Licence 是為了防止 AWS 這樣的雲服務部署 Micro 服務,和 Micro 公司進行直接競争,其他情況下可以免費使用。是以不存在開頭網友說的不讓用的情況。

值得一提的是,Nitro 項目的 Licence 也改為了 Polyform Shield。

04 總結

Micro 3.0 的出現,可能是順應時代的産物。但從另一個角度,包括 Licence 的變更,一個靠開源項目活下去的公司不容易。M3O 是一個雲原生(m3o.com)托管平台,有興趣可以了解它的收費模式,這是開源項目公司進行商業化的一種方式。

就像 Micro 的創始人 Asim 在 Nitro 項目的 FAQ 中說的:

Go Micro 的維護,需要花費很多的時間精力,它屬于 Micro Services,Inc. 公司,該公司現在專注于 Micro as a Service,并将此處的所有接口合并到該項目的服務庫中。在大多數情況下,Go Micro 都沒有資金支援,雖然得到過好評。是以,在堅持了 6 年後,在 3.0 版中,這個項目屬于我個人(Asim),我做出了艱難的決定,要重新許可為非商業項目。對于任何商業應用程式,我正在尋找  github sponsorship[4],以便我可以将這些資金用于維護和支援工作。

是以,如果你曾經喜歡 Micro 這個項目,建議你可以繼續喜歡。當然也希望這次之後,版本能夠更穩定。而我看了這些後,作為一個開源愛好者,我準備花時間研究研究 Micro,順便寫寫筆記,希望為它的推廣做一點貢獻。

參考資料

[1]

Polyform Shield: https://polyformproject.org/licenses/shield/1.0.0/

[2]

Micro 3.0.0 的釋出公告: https://micro.mu/blog/2020/11/05/micro-v3-aka-m3o.html

[3]

Nitro: https://github.com/asim/nitro

[4]

github sponsorship: https://github.com/sponsors/asim

往期推薦

  • I Have a Dream:寫在 Go1.15.4 釋出之計

覺得不錯,歡迎關注:

go 微服務架構_Micro 不能用了?關于 Go 語言微服務架構 Micro 的一些情況說明

點個贊、在看和轉發是最大的支援