国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

微服務化之無狀態化與容器化

seanlook / 2494人閱讀

摘要:然而在微服務化之前,建議先進行容器化,在容器化之前,建議先無狀態化,當整個流程容器化了,以后的微服務拆分才會水到渠成。

此文已由作者劉超授權網易云社區發布。

歡迎訪問網易云社區,了解更多網易技術產品運營經驗。

一、為什么要做無狀態化和容器化

很多應用拆分成微服務,是為了承載高并發,往往一個進程扛不住這么大的量,因而需要拆分成多組進程,每組進程承載特定的工作,根據并發的壓力用多個副本公共承擔流量。

將一個進程變成多組進程,每組進程多個副本,需要程序的修改支撐這種分布式的架構,如果架構不支持,僅僅在資源層創建多個副本是解決不了問題的。

很多人說,支撐雙十一是靠堆機器,誰不會?真正經歷過的會覺得,能夠靠堆機器堆出來的,都不是問題,怕的是機器堆上去了,因為架構的問題,并發量仍然上不去。

阻礙單體架構變為分布式架構的關鍵點就在于狀態的處理。如果狀態全部保存在本地,無論是本地的內存,還是本地的硬盤,都會給架構的橫向擴展帶來瓶頸。

狀態分為分發,處理,存儲幾個過程,如果對于一個用戶的所有的信息都保存在一個進程中,則從分發階段,就必須將這個用戶分發到這個進程,否則無法對這個用戶進行處理,然而當一個進程壓力很大的時候,根本無法擴容,新啟動的進程根本無法處理那些保存在原來進程的用戶的數據,不能分擔壓力。

所以要講整個架構分成兩個部分,無狀態部分和有狀態部分,而業務邏輯的部分往往作為無狀態的部分,而將狀態保存在有狀態的中間件中,如緩存,數據庫,對象存儲,大數據平臺,消息隊列等。

這樣無狀態的部分可以很容易的橫向擴展,在用戶分發的時候,可以很容易分發到新的進程進行處理,而狀態保存到后端。而后端的中間件是有狀態的,這些中間件設計之初,就考慮了擴容的時候,狀態的遷移,復制,同步等機制,不用業務層關心。

如圖所示,將架構分為兩層,無狀態和有狀態。

容器和微服務是雙胞胎,因為微服務會將單體應用拆分成很多小的應用,因而運維和持續集成會工作量變大,而容器技術能很好的解決這個問題。然而在微服務化之前,建議先進行容器化,在容器化之前,建議先無狀態化,當整個流程容器化了,以后的微服務拆分才會水到渠成。

二、無狀態化的幾個要點

前面說對于任何狀態,需要考慮它的分發,處理,存儲。

對于數據的存儲,主要包含幾類數據:

會話數據等,主要保存在內存中。

結構化數據,主要是業務邏輯相關

文件圖片數據,比較大,往往通過CDN下發

非結構化數據,例如文本,評論等

如果這些數據都保存在本地,和業務邏輯耦合在一起,就需要在數據分發的時候,將同一個用戶分到同一個進程,這樣就會影響架構的橫向擴展。

對于保存在內存里的數據,例如Session,可以放在外部統一的緩存中。

對于業務相關的數據,則應該保存在統一的數據庫中,如果性能扛不住,可以進行讀寫分離,如文章微服務化的數據庫設計與讀寫分離

如果性能還是抗住不,則可以使用分布式數據庫。

對于文件,照片之類的數據,應該存放在統一的對象存儲里面,通過CDN進行預加載,如文章微服務的接入層設計與動靜資源隔離

對于非結構化數據,可以存在在統一的搜索引擎里面,例如ElasticSearch。

如果所有的數據都放在外部的統一存儲上,則應用就成了僅僅包含業務邏輯的無狀態應用,可以進行平滑的橫向擴展。

而所有的外部統一存儲,無論是緩存,數據庫,對象存儲,搜索引擎,都有自身的分布式橫向擴展機制。

在實行了無狀態化之后,就可以將有狀態的集群集中到一起,進行跨機房的部署,實現跨機房的高可用性。而無狀態的部分可以通過Dubbo自動發現,當進程掛掉的時候,自動重啟,自動修復,也可以進行多機房的部署。

三、冪等的接口設計

但是還有一個遺留的問題,就是已經分發,正在處理,但是尚未存儲的數據,肯定會在內存中有一些,在進程重啟的時候,數據還是會丟一些的,那這部分數據怎么辦呢?

這部分就需要通過重試進行解決,當本次調用過程中失敗之后,前序的進程會進行重試,例如Dubbo就有重試機制。既然重試,就需要接口是冪等的,也即同一次交易,調用兩次轉賬1元,不能最終轉走2元。

接口分為查詢,插入,更新,刪除等操作。

對于查詢接口來講,本身就是冪等的,不用做特殊的判斷。

對于插入接口來講,如果每一個數據都有唯一的主鍵,也能保證插入的唯一性,一旦不唯一,則會報錯。

對于更新操作來講,則比較復雜,分幾種情況。

一種情況是同一個接口,前后調用多次的冪等性。另一種情況是同一個接口,并發環境下調用多次的正確性。

