124
技術社區[雲棲]
【行業觀點】如何為微服務選擇正確的數據庫
微服務成為基礎設施建設重點的原因在於它提供了服務分離、數據自主存儲、小型化開發、測試可設置等優勢,這有助於新應用程序更快地上市或迭代更新。此外,容器和容器編排工具也增加了對微服務的使用頻率。
微服務的核心摒棄了傳統架構,這使得它在服務之間共享一個單一的數據庫。相比於傳統的服務架構,微服務架構的每個微服務單元都具有獨立、自主、專用的數據存儲單元。
以一個電子商務解決方案為例,如圖所示,該方案采用的服務包括:應用服務器、內容緩存、會話存儲、產品目錄、搜索發現、訂單處理、訂單跟蹤和數據分析等等。現代電子商務解決方案不是使用大型單個數據庫來存儲所有的操作和交易數據,而是使用類似於圖1所示的微服務架構,其中每個服務都有自己的數據庫。
如何為微服務選擇數據存儲方式
“如何選擇正確的數據存儲方式”是設計微服務時最重要的問題之一。選擇正確數據存儲方式的第一步是確定微服務數據的性質。數據性質大致可以分為以下幾類:
1. 短暫數據:緩存服務器就是短暫數據存儲的一個很好的例子,它是一個臨時數據存儲,其目的是通過實時提供信息來改善用戶體驗。 微服務通常被調整為高性能,並且操作讀取頻繁,它沒有耐久性要求,因為它不存儲數據的主副本,但它又仍然必須保持高度可用,因為出現故障可能會導致用戶體驗不佳,從而影響收益。另外,故障也可能會導致“緩存衝突”問題,因為數據庫爬網速度較慢,它們無法處理高頻的訪問,反而這可能導致完全可以避免的故障出現。
2. 瞬態數據:日誌、消息和信號等數據通常以高容量和高速率實現傳輸。數據攝取服務通常在將其傳遞到適當的目的地之前處理該信息。 像這樣的數據存儲方式就需要支持高速寫入。同時,支持時間序列數據和JSON的內置功能也是一個額外的好處。對瞬態數據的耐久性要求會高於短暫數據,而低於交易數據。
3. 操作數據:從用戶會話收集的信息(如用戶個人資料,購物車內容等)被視為操作數據。微服務器為用戶提供更好的體驗並進行實時反饋。即使存儲在數據庫中的數據不是永久的,但架構也必須最大程度地保留數據以實現業務連續性。這樣就對於操作數據的持久性、一致性和可用性要求很高。一般而言,操作數據被放在特定的數據模型中,如JSON、圖形、關係、鍵值等
4. 交易數據:從類似於付款處理和訂單處理的交易收集到數據必須作為永久記錄,存儲在能夠支持強ACID控製的數據庫中。
在圖1所示的電子商務應用中,我們可以對微服務及其各自的數據存儲方式進行分類,如下表所示:
一致性和耐用性的可調度
為了達到優化微服務以獲得高性能和數據耐久性要求,務必要確認所選數據庫能夠為當前數據類別提供適當的可調參數。對於高性能而言,純內存的數據庫是理想的選擇。對於數據耐久性而言,讓數據複製以及磁盤閃存耐久是最好的解決辦法。例如,電子商務示例中的緩存服務器必須針對低延遲、高速讀取操作進行優化。基於數據的性質,數據庫不需要承受耐久性考驗。另一方麵,訂單跟蹤微服務重點是保持數據清晰和一致。
下表顯示了如何基於對數據的原則性、一致性、隔離性和耐久性的要求來配置和調整每個微服務器的數據存儲方式。
最後但也同樣重要的是評估數據庫可用的部署方法和編排選項,以確保能夠讓所有微服務在同一種環境中被部署和管理。以下是要查找的一些關鍵標準:
1. 作為容器的可用性:由於微服務大多都部署為由編排工具所管理的容器,所以當使用數據庫作為容器時,可以獲得很好的運營效率。
2. 雲端/本地化選擇:數據庫是否可用於雲端或本地,微服務器部署在哪裏? 可用於兩個部署選項的數據庫為此提供了更大的靈活性。
3. 鎖定供應商:組織有時會切換編排工具,因此確保數據庫支持所有流行的編排工具對鎖定供應商非常有幫助。
關於Ghostcloud
Ghostcloud(中文名:精靈雲)坐落於成都天府軟件園,是成都高新區重點扶持企業,國內首批從事容器虛擬化研發的企業,是西南地區唯一一家基於Docker的雲計算服務商,為企業級行業客戶提供針對互聯網化、私有雲管理平台、大數據業務基礎架構的平台服務。
Ghostcloud因容器技術而生,以最新容器技術Docker為基礎,為適應不同行業客戶需求,全自主研發了一套調度引擎框架Newben,且全方位適配Kubernetes主流開源調度引擎,也是國內率先實現雙調度引擎的企業,是一流的企業級容器雲服務專家。Ghostcloud推出了企業級容器雲PaaS/CaaS平台,命名為EcOS(EnterpriseContainer Operation System)。Ghostcloud將EcOS平台與微服務/DevOps相融合,運用至企業IT係統的全生命周期的開發、測試、運維及發布流程中,**致力於為多個領域企業向“互聯網+”轉型提供針對互聯網化、私有雲管理平台、大數據業務基礎架構的平台服務,幫助企業級客戶降低成本、提升效率、簡化運維及產品部署,並提升係統的可靠性和安全性。**
最後更新:2017-09-02 01:32:55