本文分為三個部分:
- 什麼是微服務
- kubernetes介紹
- 如何基於kubernetes實現微服務架構
一、微服務
微服務是一種分佈式架構設計理念,為了推動細粒度服務的使用,這些服務要能協同工作,每個服務都有自己的生命週期。微服務一般配合更細粒度的容器使用,並和雲原生有很強的關聯性。它具有3個關鍵點:
- 每一個微服務是一個獨立的自治系統,不依賴外部組件能夠獨立運行
- 對外只能通過API提供服務或者獲取服務
- 粒度足夠小
十二要素原則:
根據以上十二要素原則,如果要滿足微服務設計理念,需要滿足下列10個部件或者特性:
二、kubernetes
kubernetes是一個開源的容器雲平臺,運行在其上的最小單元為pod。pod是kubernetes中最小的可部署和管理單元。pod是對容器(可以是docker容器,也可以是rkt容器)的進一步抽象。在抽象的過程中,不僅保留了容器本身的特性和含義,還擴展了更多的特性,比如:容器重啟策略以及健康檢查等。這些特性天然的對十二要素中某些要素提供了支持。
此外,kubernetes作為一個容器雲平臺,本身提供了微服務框架所需要的(2)服務註冊和發現功能、(10)自動伸縮和自恢復功能、(9)調度和部署功能。
綜上所述,kubernetes天然的契合微服務的設計原則並默認支持了微服務的某些特性。但是kubernetes對微服務的其餘特性也是支持的,只要安裝相應的helm包即可。
三、kubernetes上實現微服務架構
- 配置中心:通過etcd可支持
- 服務註冊和服務發現:通過 kubernetes coreDNS支持
- 彈性和容錯:通過istio可支持
- api管理:通過kong/traefik可支持
- 服務安全:通過istio可支持
- 集中日誌管理:通過fluentbit+fluentd+elasticsearch+kibana可支持
- 集中監控管理:通過Prometheus可支持
- 分佈式追蹤:通過zipkin或者jaeger可支持
- 調度和部署:kubernetes本身可支持
- 自動伸縮和自恢復:kubernetes本身可支持
微服務的這十個組件模塊我會在後續的文章中一一給大家介紹分析,敬請大家關注!
下期預報:kubernetes實現服務註冊與發現
作者簡介:研華科技軟件主管,聚焦linux內核技術和k8s雲平臺架構設計。我會在這裡分享kubernetes雲平臺的架構設計。也會分享我們針對某些開源組件的優劣評估和性能測試以及優化過程。歡迎大家一起探討雲原生技術。
閱讀更多 80後程序員的世界觀 的文章