為了保持冪等性,往往要有一個冪等表,通過傳入冪等參數匹配冪等表中ID的方式,保證每個操作只被執行一次,而且在實行最終一致性的時候,可以通過不斷重試,保證最終接口調用的成功。

對于并發條件下,誰先調用,誰后調用,需要通過分布式鎖如Redis,Zookeeper等來實現同一個時刻只有一個請求被執行,如何保證多次執行結果仍然一致呢?則往往需要通過狀態機,每個狀態只流轉一次。還有就是樂觀鎖,也即分布式的CAS操作,將狀態的判斷、更新整合在一條語句中,可以保證狀態流轉的原子性。樂觀鎖并不保證更新一定成功,需要有對應的機制來應對更新失敗。

四、容器的技術原理

無狀態化之后,實行容器化就十分順暢了,容器的不可改變基礎設施,以及容器基于容器平臺的掛掉自動重啟,自動修復,都因為無狀態順暢無比。

關鍵技術一:Dockerfile

例如下面的Dockerfile。

為什么一定要用Dockerfile,而不建議通過保存鏡像的方式來生成鏡像呢?

這樣才能實現環境配置和環境部署代碼化 ,將Dockerfile維護在Git里面,有版本控制,并且通過自動化的build的過程來生成鏡像,而鏡像中就是環境的配置和環境的部署,要修改環境應先通過Git上面修改Dockerfile的方式進行,這就是IaC。

關鍵技術二:容器鏡像

通過Dockerfile可以生成容器鏡像,容器的鏡像是分層保存,對于Dockerfile中的每一個語句,生成一層容器鏡像,如此疊加,每一層都有UUID。

容器鏡像可以打一個版本號,放入統一的鏡像倉庫。

關鍵技術三:容器運行時

容器運行時,是將容器鏡像之上加一層可寫入層,為容器運行時所看到的文件系統。

容器運行時使用了兩種隔離的技術。

一種是看起來是隔離的技術,稱為namespace,也即每個namespace中的應用看到的是不同的IP地址、用戶空間、程號等。

另一種是用起來是隔離的技術,稱為cgroup,也即明明整臺機器有很多的CPU、內存,而一個應用只能用其中的一部分。

cgroup

網易云計算基礎服務深度整合了 IaaS、PaaS 及容器技術,提供彈性計算、DevOps 工具鏈及微服務基礎設施等服務,幫助企業解決 IT、架構及運維等問題,使企業更聚焦于業務,是新一代的云計算平臺,點擊可免費試用。

文章來源: 網易云社區

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25264.html

相關文章

  • 恕我直言,你可能誤解了服務

    摘要:劉超,網易云計算首席架構師,有多年的云計算架構與開發經歷,積累了豐富的企業級應用的微服務化,容器化實戰經驗。近日,記者對劉超進行了采訪,跟大家分享了微服務實戰的挑戰和一些常見的微服務誤解,以及他對微服務發展趨勢的判斷。 劉超,網易云計算首席架構師,有10多年的云計算架構與開發經歷,積累了豐富的企業級應用的微服務化,容器化實戰經驗。劉超將擔任今年 5 月份 QCon 全球軟件開發大會廣州...

    AlphaGooo 評論0 收藏0
  • 10倍DB交付效率,飛貸金融科技的數據庫生產容器實踐

    摘要:飛貸金融科技副總裁陳定瑋大會現場,飛貸金融科技作為金融行業數據庫容器化的典型案例,為現場的容器愛好者帶來了題為金融領域數據庫生產容器化及應用的實踐經驗分享。 2019年6月20日,由Rancher Labs(以下簡稱Rancher)主辦的第三屆企業容器創新大會(Enterprise Container Innovation Conference, 以下簡稱ECIC)在北京喜來登大酒店盛...

    BothEyes1993 評論0 收藏0
  • 海航生態科技輿情大數據平臺容器改造

    摘要:本文轉載自微信公眾號賬號,作者為海航生態科技技術研究院大數據開發工程師高顏。文章介紹了海航生態科技輿情大數據平臺的容器化改造經驗,包括初期技術架構應用容器化架構遷移持續發布與部署。 本文轉載自微信公眾號Docker(賬號:dockerone),作者為海航生態科技技術研究院大數據開發工程師高顏。 文章介紹了海航生態科技輿情大數據平臺的容器化改造經驗,包括初期技術架構、應用容器化、架構遷...

    idealcn 評論0 收藏0
  • 一招鮮吃遍天,做好混合云,這招管用

    摘要:俗語有一招鮮,吃遍天。其中,的企業正在實施多云戰略,的企業采用混合云戰略,將公有云和私有云集成在一起。隨著混合云的五個一體化由戴爾易安信在戴爾科技峰會上對外發布,其混合云的新利器也正式登臺亮相了。俗語有一招鮮,吃遍天。說的是行走江湖須得有一技之長,方能到處謀生,不會餓了肚子。時過境遷,這句話放在今天依然有效。隨著IT環境正向混合云以及多云邁進,這一過程有沒有一招鮮的方法呢?讓客戶省時省力又省...

    iOS122 評論0 收藏0

發表評論

0條評論

seanlook

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<