微服務架構實踐(服務架構)

來源:互聯網
上載者:User

目標

高效能

效能高是必須的,對於創業公司來說,不停的堆機器也是一個比較大的成本,能省則省。

資源拆分隔離

對資源進行拆分,需要每個服務提供相應的介面,服務之間不能直接存取其他服務的資料庫或者緩衝。

高可用

暫訂目標是99.9的可用性。

開發語言

由於我們的新項目沒有曆史包袱,所有的模組都是重新開發,所以我們可以自由地選擇開發語言和開發架構。以前我們的項目後端開發語言比較雜,有golang的項目,php的項目,還有一小部分是nodejs的項目。新項目我決定統一後台開發語言,選擇golang作為我們的主力後端開發語言。golang在我們這裡主要有以下優勢:

  • golang在效能和開發效率上有很好的平衡,文法上很簡單,並發編程簡單高效,基礎庫健全。
  • 內建一些pprof包可以profile當前程式的CPU消耗、記憶體佔用、鎖狀態、channel阻塞等,非常便利我們定位問題。
  • 對PHP程式員來說,上手更容易,而且效能好很多。

服務架構

對於一般的中小型創業公司而言,自己去開發一個微服務架構相對而言成本就太大了(土豪公司養了一堆閑人的除外)。
經過對比,我們選用Go Micro作為開發架構,因為裡麵包含幾乎所有微服務元件,並且支援非常好的拓展性,通過介面的設計方式,讓我們可以拓展一些自己的組件,比如服務發現、傳輸協議、配置中心等。

Go Micro是一個外掛程式化架構,專註於提供底層的介面定義和基礎工具,這些介面可以接納各種實現。
舉個例子,比如下面是Registry介面:

type Registry interface {    Register(*Service, ...RegisterOption) error    Deregister(*Service) error    GetService(string) ([]*Service, error)    ListServices() ([]*Service, error)    Watch(...WatchOption) (Watcher, error)    String() string    Options() Options}

Registry介面定義了服務發現的介面,預設採用了consul作為服務發現的實現,但也可以採用其他實現比如etcd和zookeeper等,只要能滿足介面,就可以使用。外掛程式化的架構意味著如果你想替換底層的實現,你不需要修改任何底層的代碼。


micro-framework.png

Go Micro主要由以下組件構成:

Registry

提供服務註冊、發現、登出、監測機制,註冊中心預設是consul,可通過外掛程式的形式支援etcd2/3、zookeeper等

Selector

選取器提供了負載平衡,可以通過過濾方法對微服務進行過濾,並通過不同路由演算法選擇微服務等。

Transport

微服務間同步請求/響應通訊方式,如http、grpc、tcp、udp等

Broker

微服務鍵非同步發布/訂閱通訊方式,更好的處理分布式系統解耦問題,預設使用http方式,生產環境通常會使用訊息中介軟體,如Kafka、NSQ等。

Codec

服務間訊息的編解碼,支援json、protobuf、bson、msgpack等。

Server

用於啟動服務,為服務命名、註冊Handler、添加中介軟體等。

Client

提供微服務用戶端。

我們將會基於Go Micro進行了二次開發,拓展一些自己的組件,比如配置中心,日誌收集,APM調用鏈,監控資料收集等。

未完待續

我的公眾號

qrcode_for_gh_e51d4037d8fa_430.jpg
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.