基於Golang的微服務——Micro架構

本系列文章知識很基礎,主要是給前端小夥伴們嘗試後端開發寫的一點當心得體會。後端大佬能夠別看了,估計會浪費你的時間。html

最開始入門就有嘗試着手 Micro前端

結果發現步子邁大了容易扯到o,而後乖乖的退回去學習Gin,從基於Go的單體服務開始。可是攻堅戰始終避免不了的,因而開始啃Micro這個架構。web

Micro是什麼

Micro中文文檔後端

我我的理解是簡化微服務開發的架構。 組成部分:api

  • API網關(API Gateway): API網關是請求的入口,把請求動態路由到具體服務。經過咱們預置的handlers插件,它能夠處理http、gRPC、websocket、消息推送事件等等。
  • 命令行接口(Interactive CLI):交互式的命令行接口。CLI經過終端能夠描述、查詢、直接與平臺和服務進行交互。
  • 服務代理(Service Proxy): 服務代理,基於Go Micro和MUCP協議構建的透明的代理服務。它將服務發現、負載均衡、消息編碼、中間件、傳輸及代理插件轉移到某一(具體服務所在)位置,同api不一樣,它不暴露任何接口,只工做在內部環境,至關於橋接內部服務
  • 模板生成(Template Generation): 基於模板快速建立新的服務代碼。
  • SlackOps小機器人(SlackOps Bot): Slack小機器人插件,當它運行中服務中時,這個插件容許開發者經過Slack消息來操做平臺。
  • 管理控制檯(Web Dashboard): 經過Web管理控制檯,能夠直接在Web頁面上查看服務的運行狀況,展現端點信息,請求與響應狀態,甚至直接向服務進行查詢。
  • Go-micro框架(Go Framework): Go Micro框架是Micro的底層、核心。GO-Micro把分佈式服務抽象,並提供簡便的方式讓你們構建具備高彈性的微服務。

附一張圖 websocket

上面描述的就是 Micro Runtime 層級的內容架構

Micro 生態

  • go-micro :基於Go語言的可插拔RPC微服務開發框架;包含服務發現、RPC客戶/服務端、廣播/訂閱機制...
  • go-plugins :go-micro的插件有etcd、kubernetes、nats、rabbitmq、grpc...
  • micro :微服務工具集包含傳統的入口點(entry point);API 網關、CLI、Slack Bot、代理及Web UI

如何才能使用Micro

  • 使用go-micro編寫服務。
  • 使用Micro工具集來訪問這些服務。

Micro包括了工具集用於查詢和訪問微服務。

  • API Gateway,API網關是獨立的http入口。
  • Web Dashboard,用於可視化管理微服務。
  • CLI,命令行接口。
  • Bot,面向Slack或HipChat訪問微服務的工具。
  • New,用於快整生成服務模板,快速開發。

Go Micro能夠幫你編寫微服務。

Go Micro抽象出分佈式系統負載均衡

  • 集成服務發佈、RPC、分發/訂閱機制、消息編碼
  • 超時容錯、重試機制、負載均衡
  • 功能可擴展
  • 可插拔的後臺交換技術

Go Config

Go Config能夠管理複雜的配置框架

  • 動態管理 - 加載配置不須要重啓
  • 可插拔 - 能夠選擇從哪一個源加載配置:文件、環境變量、consul
  • 可合併 - 針對多個配置源能夠合併並重寫
  • 回退 - 能夠指定當key不存在時設置值
  • 可觀察 - 能夠查看配置的變更

Go Plugins

go-micro與micro的插件集socket

  • 包含了絕大多數的後端技術
  • grpc, kubernetes, etcd, kafka等等
  • 通過生產環境驗證

微服務設計理念

  • 各服務要小,單一的業務目標應該是要細粒度,就像Unix的」只作一件事而且要作好」理念。
  • 組織文化要包含部署與測試的自動化,這個下降管理與操做的負擔。
  • 設計原則要包含失敗與錯誤,就像抗脆弱的系統。

微服務優勢

  • 彈性開發更簡單 - 團隊各自圍繞不一樣的業務需求,本身管理他們的服務。
  • 更易於理解 - 微服務一般要更小些,一般只有1000行代碼(國外的項目真有那麼小麼),或更少。
  • 更適合頻繁更新發布的系統 - 服務能夠獨立部署、擴展和管理。
  • 加強的容錯與隔離 - 彼此隔離以最小化彼此之間發現異常的影響。
  • 執行力更強 - 經過獨立的開發、發佈、管理微服務,團隊能夠更快交付業務需求。
  • 可複用的服務與快速原型 -微服務中由生而來的Unix設計理念,能夠容許你們複用現有服務和更快地在它之上構建全新的功能。
相關文章
相關標籤/搜索