分布式化網站遇到的典型問題

2022-05-11    分類: 網站建設

在大型分布式互聯網系統中,Session問題是典型的分布式化過程中會遇到的難題。因為Session數據必須在服務端的機器中共享,并要保證狀態(tài)的一致性。
ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,它是一個為分布式應用提供一~致性服務的軟件,所提供的功能包括:配置維護、域名服務、分布式同步、組服務等。下面我們介紹一下典型的分布式環(huán)境下遇到的一些典型問題的解決辦法。

1.集群管理(Group Membership)
ZooKeeper能夠很容易地實現集群管理的功能,如圖1.15所示。如果多臺Server組成一個服務集群,那么必須有一個“總管”知道當前集群中每臺機器的服務狀態(tài),一旦有機器不能提供服務,就必須知會集群中的其他集群,并重新分配服務策略。同樣,當集群的服務能力增加時,就會增加一臺或多臺Server, 這些也必須讓“總管”知道。
Zo0 Keeper不僅能夠維護當前集群中機器的服務狀態(tài),而且能夠選出一個“總管”,讓“總管”來管理集群一這就是 Zookeeper I的另一個功能 Leader Election。
它的實現方式是在 Zookeeper上創(chuàng)建一個 EPHEMERAL類型的目錄節(jié)點,然后每個 Server在它們創(chuàng)建目錄節(jié)點的父目錄節(jié)點上調用 getchildrenf String path, Boolean watch)方法并設置 watch為true。由于是 EPHEMERAL目錄節(jié)點,當創(chuàng)建它的 Server死去時,這個目錄節(jié)點也隨之被刪除,所以 Children將會變化;這時 get Children上的Watch將會被調用,通知其他 Server某臺 Server已死了。新增 Server也是同樣的原理。
那么,Z0 Keeper如何實現 Leader Election,也就是選出一個 Master Server呢?和前面的一樣,每臺 Server創(chuàng)建一個 EPHIEMERAL目錄節(jié)點,不同的是它還是一個SEQUENTIAL目錄節(jié)點,所以它是個 EPHEMERAL SEQUENTIAL目錄節(jié)點。之所以它是 EPHEMERAL SEQUENTIAL目錄節(jié)點,是因為我們可以給每臺 Server g編號。
我們可以選擇當前最小編號的 Server為 Master,假如這個最小編號的 Server死去,由于它是 EPHEMERAL節(jié)點,死去的 Server對應的節(jié)點也被刪除,所以在當前的節(jié)點列表中又出現一個最小編號的節(jié)點,我們就選擇這個節(jié)點為當前 Master。這樣就實現了動態(tài)選擇 Master,避免傳統上單 Master容易出現的單點故障問題。
2.共享鎖( Locks)
在同一個進程中,共享鎖很容易實現,但是在跨進程或者不同 Server的情況下就不好實現了。然而 Zookeeper能很容易地實現這個功能,它的實現方式也是通過獲得鎖的 Server創(chuàng)建一個 EPHEMERAL SEQUENTIAL目錄節(jié)點,再通過調用 getchildren方法,查詢當前的目錄節(jié)點列表中最小的目錄節(jié)點是否是自己創(chuàng)建的目錄節(jié)點,如果是自己創(chuàng)建的,那么它就獲得了這個鎖;如果不是,那么它就調用 exists(String path,Boolean watch)方法,并監(jiān)控 Zookeeper上目錄節(jié)點列表的變化,直到使自己創(chuàng)建的節(jié)點是列表中最小編號的目錄節(jié)點,從而獲得鎖。釋放鎖很簡單,只要刪除前面它自己所創(chuàng)建的目錄節(jié)點即可。
3.隊列管理
Keener可以外理以下兩種型的隊列
其一,同步隊列。即當一個隊列的成員都聚齊時,這個隊列才可用,否則一直等待所有成員到達。
其二,隊列按照FIFO方式進行入隊和出隊操作,例如實現生產者和消費者模型。用Zo0 Keeper實現同步隊列的實現思路如下。
創(chuàng)建一個父目錄/ synchronizing,每個成員都監(jiān)控標志( Set Watch)位目錄/ synchronizing/start是否存在,然后每個成員都加人這個隊列;
加人隊列的方式就是創(chuàng)建 /synchronizing/member i的臨時目錄節(jié)點,之后每個成員獲取/ synchronizing目錄的所有目錄節(jié)點,也就是 member_i;?判斷i的值是否已經是成員的個數,如果小于成員個數等待/ 'synchronizing/ start的出現,如果已經相等就創(chuàng)建 /synchronizing/star。
用 Zookeeper實現FIFO隊列的思路如下。
在特定的網站制作目錄下創(chuàng)建 SEQUENTIAL類型的子目錄 queue I,這樣就能保證所有成員加入隊列時都是有編號的;出隊列時通過 get Children()方法返回當前所有隊列中元素,再消費其中最小的一個,這樣就能保證FIFO。

當前名稱:分布式化網站遇到的典型問題
網頁URL:http://m.kartarina.com/news/151975.html

成都網站建設公司_創(chuàng)新互聯,為您提供品牌網站設計外貿網站建設全網營銷推廣做網站定制網站網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都做網站
主站蜘蛛池模板: 少妇无码一区二区三区免费| 精品欧洲AV无码一区二区男男| 国产午夜精华无码网站| 无码无遮挡又大又爽又黄的视频| 无码成人一区二区| 亚洲av日韩av高潮潮喷无码| 日韩av无码成人无码免费| 无码福利一区二区三区| 国产成人AV一区二区三区无码 | 中文字幕av无码专区第一页| 亚洲中文字幕久久精品无码APP| 国产精品久久无码一区二区三区网| 中文字幕无码视频手机免费看| 免费A级毛片无码A∨| 亚洲AV无码久久寂寞少妇| 亚洲成a人无码亚洲成www牛牛| 免费无码中文字幕A级毛片| 人妻少妇无码精品视频区| 最新无码专区视频在线| 国产AV无码专区亚洲AV漫画 | 国产成年无码AV片在线韩国| 精品久久久久久久无码久中文字幕| 十八禁无码免费网站| 亚洲av无码国产精品夜色午夜 | 国产品无码一区二区三区在线| 国产成人A人亚洲精品无码| av无码精品一区二区三区四区| 国产成人无码午夜福利软件| 中文午夜人妻无码看片| 熟妇人妻中文字幕无码老熟妇| 亚洲国产精品无码专区在线观看| 无码人妻久久久一区二区三区| 久久久久av无码免费网| 国产在线无码一区二区三区视频| 中文字幕无码乱人伦| 中文字幕无码精品亚洲资源网| 东京热加勒比无码少妇| 国产成人无码精品久久二区三区| 国精无码欧精品亚洲一区| 人妻丰满熟妇AV无码区乱| 亚洲精品无码久久久久秋霞|