隨着應用程序體系架構的不斷發展,從大整體monolith時代進入更爲基於模型的分佈式設計時代,構建新的分佈式系統需要重新學習一些舊的設計技術,並採用一些新的模式。

下面是幾個設計關注點:

1.調度/業務流程管理,從管理數百個實例到管理成千上萬的實例需要跨主機的無縫方式統籌安排服務實例/Docker的能力。爲了處理越來越大的規模系統,工作負載調度/業務流程管理成爲分佈式系統的一個關鍵組成部分。該部分產品有 Docker Swarm, Kubernetes, Mesos, Marathon。

2.服務發現和註冊,基於容器的服務常常啓動和關閉,需要有一個機制來註冊或取消註冊服務,同時提供運行時自動發現新服務端點的機制,產品有Consul, Zookeeper, etcd, Confd, 和 Eureka,大部分這些產品支持根據請求流量對服務進行負載平衡。

3.系統狀態管理/集羣管理:當集羣規模增長時,需要管理集羣狀態,每個服務的SRV是什麼?有多少服務實例?在什麼主機上,服務的負載是多少,這些都是狀態管理,需要一個集羣管理系統跟蹤系統的這些狀態,產品有Docker Swarm Agents, Kubernetes Nodes/Masters, Mesos Slaves, Containership。

4.數據存儲,容器存儲是短暫的,意味着數據需要跨越容器的生命週期進行永久保存,產品有:Docker Volume Plugin, Flocker, Kubernetes Persistent volumes

5.網絡,每個容器運行不同的進程,需要管理隔離不同的容器服務,多個容器運行咋同樣主機上,這樣共享網絡資源需要一種安全的分組策略來隔離容器,同時,容器也要發現所在主機的服務,或跨主機尋找服務,需要一種簡單模型實現這些,產品有:

Flannel, Weaveworks, 和 Calico

6.監測/審覈/日誌。數千個容器運行,監測 審覈和日誌每個容器成爲非常棘手問題,數據日誌記錄需要從每個容器中拉出來進行分析,產品有: Loggly, Fluentd, log entries, datadog, 和 ELK stack

其他:DNS, Security, SSO/OAuth, API Gateway, 斷路器Circuit breakers, 性能和擴展性模式等等都需要考慮。

查看原文 >>
相關文章