微服務這麼火,如何選擇正確的數據存儲?

JSON 電子商務 科技 IT168企業級 IT168企業級 2017-08-29

微服務是基礎設施構建的重點,因為它提供服務解耦、數據存儲自主性,小型化開發,測試設置等等,有助於應用程序更快地上市或更新。容器及其編排工具的可用性也促進了微服務器的採用。

傳統的架構方法是在服務之間共享一個數據庫,而微服務卻與之相反,每個微服務都擁有獨立、自主、專門的數據存儲。例如,電子商務解決方案可以採用以下服務:應用服務器;、內容緩存、會話存儲;、產品目錄、 搜索和發現、 訂單處理、 訂單完成度、 分析等等。現代電子商務解決方案大多不是採用單個大型數據庫來存儲所有操作和事務數據,而是採用類似下圖的微服務架構,其中每個服務都有自己的數據庫。

微服務這麼火,如何選擇正確的數據存儲?

圖1示例電子商務解決方案中的微服務

如何為微服務器選擇數據存儲

在設計微服務器時,最重要的問題就是“如何選擇正確的數據存儲?”

選擇理想數據存儲的第一步是確定微服務數據的性質。數據可以大致分為以下幾類:

  1. 短暫數據:緩存服務器是存儲短暫數據很好的一個例子。它是一個臨時數據存儲,其目的是通過實時提供信息來改善用戶體驗。微服務通常是高性能的,並且讀取操作密集。如果企業沒有持久性的要求,它不存儲數據的主副本,但它仍然要高度可用,因為故障的產生會影響用戶體驗,繼而造成收入損失。另外,故障也會導致“緩存衝突”的問題,因為數據庫爬網速度慢,無法處理高頻訪問,這可能會導致之前完全可以避免的故障。

  2. 瞬態數據:日誌,消息和信號等數據通常以高容量和速度到達。數據提取服務通常要在將其傳遞到適當的目的地之前處理該信息。這樣的數據存儲需要支持高速寫入。如果額外的支持時間序列數據和內置JSON功能,會是一個加分項。瞬態數據的持久性要求高於短暫數據,但不如交易數據那麼高。

  3. 操作數據:從用戶會話收集的信息(如用戶個人資料,購物車內容等)被視為操作數據。微服務器需要提供更好的用戶體驗與實時反饋,即使存儲在數據庫中的數據不是永久的記錄,架構也必須盡最大努力保留數據以實現業務連續性。對於操作數據,數據持久性,一致性和可用性要求很高。通常,企業會把操作數據放在在特定的數據模型中,例如JSON,圖形,關係,鍵值等。

  4. 事務數據:從交易(如付款處理和訂單處理)收集的數據必須作為永久記錄存儲在支持強ACID控制的數據庫中。

在上圖所示的電子商務應用中,我們可以對微服務及其各自的數據存儲進行分類,如下表所示:

微服務這麼火,如何選擇正確的數據存儲?

一致性和持久性的可調性

為了優化微服務以獲得性能和數據持久性要求,一定要確認所選數據庫為數據類型提供了適當的可調參數功能。如果追求高性能,那麼純內存數據庫是理想的選擇。如果追求持久性,那麼數據複製以及磁盤或閃存上的持久性是最好的解決方案。例如,電子商務示例中的緩存服務器必須針對低延遲,高速讀取操作進行優化。基於數據的性質,數據庫不需要承受持久性。另一方面,在處理訂單時,微服務要保持數據清潔和一致。

下表顯示瞭如何根據其對原子性,一致性,隔離性和持久性的要求來配置和調整每個微服務器的數據存儲。

微服務這麼火,如何選擇正確的數據存儲?

最後,同樣重要的是評估數據庫可用的部署和編排選項,以確保所有微服務在同質環境中進行部署和管理。要查找的一些關鍵標準包括:

  1. 作為容器的可用性:由於微服務大多部署為由業務流程工具管理的容器,因此當使用數據庫作為容器時,可以獲得很好的運營效率。

  2. 雲/本地選擇:數據庫是否可在雲端或本地部署,微服務器部署在哪裡?可用於兩個部署選項的數據庫提供了更大的靈活性。

  3. 供應商鎖定:企業有時會切換業務流程工具,因此確保數據庫支持所有主流的業務流程工具是非常有必要的。

相關推薦

推薦中...