go微服務

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

go-kit 入門

1. microservice

Go-Kit

go kit 是一個分布式的開發工具集,在大型的組織(業務)中可以用來構建微服務。其解決了分布式系統中的大多數常見問題,因此,使用者可以將精力集中在商務邏輯上。

2. go-kit 組件介紹

2.1 Endpoint(端點)

Go kit首先解決了RPC訊息模式。其使用了一個抽象的 endpoint 來為每一個RPC建立模型。

endpoint通過被一個server進行實現(implement),或是被一個client調用。這是很多 Go kit組件的基本構建代碼塊。

2.2 Circuit breaker(迴路斷路器)

Circuitbreaker(迴路斷路器) 模組提供了很多流行的迴路斷路lib的端點(endpoint)適配器。迴路斷路器可以避免雪崩,並且提高了針對間歇性錯誤的彈性。每一個client的端點都應該封裝(wrapped)在迴路斷路器中。

2.3 Rate limiter(限流器)

ratelimit模組提供了到限流器程式碼封裝的端點適配器。限流器對服務端(server-client)和用戶端(client-side)同等生效。使用限流器可以強制進、出請求量在閾值上限以下。

2.4 Transport(傳輸層)

transport 模組提供了將特定的序列化演算法綁定到端點的輔助方法。當前,Go kit只針對JSON和HTTP提供了輔助方法。如果你的組織使用完整功能的傳輸層,典型的方案是使用Go在傳輸層提供的函數庫,Go kit並不需要來做太多的事情。這些情況,可以查閱代碼例子來理解如何為你的端點寫一個適配器。目前,可以查看 addsvc的代碼來理解Transport綁定是如何工作的。我們還提供了針對Thirft,gRPC,net/rpc,和http json的特殊例子。對JSON/RPC和Swagger的支援在計劃中。

2.5 Logging(日誌)

服務產生的日誌是會被延遲消費(使用)的,或者是人或者是機器(來使用)。人可能會對調試錯誤、跟蹤特殊的請求感興趣。機器可能會對統計那些有趣的事件,或是對離線處理的結果進行彙總。這兩種情況,日誌訊息的結構化和可操作性是很重要的。Go kit的log 模組針對這些實踐提供了最好的設計。

2.6 Metrics(Instrumentation)度量/儀錶盤

直到服務經過了跟蹤計數、延遲、健康情況和其他的周期性的或針對每個請求資訊的儀錶盤化,才能被認為是“生產環境”完備的。Go kit 的 metric 模組為你的服務提供了通用並健壯的介面集合。可以綁定到常用的後端服務,比如 expvar、statsd、Prometheus。

2.7 Request tracing(請求跟蹤)

隨著你的基礎設施的增長,能夠跟蹤一個請求變得越來越重要,因為它可以在多個服務中進行穿梭並回到使用者。Go kit的tracing 模組提供了為端點和傳輸的增強性的綁定功能,以捕捉關於請求的資訊,並把它們發送到跟蹤系統中。(當前支援Zipkin,計劃支援Appdash

2.8 Service discovery and load balancing(服務發現和負載平衡)

如果你的服務調用了其他的服務,需要知道如何找到它(另一個服務),並且應該智能的將負載在這些發現的執行個體上鋪開(即,讓被發現的執行個體智能的分擔服務壓力)。Go kit的 loadbalancer模組提供了用戶端端點的中介軟體來解決這類問題,無論你是使用的靜態主機名稱還是IP地址,或是 DNS的 SRV 記錄,Consul,etcd 或是 Zookeeper。並且,如果你使用定製的系統,也可以非常容易的編寫你自己的 Publisher,以使用 Go kit 提供的負載平衡策略。(目前,支援靜態主機名稱、etcd、Consul、Zookeeper)

3 目標

  • 在各種SOA架構中操作–預期會與各種非Go kit服務進行互動
  • 使用RPC作為最主要的訊息模式
  • 可插拔的序列化和傳輸–不僅僅只有JSON和HTTP
  • 簡單便可融入現有的架構–沒有任何特殊工具、技術的相關指令

4 目標之外(不考慮做的事情)

  • 支援除RPC之外的訊息模式(至少目前是)–比如 MPI、pub/sub,CQRS,等
  • 除適配現有軟體外,重新實現一些功能
  • 在營運方面進行評論:部署、配置、進程管理、服務編排等

5 依賴管理

Go kit 是一個函數庫,設計的目標是引入到二進位檔案中。對於二進位軟體包的作者來講,Vendoring是目前用來確保軟體可靠、可重新構建的最好的機制。因此,我們強烈的建議我們的使用者使用vendoring機制來管理他們軟體的依賴,包括Go kit。

為了避免相容性和可用性的問題,Go kit沒有vendor它自己的依賴,並且並不推薦使用第三方的引用代理。

有一些工具可以讓vendor機制更簡單,包括 gb、glide、gvt、govendor 和 vendetta。另外,Go kit使用了一系列的持續整合的機制來確保在儘快地修複那些複雜問題。

5 相關項目

標註有 ★ 的項目對 Go kit 的設計有著特別的影響 (反之亦然)

  1. 服務架構

    • gizmo, a microservice toolkit from The New York Times ★
    • go-micro, a microservices client/server library ★
    • gocircuit, dynamic cloud orchestration
    • gotalk, async peer communication protocol & library
    • h2, a microservices framework ★
    • Kite, a micro-service framework
  2. 獨立組件

    afex/hystrix-go, client-side latency and fault tolerance library

    armon/go-metrics, library for exporting performance and runtime metrics to external metrics systems

    codahale/lunk, structured logging in the style of Google’s Dapper or Twitter’s Zipkin

    eapache/go-resiliency, resiliency patterns

    sasbury/logging, a tagged style of logging

    grpc/grpc-go, HTTP/2 based RPC

    inconshreveable/log15, simple, powerful logging for Go ★

    mailgun/vulcand, programmatic load balancer backed by etcd

    mattheath/phosphor, distributed system tracing

    pivotal-golang/lager, an opinionated logging library

    rubyist/circuitbreaker, circuit breaker library

    Sirupsen/logrus, structured, pluggable logging for Go ★

    sourcegraph/appdash, application tracing system based on Google’s Dapper

    spacemonkeygo/monitor, data collection, monitoring, instrumentation, and Zipkin client library

    streadway/handy, net/http handler filters

    vitess/rpcplus, package rpc + context.Context

    gdamore/mangos, nanomsg implementation in pure Go

  3. Web 架構

    Beego

    Gin

    Goji

    Gorilla

    Martini

    Negroni

    Revel (considered harmful)

  4. ###其他參考

    Architecting for the Cloud — Netflix

    Dapper, a Large-Scale Distributed Systems Tracing Infrastructure— Google

    Your Server as a Function (PDF) — Twitter

相關文章

聯繫我們

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