本篇內容介紹了“Go kit架構組件有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Go kit (http://gokit.io)是一個Go軟件包的集合,可以幫助您構建健壯、可靠、可維護的微服務。Go kit提供了用于實現系統可觀察性和彈性模式的組件的庫,如日志、度量、跟蹤、速率限制和斷路,這些都是在生產環境中運行微服務的基本要求。Go工具包的優點是它比較固執己見,并且設計用于不同基礎設施、消息編碼格式和傳輸層的互操作性。
除了構建微服務的工具包外,它還鼓勵在服務中應用程序架構的良好設計原則。Go工具包可以幫助你擁抱扎實的設計原則、領域驅動設計(DDD)和Alistair Cockburn提出的“六邊形架構”,或者類似的架構方法之一,即Jeffrey Palermo提出的“洋蔥架構”和Robert C. Martin提出的“清潔架構”。雖然Go kit被設計成一個微服務工具包,但它也非常適合構建優雅的整體。
在基于Gokit 的應用架構中有三個主要組件:
傳輸層
端點層
服務層
當您構建基于分布式系統的微服務時,服務通常使用具體的傳輸方式(如HTTP或gRPC)或使用發布/訂閱系統(如NATS)進行通信。Go kit中的運輸層與混凝土運輸是綁定的。Go kit支持各種傳輸服務使用HTTP, gRPC, nat, AMQP和Thrift。因為Go kit服務只專注于實現業務邏輯,而不了解具體的傳輸,所以您可以為同一個服務提供多個傳輸。例如,一個單獨的Go kit服務可以同時使用HTTP和gRPC來公開。
端點是服務器和客戶機的基本構建塊。在Go kit中,主要的消息傳遞模式是RPC。端點表示單個RPC方法。Go kit服務中的每個服務方法都轉換為一個端點,以便在服務器和客戶機之間進行RPC風格的通信。每個端點通過使用具體的傳輸(如HTTP或gRPC),使用傳輸層向外部世界公開服務方法。單個端點可以通過使用多個傳輸來公開。
業務邏輯在服務中實現。Go套件服務被建模為接口。服務中的業務邏輯包含核心業務邏輯,這些核心業務邏輯不應該包含端點或具體傳輸(如HTTP或gRPC),也不應該包含對請求和響應消息類型的編碼和解碼。這將鼓勵您為基于Go套件的服務遵循一個干凈的架構。每個服務方法通過使用適配器作為端點進行轉換,并通過使用具體的傳輸公開。由于清晰的體系結構,單個Go kit服務可以通過使用多個傳輸來公開。
以一個例子介紹Gokit讓我們通過一個示例程序來深入了解Go工具包的基礎知識。
業務邏輯在建模為接口的服務中實現。這里,我們以電子商務域訂單聚合為我們的服務建模:
訂單服務接口
“Go kit架構組件有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。