基於gokit的微服務項目骨架ko

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

前段時間發布了一個小小的web開發項目骨架morningo,效能與效率齊飛,開發速度在短暫時間熟悉go語言後應該是匹配php,ruby等這些指令碼語言,而後期項目並發效能,基本並發到上千乃至上萬tcp串連沒問題。但從業務架構層面看,項目再發展,資料庫存在瓶頸,單體項目耦合度高,可維護性差,可延展性差,存在很多問題。因而項目早期可以採用單體架構,但後期仍然推薦的是面向服務的分布式架構。分布式的架構模式雖然帶來了增加的代碼量,服務間溝通的成本,但整體項目更具有彈性,延展性更好。

項目地址:https://github.com/chenhg5/ko

gokit介紹

go語言的優點不用贅述,那麼基於go的微服務架構有嗎?gokit就是一個go語言相關的微服務工具包。它自身稱為toolkit,並不是framework。也就是gokit是將一系列的服務集合在一起,提供介面,從而讓開發人員自由組合搭建自己的微服務項目。基本上看完gokit的例子就可以動手模仿著寫一個類似的小項目。gokit的結構分為:

transport

決定用哪種方式提供服務要求,一般就是 http,rpc

endpoint

是gokit最重要的一個層,是一個抽象的接收請求返迴響應的函數類型。在這個定義的類型裡面會去調用service層的方法,組裝成response返回。而gokit中的所有中介軟體組件都是通過裝飾者設計模式注入的。

type Endpoint func(ctx context.Context, request interface{}) (response interface{}, err error)func(log Logger, in endpoint.Endpoint) endpoint.Endpoint {    return func(ctx context.Context, req interface{}) (interface{}, error) {            logger.Log("input", toJSON(req))            resp, err := in(ctx, req)            logger.Log("output", toJSON(resp), "err", err)            return resp, err    }}

service

所有的具體方法寫在這裡,可以理解為單體web架構中的控制器部分。

工具包

這三個層組成一個gokit微服務應用。此外,作為一個工具包,gokit為此提供了很多微服務工具組件。

  • 認證組件(basic, jwt)
  • 迴路熔斷器
  • 日誌組件
  • 普羅米修斯監控系統
  • 限流器
  • 服務發現系統介面(etcd, consul等)
  • 路由跟蹤
  • ...

這些組件大大方便了我們開發一個微服務應用。

關於ko

ko是一個基於gokit的微服務架構應用開發骨架。一個基本的微服務架構包括:分發層api網關,監控系統,日誌系統,服務提供層等。ko的目的是提供一個架構參考,從而減短開發人員上手微服務架構的時間,最終是想提供一個思路讓開發人員能夠在極短的時間內架構起一個正式環境完備功能的微服務架構應用,並可以馬上著手於開發業務功能。同時,避免與各種基礎服務之間耦合度過高,提供靈活的服務定製介面給開發人員。ko會在gokit的基礎上,會提供一個解耦且功能完備的Api網關,帶有資料連線等功能完備的服務層,以及輔助項目構建的命令列腳手架工具。目前ko還在不斷完善開發中,會在本文中更新進度。附傳統的基本模型架構圖。

參考資料

[1] https://www.jianshu.com/p/cff...
[2] https://www.jianshu.com/p/0c3...
[3] https://gokit.io/faq/

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.