最近很常看到這個詞: Service Mesh
,源自於 Buoyant
- CEO Willian Morgan 在 APRIL 25, 2017 發表的文章: What’s a service mesh? And why do I need one?
Mesh
可以翻譯為:網、網狀物
Service Mesh
中文翻譯成 服務網格
,可以這樣解釋:
- 一種基礎架構 (infrastructure layer) 的服務,負責處理的是 Service 跟 Service 之間通訊的安全、可靠、速度。
- 現代網路的基礎協議是 TCP/IP,Microservice 的通訊就是 Service Mesh
Microservice 雖然聽起來很美好、很流行、很夯、很潮,實踐上都會用語言重新造輪子,像是認證、Discover、可靠機制 … 等,像是 Java 的 Spring Cloud
。但微服務實際上只是一種方法、手段,技術是要解決問題,滿足商業目標。
技術上來講,跟這些類似:
-
API Gateway
- Reverse Proxy
- Enterprise Service Bus (ESB)
但實際上,概念卻是不一樣的。
寫 Web App ,實際上只要知道 HTTP,卻不需要知道 TCP 概念是一樣的。
演進過程,出現過 Sidecar
這樣的名稱,負責類似的事情。
最後出現了 Service Mesh
目前比較有名的實作有:
-
Linkerd
: 來自 Buoyant, written Scala (JVM), 已加入
CNCF
-
Istio
: 來自 Goolgle、IBM、Lyft 共同協作 (富爸爸)。支援 k8s
-
Envoy
: 來自 Lyft, written by C++, 已加入
CNCF
-
nginmesh
: Nginx 的實作
小節 Service Mesh:
- Service Mesh 是通用組件
- 解決 Microservice 之間通訊的問題,包含 Discover, Security, Reliability, Traffic Control
-
Service Mesh 跟 API Gateway 是不一樣的。前者是內部服務溝通,後者是外部溝通節點。詳細參考: Service Mesh vs API Gateway
- 兩者個功能面有些重疊,都有 observability, logging, traffic control, auth … 等功能
原文
http://rickhw.github.io/2018/02/06/Terms/Service-Mesh/