golang中什么是微服務(wù)-環(huán)球訊息

          來源:php中文網(wǎng) | 2023-01-03 10:09:38 |

          本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。


          (資料圖)

          什么是微服務(wù)

          微服務(wù)(Microservices Architecture)是一種軟件架構(gòu)風格,面向服務(wù)的體系結(jié)構(gòu)(SOA)架構(gòu)樣式的一種變體,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價值。每個服務(wù)運行在其獨立的進程中,服務(wù)與服務(wù)間采用輕量級的通信機制互相溝通(通常是基于HTTP的RESTful API)。每個服務(wù)都圍繞著具體業(yè)務(wù)進行構(gòu)建,并且能夠獨立地部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機制,對具體的一個服務(wù)而言,應(yīng)根據(jù)上下文,選擇合適的語言、工具對其進行構(gòu)建。

          微服務(wù)(或微服務(wù)架構(gòu))是一種云原生架構(gòu)方法,其中單個應(yīng)用程序由許多松散耦合且可獨立部署的較小組件或服務(wù)組成。這些服務(wù)通常

          有自己的堆棧,包括數(shù)據(jù)庫和數(shù)據(jù)模型;

          通過REST API,事件流和消息代理的組合相互通信;

          它們是按業(yè)務(wù)能力組織的,分隔服務(wù)的線通常稱為有界上下文。

          盡管有關(guān)微服務(wù)的許多討論都圍繞體系結(jié)構(gòu)定義和特征展開,但它們的價值可以通過相當簡單的業(yè)務(wù)和組織收益更普遍地理解:

          可以更輕松地更新代碼。

          團隊可以為不同的組件使用不同的堆棧。

          組件可以彼此獨立地進行縮放,從而減少了因必須縮放整個應(yīng)用程序而產(chǎn)生的浪費和成本,因為單個功能可能面臨過多的負載。

          我們?yōu)槭裁词褂梦⒎?wù)?

          這種架構(gòu)有助于我們用各部分、小型模塊描繪整個應(yīng)用程序,使其更容易理解、開發(fā)和測試;有助于我們將各個服務(wù)視為獨立且又清晰指明其用途的服務(wù)。更進一步地,它有助于保持項目架構(gòu)的一致性(最初設(shè)計的架構(gòu)和實際開發(fā)完成的架構(gòu)差別不大)。它還可以通過建立不同的獨立團隊來進行服務(wù)的部署和擴展,從而各團隊能夠并行地開發(fā)。在這個架構(gòu)中重構(gòu)代碼更容易。它也支持連續(xù)交付和部署流程(CI/CD)。

          為什么使用 go 構(gòu)建微服務(wù)?

          在深入研究這個問題之前。首先,我說一下 Golang 的優(yōu)勢。雖然 Golang 是一門新的語言,但是與其他語言相比,它有很多優(yōu)勢。用 Golang 編寫的程序更加健壯。它們能夠承受程序使用運行的服務(wù)構(gòu)建的繁重負載。Golang 更適合多處理器系統(tǒng)和 web 應(yīng)用程序。此外,它容易地與 GitHub 集成,管理非集中的代碼包。微服務(wù)架構(gòu)的用處大部分體現(xiàn)在當程序需要伸縮(scalable)時。如果有一種語言可以完全符合標準,那么它就是 Golang。原因是它繼承自 C-family 編程語言,用 Golang 編寫的組件更容易與同一家族中其他語言編寫的組件相結(jié)合。

          盡管 Go 出身于 C-family,但它比 C / C ++更高效。 它語法更簡單,有點像 Python。它穩(wěn)定語法, 自第一次公開發(fā)布以來,它沒有太大變化,也就是說它是后向兼容的。與其他語言相比,這讓 golang 占了上風。 除此之外,Golang 的性能比 python 和 java 高出不少。錦上添花的是,它又像 C/C++ 簡單的同時又易于閱讀和理解,使它成為開發(fā)微服務(wù)應(yīng)用的絕佳選擇。

          Golang中的微服務(wù)架構(gòu)框架

          下面,我們討論一下可以用于微服務(wù)架構(gòu)的框架。有以下些框架:

          Go Micro

          Go Micro 是目前為止我遇到的最流行的RPC框架。它是一個可插拔的RPC框架。Go Micro 為我們提供了以下功能:

          服務(wù)發(fā)現(xiàn): 程序自動注冊到服務(wù)發(fā)現(xiàn)系統(tǒng)

          負載均衡: 它提供了客戶端負載均衡,這有助于平衡服務(wù)實例之間的請求

          同步通信: 提供 Request/Response 傳輸層

          異步通信: 具有內(nèi)置的發(fā)布和訂閱功能

          消息編碼: 可以利用 header 中 Content-Type 進行編碼和解碼

          RPC客戶端/服務(wù)器端: 利用上述功能并提供構(gòu)建微服務(wù)需要的接口

          Go Micro 架構(gòu)由三層組成。第一層抽象為服務(wù)層。第二層為 client-server 模型層。serrver 用于編寫服務(wù)的塊組成,而 client 為我們提供接口,其唯一目的是向 server model 中編寫的服務(wù)發(fā)出請求。

          第三層有以下類型的插件:

          Broker: 在異步通信中為 message broker(消息代理)提供接口

          Codec: 用于加密或解密消息

          Registry: 提供服務(wù)搜索功能

          Selector: 在 register 上構(gòu)建了負載均衡

          Transport: Transport是服務(wù)與服務(wù)之間同步請求/響應(yīng)的通信接口

          它還提供了一個名為 Sidecar 的功能。Sidecar 使您能夠集成以Go以外的語言編寫的服務(wù)。它還為我們提供了gRPC編碼/解碼、服務(wù)注冊和HTTP 請求處理

          GO Kit

          Go Kit 是一個用于構(gòu)建微服務(wù)的編程工具包。與 Go Micro不同,它是一個可以以二進制包導(dǎo)入的庫。Go Kit 規(guī)則很簡單。如下:

          沒有全局變量

          聲明式組合

          顯式依賴

          Interface as Contracts (接口合約)

          領(lǐng)域驅(qū)動設(shè)計(DDD)

          Go Kit 提供以下代碼包:

          Authentication 鑒權(quán): BasicAuth 和 JWT

          Transport 協(xié)議: HTTP, gRPC 等

          Logging 日志: 服務(wù)中的結(jié)構(gòu)化日志接口

          Metrics 度量: CloudWatch,Statsd, Graphite等

          Tracing 分布式追蹤: Zipkin and Opentracing

          Service discovery 服務(wù)發(fā)現(xiàn): Consul, Etcd, Eureka等

          Circuitbreaker 限流熔斷: Hystrix 在 Go 語言的實現(xiàn)

          Go Kit 服務(wù)架構(gòu)如下

          Gizmo

          Gizmo 是來自《紐約時報》的一個微服務(wù)工具包。它提供了將服務(wù)器守護進程和 pubsub 守護進程放在一起的包。它公開了以下包:

          Server: 提供兩個服務(wù)器實現(xiàn): SimpleServer(HTTP)和 RPCServer(gRPC)

          Server/kit: 基于Go Kit的實驗代碼包

          Config 配置: 包含來自 JSON文件、Consul k/v 中的 JSON blob 或環(huán)境變量的配置功能

          Pubsub: 提供用于從隊列中發(fā)布和使用數(shù)據(jù)的通用接口

          Pubsub/pubsubtest: 包含發(fā)布者和訂閱者接口的測試實現(xiàn)

          Web: 用于從請求查詢和有效負載解析類型的外部函數(shù)

          Pubsub包提供了處理以下隊列的接口:

          pubsub/aws: 用于 Amazon SNS/SQS

          pubsub/gcp: 用于 Google Pubsub

          pubsub/kafka: 用于 Kafka topics

          pubsub/http: 用戶 HTTP 推送

          所以,在我看來,Gizmo 介于 Go Micro 和 Go Kit 之間。它不像 Go Micro 那樣是一個完全的黑盒。同時,它也不像 Go Kit 那么原始。它提供了更高級別的構(gòu)建組件,比如配置和 pubsub 包

          Kite

          Kite 是一個在 Go 中開發(fā)微服務(wù)的框架。它公開RPC client 和 Server 端代碼包。創(chuàng)建的服務(wù)將自動注冊到服務(wù)發(fā)現(xiàn)系統(tǒng) Kontrol。Kontrol 是用 Kite 編寫的,它本身就是一個 Kite service。這意味著 Kite 微服務(wù)在自身的環(huán)境中運行良好。如果需要將 Kite 微服務(wù)連接到另一個服務(wù)發(fā)現(xiàn)系統(tǒng),則需要定制。這是我從列表中選擇 Kite 并決定不介紹這個框架的重要原因之一

          以上就是golang中什么是微服務(wù)的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

          關(guān)鍵詞: go語言 Golang

          亚洲av第一网站久章草| 亚洲成a人片在线观| 亚洲精品美女久久久久9999| 久久香蕉国产线看观看亚洲片| 国产亚洲av人片在线观看| 无码国产亚洲日韩国精品视频一区二区三区 | 无码亚洲成a人在线观看| 91丁香亚洲综合社区| 色噜噜亚洲男人的天堂| 国产成人亚洲综合一区| 亚洲一本一道一区二区三区| 亚洲一区二区三区高清视频| 国产成人精品日本亚洲11| 亚洲已满18点击进入在线观看| 亚洲日本乱码卡2卡3卡新区| 亚洲熟妇无码AV不卡在线播放| 99亚偷拍自图区亚洲| 亚洲成av人在线观看网站| 亚洲JIZZJIZZ妇女| 国产精品亚洲综合一区在线观看| 婷婷亚洲天堂影院| 亚洲综合色自拍一区| 亚洲国产精品无码专区在线观看 | 亚洲中文字幕久久久一区| 亚洲日本一线产区和二线 | 国产综合成人亚洲区| 亚洲日韩在线第一页| 中国亚洲女人69内射少妇| 九月丁香婷婷亚洲综合色| 亚洲人成依人成综合网| 亚洲精品mv在线观看| 456亚洲人成影院在线观| 亚洲AV第一成肉网| 亚洲日韩中文在线精品第一| 亚洲精品国产字幕久久不卡 | 国产产在线精品亚洲AAVV| 亚洲综合色在线观看亚洲| 亚洲成在人线av| 亚洲日韩在线视频| 亚洲色一区二区三区四区 | 亚洲理论精品午夜电影|