https://en.wikipedia.org/wiki/Microservices
https://zh.wikipedia.org/wiki/微服務
微服務 (Microservices) 是一種軟體架構風格,它是以專注於單一責任與功能的小型功能區塊 (Small Building Blocks) 為基礎,利用模組化的方式組合出複雜的大型應用程式,各功能區塊使用與語言無關 (Language-Independent/Language agnostic) 的 API 集相互通訊。微服務架構運用於軟體架構風格的其中一項概念是甘露運算 (Dew Computing),意指由許多的小露水 (代表微服務的功能元件) 匯集而成的運算能力。
微服務的起源是由 Peter Rodgers 博士於 2005 年度雲端運算博覽會提出的微 Web 服務 (Micro-Web-Service) 開始,Juval Löwy 則是與他有類似的前導想法,將類別變成細粒服務 (granular services),以作為 Microsoft 下一階段的軟體架構,其核心想法是讓服務是由類似 Unix 管道的存取方式使用,而且複雜的服務背後是使用簡單 URI 來開放介面,任何服務,任何細粒都能被開放 (exposed)。這個設計在 HP 的實驗室被實現,具有改變複雜軟體系統的強大力量。
2014年,Martin Fowler 與 James Lewis 共同提出了微服務的概念,定義了微服務是由以單一應用程式構成的小服務,自己擁有自己的行程與輕量化處理,服務依業務功能設計,以全自動的方式部署,與其他服務使用 HTTP API 通訊。同時服務會使用最小的規模的集中管理 (例如 Docker) 能力,服務可以用不同的程式語言與資料庫等元件實作[1]。
单一职责 内聚
自治
技术异构,用最适合的技术
弹性 系统一个组件故障了,不产生级联故障
扩展仅需要扩展的部分
简化部署,各个服务独立部署
与组织结构匹配
对可替代性的优化
修改一个服务并对其部署而不影响其他任务服务