中文字幕人妻中文_99精品欧美一区二区三区综合在线_精品久久久久一区二区_色月丁香_免费福利在线视频_欧美大片免费观看网址_国产伦精品一区二区三区在线播放_污污污污污污www网站免费_久久月本道色综合久久_色69激情爱久久_尹人香蕉久久99天天拍_国产美女www_亚洲国产精品无码7777一线_五月婷婷六月激情_看免费一级片_精品久久久久久成人av_在线色亚洲_女人另类性混交zo_国产精品青青在线观看爽香蕉_人人澡人人添人人爽一区二区

主頁 > 知識庫 > NoSQL數據庫的分布式算法詳解

NoSQL數據庫的分布式算法詳解

熱門標簽:西安電話自動外呼系統 電話機器人怎么看余額 長沙外呼系統平臺 怎么修改高德地圖標注 合肥crm外呼系統加盟 硅基電話機器人官網 城市地圖標志怎么標注 漯河電銷回撥外呼系統 美國地圖標注軟件下載

今天,我們將研究一些分布式策略,比如故障檢測中的復制,這些策略用黑體字標出,被分為三段:

  • 數據一致性。NoSQL需要在分布式系統的一致性,容錯性和性能,低延遲及高可用之間作出權衡,一般來說,數據一致性是一個必選項,所以這一節主要是關于 數據復制 和 數據恢復 。
  • 數據放置。一個數據庫產品應該能夠應對不同的數據分布,集群拓撲和硬件配置。在這一節我們將討論如何 分布 以及 調整數據分布 才能夠能夠及時解決故障,提供持久化保證,高效查詢和保證集訓中的資源(如內存和硬盤空間)得到均衡使用。
  • 對等系統。像 leader election 這樣的的技術已經被用于多個數據庫產品以實現容錯和數據強一致性。然而,即使是分散的的數據庫(無中心)也要跟蹤它們的全局狀態,檢測故障和拓撲變化。這一節將介紹幾種使系統保持一致狀態的技術。System Coordination. Coordination techniques like leader election are used in

數據一致性

眾所周知,分布式系統經常會遇到網絡隔離或是延遲的情況,在這種情況下隔離的部分是不可用的,因此要保持高可用性而不犧牲一致性是不可能的。這一事實通常被稱作“CAP理論”。然而,一致性在分布式系統中是一個非常昂貴的東西,所以經常需要在這上面做一些讓步,不只是針對可用性,還有多種權衡。為了研究這些權衡,我們注意到分布式系統的一致性問題是由數據隔離和復制引起的,所以我們將從研究復制的特點開始:

  • 可用性。在網絡隔離的情況下剩余部分仍然可以應對讀寫請求。
  • 讀寫延遲。讀寫請求能夠在短時間內處理。
  • 讀寫延展性。讀寫的壓力可由多個節點均衡分擔。
  • 容錯性。對于讀寫請求的處理不依賴于任何一個特定節點。
  • 數據持久性。特定條件下的節點故障不會造成數據丟失。

一致性。一致性比前面幾個特性都要復雜得多,我們需要詳細討論一下幾種不同的觀點。 但是我們不會涉及過多的一致性理論和并發模型,因為這已經超出了本文的范疇,我只會使用一些簡單特點構成的精簡體系。

讀寫一致性。從讀寫的觀點來看,數據庫的基本目標是使副本趨同的時間盡可能短(即更新傳遞到所有副本的時間),保證最終一致性。除了這個較弱的保證,還有一些更強的一致性特點:

寫后讀一致性。在數據項X上寫操作的效果總是能夠被后續的X上的讀操作看見。

讀后讀一致性。在一次對數據項X的讀操作之后,后續對X的讀操作應該返回與第一次的返回值相同或是更加新的值。

寫一致性。分區的數據庫經常會發生寫沖突。數據庫應當能處理這種沖突并保證多個寫請求不會被不同的分區所處理。這方面數據庫提供了幾種不同的一致性模型:

原子寫。假如數據庫提供了API,一次寫操作只能是一個單獨的原子性的賦值,避免寫沖突的辦法是找出每個數據的“最新版本”。這使得所有的節點都能夠在更新結束時獲得同一版本,而與更新的順序無關,網絡故障和延遲經常造成各節點更新順序不一致。 數據版本可以用時間戳或是用戶指定的值來表示。Cassandra用的就是這種方法。

原子化的讀-改-寫。應用有時候需要進行 讀-改-寫 序列操作而非單獨的原子寫操作。假如有兩個客戶端讀取了同一版本的數據,修改并且把修改后的數據寫回,按照原子寫模型,時間上比較靠后的那一次更新將會覆蓋前一次。這種行為在某些情況下是不正確的(例如,兩個客戶端往同一個列表值中添加新值)。數據庫提供了至少兩種解決方法:

沖突預防。 讀-改-寫 可以被認為是一種特殊情況下的事務,所以分布式鎖或是 PAXOS [20, 21] 這樣的一致協議都可以解決這種問題。這種技術支持原子讀改寫語義和任意隔離級別的事務。另一種方法是避免分布式的并發寫操作,將對特定數據項的所有寫操作路由到單個節點上(可以是全局主節點或者分區主節點)。為了避免沖突,數據庫必須犧牲網絡隔離情況下的可用性。這種方法常用于許多提供強一致性保證的系統(例如大多數關系數據庫,HBase,MongoDB)。

沖突檢測。數據庫跟蹤并發更新的沖突,并選擇回滾其中之一或是維持兩個版本交由客戶端解決。并發更新通常用向量時鐘 [19] (這是一種樂觀鎖)來跟蹤,或者維護一個完整的版本歷史。這個方法用于 Riak, Voldemort, CouchDB.

現在讓我們仔細看看常用的復制技術,并按照描述的特點給他們分一下類。第一幅圖描繪了不同技術之間的邏輯關系和不同技術在系統的一致性、擴展性、可用性、延遲性之間的權衡坐標。 第二張圖詳細描繪了每個技術。

復本因子是4。讀寫協調者可以是一個外部客戶端或是一個內部代理節點。

我們會依據一致性從弱到強把所有的技術過一遍:

(A, 反熵) 一致性最弱,基于策略如下。寫操作的時候選擇任意一個節點更新,在讀的時候如果新數據還沒有通過后臺的反熵協議傳遞到讀的那個節點,那么讀到的仍然是舊數據。(下一節會詳細介紹反熵協議)。這種方法的主要特點是:

過高的傳播延遲使它在數據同步方面不太好用,所以比較典型的用法是只作為輔助性的功能來檢測和修復計劃外的不一致。Cassandra就使用了反熵算法來在各節點之間傳遞數據庫拓撲和其他一些元數據信息。

一致性保證較弱:即使在沒有發生故障的情況下,也會出現寫沖突與讀寫不一致。

在網絡隔離下的高可用和健壯性。用異步的批處理替代了逐個更新,這使得性能表現優異。

持久性保障較弱因為新的數據最初只有單個副本。

(B) 對上面模式的一個改進是在任意一個節點收到更新數據請求的同時異步的發送更新給所有可用節點。這也被認為是定向的反熵。

與純粹的反熵相比,這種做法只用一點小小的性能犧牲就極大地提高了一致性。然而,正式一致性和持久性保持不變。

假如某些節點因為網絡故障或是節點失效在當時是不可用的,更新最終也會通過反熵傳播過程來傳遞到該節點。

(C) 在前一個模式中,使用提示移交技術 [8] 可以更好地處理某個節點的操作失敗。對于失效節點的預期更新被記錄在額外的代理節點上,并且標明一旦特點節點可用就要將更新傳遞給該節點。這樣做提高了一致性,降低了復制收斂時間。

(D, 一次性讀寫)因為提示移交的責任節點也有可能在將更新傳遞出去之前就已經失效,在這種情況下就有必要通過所謂的讀修復來保證一致性。每個讀操作都會啟動一個異步過程,向存儲這條數據的所有節點請求一份數據摘要(像簽名或者hash),如果發現各節點返回的摘要不一致則統一各節點上的數據版本。我們用一次性讀寫來命名組合了A、B、C、D的技術- 他們都沒有提供嚴格的一致性保證,但是作為一個自備的方法已經可以用于實踐了。

(E, 讀若干寫若干) 上面的策略是降低了復制收斂時間的啟發式增強。為了保證更強的一致性,必須犧牲可用性來保證一定的讀寫重疊。 通常的做法是同時寫入W個副本而不是一個,讀的時候也要讀R個副本。

首先,可以配置寫副本數W>1。

其次,因為R+W>N,寫入的節點和讀取的節點之間必然會有重疊,所以讀取的多個數據副本里至少會有一個是比較新的數據(上面的圖中 W=2, R=3, N=4 )。這樣在讀寫請求依序進行的時候(寫執行完再讀)能夠保證一致性(對于單個用戶的讀寫一致性),但是不能保障全局的讀一致性。用下面圖示里的例子來看,R=2,W=2,N=3,因為寫操作對于兩個副本的更新是非事務的,在更新沒有完成的時候讀就可能讀到兩個都是舊值或者一新一舊:

對于某種讀延遲的要求,設置R和W的不同值可以調整寫延遲與持久性,反之亦然。

如果W=N/2,并發的多個寫入會寫到不同的若干節點(如,寫操作A寫前N/2個,B寫后N/2個)。 設置 W>N/2 可以保證在符合回滾模型的原子讀改寫時及時檢測到沖突。

嚴格來講,這種模式雖然可以容忍個別節點的失效, 但是對于網絡隔離的容錯性并不好。在實踐中,常使用”近似數量通過“這樣的方法,通過犧牲一致性來提高某些情景下的可用性。

(F, 讀全部寫若干)讀一致性問題可以通過在讀數據的時候訪問所有副本(讀數據或者檢查摘要)來減輕。這確保了只要有至少一個節點上的數據更新新的數據就能被讀取者看到。但是在網絡隔離的情況下這種保證就不能起到作用了。

(G, 主從) 這種技術常被用來提供原子寫或者 沖突檢測持久級別的讀改寫。為了實現沖突預防級別,必須要用一種集中管理方式或者是鎖。最簡單的策略是用主從異步復制。對于特定數據項的寫操作全部被路由到一個中心節點,并在上面順序執行。這種情況下主節點會成為瓶頸,所以必須要將數據劃分成一個個獨立的片區(不同片有不同的master),這樣才能提供擴展性。

(H, Transactional Read Quorum Write Quorum and Read One Write All) 更新多個副本的方法可以通過使用事務控制技術來避免寫沖突。 眾所周知的方法是使用兩階段提交協議。但兩階段提交并不是完全可靠的,因為協調者失效可能會造成資源阻塞。 PAXOS提交協議 [20, 21] 是更可靠的選擇,但會損失一點性能。 在這個基礎上再向前一小步就是讀一個副本寫所有副本,這種方法把所有副本的更新放在一個事務中,它提供了強容錯一致性但會損失掉一些性能和可用性。

上面分析中的一些權衡有必要再強調一下:

一致性與可用性。 嚴密的權衡已經由CAP理論給出了。在網絡隔離的情況下,數據庫要么將數據集中,要么既要接受數據丟失的風險。
一致性與擴展性。 看得出即使讀寫一致性保證降低了副本集的擴展性,只有在原子寫模型中才可以以一種相對可擴展的方式處理寫沖突。原子讀改寫模型通過給數據加上臨時性的全局鎖來避免沖突。這表明, 數據或操作之間的依賴,即使是很小范圍內或很短時間的,也會損害擴展性。所以精心設計數據模型,將數據分片分開存放對于擴展性非常重要。
一致性與延遲。 如上所述,當數據庫需要提供強一致性或者持久性的時候應該偏向于讀寫所有副本技術。但是很明顯一致性與請求延遲成反比,所以使用若干副本技術會是比較中允的辦法。
故障轉移與一致性/擴展性/延遲。 有趣的是容錯性與一致性、擴展性、延遲的取舍沖突并不劇烈。通過合理的放棄一些性能與一致性,集群可以容忍多達 up to 的節點失效。這種折中在兩階段提交與 PAXOS 協議的區別里體現得很明顯。這種折中的另一個例子是增加特定的一致性保障,比如使用嚴格會話進程的“讀己所寫”,但這又增加了故障轉移的復雜性 [22]。
反熵協議, 謠言傳播算法

讓我們從以下場景開始:

有許多節點,每條數據會在其中的若干的節點上面存有副本。每個節點都可以單獨處理更新請求,每個節點定期和其他節點同步狀態,如此一段時間之后所有的副本都會趨向一致。同步過程是怎樣進行的?同步何時開始?怎樣選擇同步的對象?怎么交換數據?我們假定兩個節點總是用較新版本的數據覆蓋舊的數據或者兩個版本都保留以待應用層處理。

這個問題常見于數據一致性維護和集群狀態同步(如集群成員信息傳播)等場景。雖然引入一個監控數據庫并制定同步計劃的協調者可以解決這個問題,但是去中心化的數據庫能夠提供更好的容錯性。去中心化的主要做法是利用精心設計的傳染協議[7],這種協議相對簡單,但是提供了很好的收斂時間,而且能夠容忍任何節點的失效和網絡隔離。盡管有許多類型的傳染算法,我們只關注反熵協議,因為NoSQL數據庫都在使用它。

反熵協議假定同步會按照一個固定進度表執行,每個節點定期隨機或是按照某種規則選擇另外一個節點交換數據,消除差異。有三種反風格的反熵協議:推,拉和混合。推協議的原理是簡單選取一個隨機節點然后把數據狀態發送過去。在真實應用中將全部數據都推送出去顯然是愚蠢的,所以節點一般按照下圖所示的方式工作。


節點A作為同步發起者準備好一份數據摘要,里面包含了A上數據的指紋。節點B接收到摘要之后將摘要中的數據與本地數據進行比較,并將數據差異做成一份摘要返回給A。最后,A發送一個更新給B,B再更新數據。拉方式和混合方式的協議與此類似,就如上圖所示的。

反熵協議提供了足夠好的收斂時間和擴展性。下圖展示了一個在100個節點的集群中傳播一個更新的模擬結果。在每次迭代中,每個節點只與一個隨機選取的對等節點發生聯系。

可以看到,拉方式的收斂性比推方式更好,這可以從理論上得到證明[7]。而且推方式還存在一個“收斂尾巴”的問題。在多次迭代之后,盡管幾乎遍歷到了所有的節點,但還是有很少的一部分沒受到影響。與單純的推和拉方式相比, 混合方式的效率更高,所以實際應用中通常使用這種方式。反熵是可擴展的,因為平均轉換時間以集群規模的對數函數形式增長。

盡管這些技術看起來很簡單,仍然有許多研究關注于不同約束條件下反熵協議的性能表現。其中之一通過一種更有效的結構使用網絡拓撲來取代隨機選取 [10] 。在網絡帶寬有限的條件下調整傳輸率或使用先進的規則來選取要同步的數據 [9]。摘要計算也面臨挑戰,數據庫會維護一份最近更新的日志以有助于摘要計算。

最終一致數據類型Eventually Consistent Data Types

在上一節我們假定兩個節點總是合并他們的數據版本。但要解決更新沖突并不容易,讓所有副本都最終達到一個語義上正確的值出乎意料的難。一個眾所周知的例子是Amazon Dynamo數據庫[8]中已經刪除的條目可以重現。

我們假設一個例子來說明這個問題:數據庫維護一個邏輯上的全局計數器,每個節點可以增加或者減少計數。雖然每個節點可以在本地維護一個自己的值,但這些本地計數卻不能通過簡單的加減來合并。假設這樣一個例子:有三個節點A、B和C,每個節點執行了一次加操作。如果A從B獲得一個值,并且加到本地副本上,然后C從B獲得值,然后C再從A獲得值,那么C最后的值是4,而這是錯誤的。解決這個問題的方法是用一個類似于向量時鐘[19]的數據結構為每個節點維護一對計數器[1]:

1 class Counter { 2 int[] plus 3 int[] minus 4 int NODE_ID 5 6 increment() { 7 plus[NODE_ID]++ 8 } 9 10 decrement() { 11 minus[NODE_ID]++ 12 } 13 14 get() { 15 return sum(plus) – sum(minus) 16 } 17 18 merge(Counter other) { 19 for i in 1..MAX_ID { 20 plus[i] = max(plus[i], other.plus[i]) 21 minus[i] = max(minus[i], other.minus[i]) 22 } 23 } 24 }

Cassandra用類似的方法計數[11]。利用基于狀態的或是基于操作的復制理論也可以設計出更復雜的最終一致的數據結構。例如,[1]中就提及了一系列這樣的數據結構,包括:

  • 計數器(加減操作)
  • 集合(添加和移除操作)
  • 圖(增加邊或頂點,移除邊或頂點)
  • 列表(插入某位置或者移除某位置)

最終一致數據類型的功能通常是有限的,還會帶來額外的性能開銷。

數據放置

這部分主要關注控制在分布式數據庫中放置數據的算法。這些算法負責把數據項映射到合適的物理節點上,在節點間遷移數據以及像內存這樣的資源的全局調配。

均衡數據

我們還是從一個簡單的協議開始,它可以提供集群節點間無縫的數據遷移。這常發生于像集群擴容(加入新節點),故障轉移(一些節點宕機)或是均衡數據(數據在節點間的分布不均衡)這樣的場景。如下圖A中所描繪的場景 – 有三個節點,數據隨便分布在三個節點上(假設數據都是key-value型)。


如果數據庫不支持數據內部均衡,就要在每個節點上發布數據庫實例,如上面圖B所示。這需要手動進行集群擴展,停掉要遷移的數據庫實例,把它轉移到新節點上,再在新節點上啟動,如圖C所示。盡管數據庫能夠監控到每一條記錄,包括MongoDB, Oracle Coherence, 和還在開發中的 Redis Cluster 在內的許多系統仍然使用的是自動均衡技術。也即,將數據分片并把每個數據分片作為遷移的最小單位,這是基于效率的考慮。很明顯分片數會比節點數多,數據分片可以在各節點間平均分布。按照一種簡單的協議即可實現無縫數據遷移,這個協議可以在遷移數據分片的時候重定向客戶的數據遷出節點和遷入節點。下圖描繪了一個Redis Cluster中實現的get(key)邏輯的狀態機。

假定每個節點都知道集群拓撲,能夠把任意key映射到相應的數據分片,把數據分片映射到節點。如果節點判斷被請求的key屬于本地分片,就會在本地查找(上圖中上面的方框)。假如節點判斷請求的key屬于另一個節點X,他會發送一個永久重定向命令給客戶端(上圖中下方的方框)。永久重定向意味著客戶端可以緩存分片和節點間的映射關系。如果分片遷移正在進行,遷出節點和遷入節點會標記相應的分片并且將分片的數據加鎖逐條加鎖然后開始移動。遷出節點首先會在本地查找key,如果沒有找到,重定向客戶端到遷入節點,假如key已經遷移完畢的話。這種重定向是一次性的,并且不能被緩存。遷入節點在本地處理重定向,但定期查詢在遷移還沒完成前被永久重定向。

動態環境中的數據分片和復制

我們關注的另一個問題是怎么把記錄映射到物理節點。比較直接的方法是用一張表來記錄每個范圍的key與節點的映射關系,一個范圍的key對應到一個節點,或者用key的hash值與節點數取模得到的值作為節點ID。但是hash取模的方法在集群發生更改的情況下就不是很好用,因為增加或者減少節點都會引起集群內的數據徹底重排。導致很難進行復制和故障恢復。

有許多方法在復制和故障恢復的角度進行了增強。最著名的就是一致性hash。網上已經有很多關于一致性hash的介紹了,所以在這里我只提供一個基本介紹,僅僅為了文章內容的完整性。下圖描繪了一致性hash的基本原理:


一致性hash從根本上來講是一個鍵值映射結構 – 它把鍵(通常是hash過的)映射到物理節點。鍵經過hash之后的取值空間是一個有序的定長二進制字符串,很顯然每個在此范圍內的鍵都會被映射到圖A中 A、B、C三個節點中的某一個。為了副本復制,將取值空間閉合成一個環,沿環順時針前行直到所有副本都被映射到合適的節點上,如圖B所示。換句話說,Y將被定位在節點B上,因為它在B的范圍內,第一個副本應該放置在C,第二個副本放置在A,以此類推。

這種結構的好處體現在增加或減少一個節點的時候,因為它只會引起臨接區域的數據重新均衡。如圖C所示,節點D的加入只會對數據項X產生影響而對Y無影響。同樣,移除節點B(或者B失效)只會影響Y和X的副本,而不會對X自身造成影響。但是,正如參考資料[8]中所提到的,這種做法在帶來好處的同時也有弱點,那就是重新均衡的負擔都由鄰節點承受了,它們將移動大量的數據。通過將每個節點映射到多個范圍而不是一個范圍可以一定程度上減輕這個問題帶來的不利影響,如圖D所示。這是一個折中,它避免了重新均衡數據時負載過于集中,但是與基于模塊的映射相比,保持了總均衡數量適當降低。

給大規模的集群維護一個完整連貫的hash環很不容易。對于相對小一點的數據庫集群就不會有問題,研究如何在對等網絡中將數據放置與網絡路由結合起來很有意思。一個比較好的例子是Chord算法,它使環的完整性讓步于單個節點的查找效率。Chord算法也使用了環映射鍵到節點的理念,在這方面和一致性hash很相似。不同的是,一個特定節點維護一個短列表,列表中的節點在環上的邏輯位置是指數增長的(如下圖)。這使得可以使用二分搜索只需要幾次網絡跳躍就可以定位一個鍵。

這張圖畫的是一個由16個節點組成的集群,描繪了節點A是如何查找放在節點D上的key的。 (A) 描繪了路由,(B) 描繪了環針對節點A、B、C的局部圖像。在參考資料[15]中有更多關于分散式系統中的數據復制的內容。

按照多個屬性的數據分片

當只需要通過主鍵來訪問數據的時候,一致性hash的數據放置策略很有效,但是當需要按照多個屬性來查詢的時候事情就會復雜得多。一種簡單的做法(MongoDB使用的)是用主鍵來分布數據而不考慮其他屬性。這樣做的結果是依據主鍵的查詢可以被路由到接個合適的節點上,但是對其他查詢的處理就要遍歷集群的所有節點。查詢效率的不均衡造成下面的問題:

有一個數據集,其中的每條數據都有若干屬性和相應的值。是否有一種數據分布策略能夠使得限定了任意多個屬性的查詢會被交予盡量少的幾個節點執行?

HyperDex數據庫提供了一種解決方案。基本思想是把每個屬性視作多維空間中的一個軸,將空間中的區域映射到物理節點上。一次查詢會被對應到一個由空間中多個相鄰區域組成的超平面,所以只有這些區域與該查詢有關。讓我們看看參考資料[6]中的一個例子:


每一條數據都是一條用戶信息,有三個屬性First Name 、Last Name 和Phone Number。這些屬性被視作一個三維空間,可行的數據分布策略是將每個象限映射到一個物理節點。像“First Name = John”這樣的查詢對應到一個貫穿4個象限的平面,也即只有4個節點會參與處理此次查詢。有兩個屬性限制的查詢對應于一條貫穿兩個象限的直線,如上圖所示,因此只有2個節點會參與處理。

這個方法的問題是空間象限會呈屬性數的指數函數增長。結果就會是,只有幾個屬性限制的查詢會投射到許多個空間區域,也即許多臺服務器。將一個屬性較多的數據項拆分成幾個屬性相對較少的子項,并將每個子項都映射到一個獨立的子空間,而不是將整條數據映射到一個多維空間,這樣可以一定程度上緩解這個問題:


這樣能夠提供更好的查詢到節點的映射,但是增加了集群協調的復雜度,因為這種情況下一條數據會散布在多個獨立的子空間,而每個子空間都對應各自的若干個物理節點,數據更新時就必須考慮事務問題。參考資料 [6]有這種技術的更多介紹和實現細節。

鈍化副本

有的應用有很強的隨機讀取要求,這就需要把所有數據放在內存里。在這種情況下,將數據分片并把每個分片主從復制通常需要兩倍以上的內存,因為每個數據都要在主節點和從節點上各有一份。為了在主節點失效的時候起到代替作用,從節點上的內存大小應該和主節點一樣。如果系統能夠容忍節點失效的時候出現短暫中斷或性能下降,也可以不要分片。

下面的圖描繪了4個節點上的16個分片,每個分片都有一份在內存里,副本存在硬盤上:


灰色箭頭突出了節點2上的分片復制。其他節點上的分片也是同樣復制的。紅色箭頭描繪了在節點2失效的情況下副本怎樣加載進內存。集群內副本的均勻分布使得只需要預留很少的內存就可以存放節點失效情況下激活的副本。在上面的圖里,集群只預留了1/3的內存就可以承受單個節點的失效。特別要指出的是副本的激活(從硬盤加載入內存)會花費一些時間,這會造成短時間的性能下降或者正在恢復中的那部分數據服務中斷。

系統協調

在這部分我們將討論與系統協調相關的兩種技術。分布式協調是一個比較大的領域,數十年以來有很多人對此進行了深入的研究。這篇文章里只涉及兩種已經投入實用的技術。關于分布式鎖,consensus協議以及其他一些基礎技術的內容可以在很多書或者網絡資源中找到,也可以去看參考資料[17, 18, 21]。

故障檢測

故障檢測是任何一個擁有容錯性的分布式系統的基本功能。實際上所有的故障檢測協議都基于心跳通訊機制,原理很簡單,被監控的組件定期發送心跳信息給監控進程(或者由監控進程輪詢被監控組件),如果有一段時間沒有收到心跳信息就被認為失效了。除此之外,真正的分布式系統還要有另外一些功能要求:

自適應。故障檢測應該能夠應對暫時的網絡故障和延遲,以及集群拓撲、負載和帶寬的變化。但這有很大難度,因為沒有辦法去分辨一個長時間沒有響應的進程到底是不是真的失效了,因此,故障檢測需要權衡故障識別時間(花多長時間才能識別一個真正的故障,也即一個進程失去響應多久之后會被認為是失效)和虛假警報率之間的輕重。這個權衡因子應該能夠動態自動調整。

靈活性。乍看上去,故障檢測只需要輸出一個表明被監控進程是否處于工作狀態的布爾值,但在實際應用中這是不夠的。我們來看參考資料[12]中的一個類似MapReduce的例子。有一個由一個主節點和若干工作節點組成的分布式應用,主節點維護一個作業列表,并將列表中的作業分配給工作節點。主節點能夠區分不同程度的失敗。如果主節點懷疑某個工作節點掛了,他就不會再給這個節點分配作業。其次,隨著時間推移,如果沒有收到該節點的心跳信息,主節點就會把運行在這個節點上的作業重新分配給別的節點。最后,主節點確認這個節點已經失效,并釋放所有相關資源。

可擴展性和健壯性。失敗檢測作為一個系統功能應該能夠隨著系統的擴大而擴展。他應該是健壯和一致的,也即,即使在發生通訊故障的情況下,系統中的所有節點都應該有一個一致的看法(即所有節點都應該知道哪些節點是不可用的,那些節點是可用的,各節點對此的認知不能發生沖突,不能出現一部分節點知道某節點A不可用,而另一部分節點不知道的情況)

所謂的累計失效檢測器[12]可以解決前兩個問題,Cassandra[16]對它進行了一些修改并應用在產品中。其基本工作流程如下:

對于每一個被監控資源,檢測器記錄心跳信息到達時間Ti。

計算在統計預測范圍內的到達時間的均值和方差。

假定到達時間的分布已知(下圖包括一個正態分布的公式),我們可以計算心跳延遲(當前時間t_now和上一次到達時間Tc之間的差值) 的概率,用這個概率來判斷是否發生故障。如參考資料[12]中所建議的,可以使用對數函數來調整它以提高可用性。在這種情況下,輸出1意味著判斷錯誤(認為節點失效)的概率是10%,2意味著1%,以此類推。


根據重要程度不同來分層次組織監控區,各區域之間通過謠言傳播協議或者中央容錯庫同步,這樣可以滿足擴展性的要求,又可以防止心跳信息在網絡中泛濫[14]。如下圖所示(6個故障檢測器組成了兩個區域,互相之間通過謠言傳播協議或者像ZooKeeper這樣的健壯性庫來聯系):

協調者競選

協調者競選是用于強一致性數據庫的一個重要技術。首先,它可以組織主從結構的系統中主節點的故障恢復。其次,在網絡隔離的情況下,它可以斷開處于少數的那部分節點,以避免寫沖突。

Bully 算法是一種相對簡單的協調者競選算法。MongoDB 用了這個算法來決定副本集中主要的那一個。Bully 算法的主要思想是集群的每個成員都可以聲明它是協調者并通知其他節點。別的節點可以選擇接受這個聲稱或是拒絕并進入協調者競爭。被其他所有節點接受的節點才能成為協調者。節點按照一些屬性來判斷誰應該勝出。這個屬性可以是一個靜態ID,也可以是更新的度量像最近一次事務ID(最新的節點會勝出)。

下圖的例子展示了bully算法的執行過程。使用靜態ID作為度量,ID值更大的節點會勝出:

1、最初集群有5個節點,節點5是一個公認的協調者。
2、假設節點5掛了,并且節點2和節點3同時發現了這一情況。兩個節點開始競選并發送競選消息給ID更大的節點。
3、節點4淘汰了節點2和3,節點3淘汰了節點2。
4、這時候節點1察覺了節點5失效并向所有ID更大的節點發送了競選信息。
5、節點2、3和4都淘汰了節點1。
6、節點4發送競選信息給節點5。
7、節點5沒有響應,所以節點4宣布自己當選并向其他節點通告了這一消息。

協調者競選過程會統計參與的節點數目并確保集群中至少一半的節點參與了競選。這確保了在網絡隔離的情況下只有一部分節點能選出協調者(假設網絡中網絡會被分割成多塊區域,之間互不聯通,協調者競選的結果必然會在節點數相對比較多的那個區域中選出協調者,當然前提是那個區域中的可用節點多于集群原有節點數的半數。如果集群被隔離成幾個區塊,而沒有一個區塊的節點數多于原有節點總數的一半,那就無法選舉出協調者,當然這樣的情況下也別指望集群能夠繼續提供服務了)。

您可能感興趣的文章:
  • Linux系統安裝NoSQL(MongoDB和Redis)步驟及問題解決辦法(總結篇)
  • NoSQL 數據庫你應該了解的 10 件事
  • 8 種常用的 NoSQL 數據庫系統對比分析
  • NoSQL開篇之為什么要使用NoSQL
  • 深入解析NoSQL數據庫的分布式算法(圖文詳解)
  • SQL和NoSQL之間的區別總結

標簽:商洛 廣西 吉林 文山 玉溪 撫順 瀘州 濟源

巨人網絡通訊聲明:本文標題《NoSQL數據庫的分布式算法詳解》,本文關鍵詞  NoSQL,數據庫,的,分布式,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《NoSQL數據庫的分布式算法詳解》相關的同類信息!
  • 本頁收集關于NoSQL數據庫的分布式算法詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 广州科光机械有限公司| 北京建筑机械有限公司| 北京京民兴机械设备有限公司| 巩义市人和机械有限公司| 长葛机械制造有限公司| 新疆昆玉钢铁有限公司| 江西新明机械有限公司| 中材重型机械有限公司| 上海机械加工有限公司| 西安 工程机械有限公司| 珠海裕丰钢铁有限公司| 智能机械设备有限公司| 宝鸡石油机械有限公司| 青岛岛宇机械有限公司| 安徽国梁机械设备有限公司| 浙江科尔博机械有限公司| 辽宁中原机械有限公司| 鼎工机械制造有限公司| 渡边食品机械有限公司| 青岛胜代机械有限公司| 青州包装机械有限公司| 江阴市江南轻工机械有限公司| 新乡市法斯特机械有限公司 | 青岛北船重工有限公司| 天津中核机械有限公司| 山推工程机械有限公司| 河北输送机械有限公司| 江苏润山机械有限公司| 上海集美食品机械有限公司| 浙江希望机械有限公司| 建湖华祥机械有限公司| 徐州丰展机械有限公司| 广州惠德机械有限公司| 潍坊金蟀机械有限公司| 济南泽机械有限公司| 东阳机械设备制造有限公司| 有限公司发起人协议| 浙江传动机械有限公司| 安徽 机械制造有限公司| 江阴市华夏包装机械有限公司 | 沈阳六合机械有限公司| 广州市佳速精密机械有限公司| 浙江 动力机械有限公司| 全氏食品机械(上海)有限公司| 山东大启机械有限公司| 天工机械制造有限公司| 南通国盛精密机械有限公司| 浙江万能弹簧机械有限公司| 徐州智茸工程机械有限公司| 广州甲宝机械有限公司| 四川欧曼机械有限公司| 青岛胜代机械有限公司| 浙江建机工程机械有限公司| 大连工程机械有限公司| 中海福陆重工有限公司招聘| 重庆维庆液压机械有限公司| 马鞍山钢铁有限公司| 南通路捷机械有限公司| 无锡印染机械有限公司| 南通惠生重工有限公司| 广州凯诺机械有限公司| 东泰机械制造有限公司| 东阳机械制造有限公司| 深圳市兴合发齿轮机械有限公司| 马氏木工机械有限公司| 无锡远方机械有限公司| 浙江荣众机械有限公司| 输送机械制造有限公司| 上海东芝机械有限公司| 广东南牧机械设备有限公司| 三和水工机械有限公司| 湖北仙粮机械有限公司| 广州文穗塑料机械有限公司| 杭州杭重机械有限公司| 广濑精密机械有限公司| 千机械制造有限公司| 星火包装机械有限公司| 路通重工机械有限公司| 青岛金越隆机械有限公司| 大连德机械有限公司| 昌乐 机械 有限公司| 威马农业机械有限公司| 泉州金鹰机械有限公司| 无锡鹰普机械有限公司| 东莞市数控机械有限公司| 珠海精密机械有限公司| 江苏明珠试验机械有限公司| 东莞恒力机械有限公司| 无锡三麦机械有限公司| 上海祝融起重机械有限公司| 常州拓美威精密机械有限公司| 东莞兆恒机械有限公司| 廊坊德基机械有限公司| 浙江万通重工有限公司| 农业机械制造有限公司| 佛山市鹏轩机械制造有限公司| 广州惠德机械有限公司| 南昌中昊机械有限公司| 无锡名震机械制造有限公司| 杭州三瑞机械有限公司| 东莞市和明机械有限公司| 银丰弹簧机械设备制造有限公司 | 江苏华粮机械有限公司| 北京洛克机械有限公司| 南牧机械设备有限公司| 小松工程机械有限公司| 漳州南方机械有限公司| 山西风源机械制造有限公司| 友池精密机械有限公司| 辛集澳森钢铁有限公司| 威马农业机械有限公司| 东莞志成机械有限公司| 成都神钢建设机械有限公司| 张家港斯依格机械设备制造有限公司 | 上海科劳机械设备有限公司| 涞源奥宇钢铁有限公司| 湖州卓信机械有限公司| 莱州弘宇机械有限公司| 烟台工程机械有限公司| 长沙三一重工有限公司| 青岛机械利有限公司| 上海行雄机械有限公司| 中船重工环境工程有限公司| 东莞市通机械有限公司| 山东广富钢铁有限公司| 昆山海进机械有限公司| 西安帕吉特精密机械有限公司| 江苏中闽钢铁有限公司| 珠海三麦机械有限公司| 东莞伟机械有限公司| 唐山市钢铁有限公司| 江阴市祥达机械制造有限公司| 上海嘉歆包装机械有限公司| 河南昌申钢铁有限公司| 无锡美高帝机械有限公司| 上海集嘉机械有限公司| 浙江上易机械有限公司| 洛阳鹏起实业有限公司怎么样| 山东同力达智能机械有限公司| 山东运泰机械有限公司| 山东莱芜煤矿机械有限公司| 江西为民机械有限公司| 秦皇岛安丰钢铁有限公司| 南通 机械有限公司| 洛阳翼明机械有限公司| 马鞍山钢铁有限公司| 温州联腾包装机械有限公司| 丹阳荣嘉精密机械有限公司| 上海钢铁交易中心有限公司| 中交天和机械设备制造有限公司 | 潍坊山水环保机械制造有限公司| 盐城 机械有限公司| 大连起重矿山机械有限公司| 济南包装机械有限公司| 河北展利机械有限公司| 蚌埠神舟机械有限公司| 淄博推进化工机械有限公司| 广州力净洗涤机械有限公司| 安徽艾特巴机械制造有限公司| 苏州辽鞍机械有限公司| 青岛博朗特机械设备有限公司| 石油机械设备有限公司| 青岛青工机械有限公司| 上海德珂斯机械自动化技术有限公司 | 郑州新水工机械有限公司| 鑫源机械设备有限公司| 武汉环卫机械有限公司| 溧阳三元钢铁有限公司| 沧州卓鑫机械设备制造有限公司| 南海区机械设备有限公司| 广州永晋机械有限公司| 江苏金韦尔机械有限公司| 郑州市建新机械制造有限公司| 力迈机械设备有限公司| 鞍山宝得钢铁有限公司| 山东河山机械有限公司| 蚌埠行星机械有限公司| 甘肃机械化建设工程有限公司| 德州联合石油机械有限公司| 扬州沃尔特机械有限公司| 深圳巨涛机械设备有限公司| 上海山冠机械有限公司| 杭州萧山鼎立机械有限公司| 重庆 机械配件有限公司| 江苏华澄重工有限公司| 温州市兴业机械设备有限公司| 南通贝思特机械工程有限公司 | 上海铮潼起重机电设备有限公司| 四川沱江起重机有限公司| 永安五金机械有限公司| 济南天宝钢铁有限公司| 广州盛广誉机械设备有限公司 | 锦州万得包装机械有限公司 | 东莞宏彰机械有限公司| 上海全众机械有限公司| 黄石永辉机械有限公司| 太仓旭升机械有限公司| 汽车销售有限公司起名| 上海江浪流体机械制造有限公司 | 华东油压机械制造有限公司| 常州超通机械有限公司| 上海路桥机械有限公司| 宁波震德机械制造有限公司| 亿传玻璃机械有限公司| 路通重工机械有限公司| 徐州明文机械有限公司| 通达塑料机械有限公司| 上海埃比西斯机械有限公司 | 青岛奥威机械有限公司| 杭州 机械设备有限公司| 凯澄起重机械有限公司| 常州塑料机械有限公司| 河北东方富达机械有限公司| 长春合心机械制造有限公司 | 上海科熙起重设备有限公司| 北京道森起点信息技术有限公司 | 合肥成龙钢铁有限公司| 浙江双子机械制造有限公司 | 聚力特机械有限公司| 上海神威机械有限公司| 扬州鼎隆机械有限公司| 浙江长江机械有限公司| 常州胜代机械有限公司| 山西建龙钢铁有限公司| 山东源鑫农牧机械有限公司| 佛山市炬盈包装机械有限公司| 河南信联重工机械有限公司| 浙江 机械 有限公司| 山东鲁成起重机械有限公司| 群韵饮料机械有限公司| 南京德丰机械有限公司| 浙江凯岛起重机械有限公司| 无锡裕力机械有限公司| 海精密机械有限公司| 华东造纸机械有限公司| 山东明天机械有限公司| 苏州奥德机械有限公司| 上海北阅机械设备有限公司| 温州博宇机械有限公司| 河南隧通机械有限公司| 鞍山宝得钢铁有限公司| 苏州久富农业机械有限公司| 赛柏精密机械有限公司| 广东海天机械有限公司| 广州市京龙工程机械有限公司| 萨克米机械有限公司| 德州 机械有限公司| 东莞市天周机械有限公司| 西安飞鸿机械有限公司| 上海新沪机械有限公司| 小松山推工程机械有限公司| 宁波液压机械有限公司| 杭州铁正机械有限公司| 安瑞科气体机械有限公司| 青岛凯机械有限公司| 合肥大洋机械制造有限公司| 天津起重设备有限公司| 印刷包装机械有限公司| 天津轧三钢铁有限公司| 富华重工有限公司老板| 龙口富元机械有限公司| 佛山市松川机械设备有限公司 | 宁波思进机械有限公司| 无锡双象橡塑机械有限公司| 芜湖科翔动力机械有限公司| 济南盛润机械有限公司| 济南沃德机械制造有限公司| 郑州山川重工有限公司| 西安中天机械有限公司| 湖南正中制药机械有限公司 | 上海埃比西斯机械有限公司| 无锡海天机械有限公司| 上海创灵包装机械制造有限公司 | 武汉山推机械有限公司| 南通太和机械有限公司| 唐山丰润钢铁有限公司| 东莞高盟机械有限公司| 广东海天机械有限公司| 山东大丰机械有限公司| 郑州志乾机械设备有限公司| 山东恒旺机械有限公司| 广西玉柴动力机械有限公司| 海德机械设备有限公司| 盐城联鑫钢铁有限公司| 冶金机械制造有限公司| 杭州起重吊装有限公司| 河南 机械设备有限公司| 山东日照钢铁有限公司| 机械生产制造有限公司| 淄博联泰机械有限公司| 常州市龙鑫化工机械有限公司| 浙江瑞安机械有限公司| 河南小松工程机械有限公司| 四川机械制造有限公司| 基伊埃机械设备天津有限公司| 洛阳工程机械有限公司| 上海华迪机械有限公司| 宁波旭升机械有限公司| 浙江耐士伦机械有限公司| 重庆庆达机械有限公司| 潍坊市贝特工程机械有限公司| 上海烨昌食品机械有限公司| 长沙宏银机械有限公司| 唐山松汀钢铁有限公司| 中材重型机械有限公司| 通达塑料机械有限公司| 江苏博森机械制造有限公司| 山东常美机械有限公司| 上海宝丰机械制造有限公司| 东莞市鑫国丰机械有限公司| 佛山市科振机械设备有限公司| 沈阳 机械制造有限公司| 耐驰上海机械仪器有限公司| 上海 包装机械 有限公司| 河北永洋钢铁有限公司| 浙江荣亿精密机械有限公司| 诸城市恒顺机械有限公司| 江苏东钢钢铁有限公司| 江苏民生重工有限公司| 亚泰重工机械有限公司| 青岛双星铸造机械有限公司| 金丰机械工业有限公司| 高臻机械设备有限公司| 富杰精密机械有限公司| 上海机械装备有限公司| 佛山突破机械有限公司| 物理农林机械有限公司| 扬州扬工机械有限公司| 丹阳市华泰制药机械有限公司| 苏州 机械 有限公司| 广东中泽重工有限公司| 苏州信能精密机械有限公司| 河南省起重机有限公司| 南牧机械有限公司招聘| 山东泗水泰峰面粉机械有限公司| 长春协展机械工业有限公司| 重庆机械设备有限公司| 河北途盟机械制造有限公司| 佛山市松川机械设备有限公司| 江苏锐成机械有限公司| 佛山丰又丰机械有限公司| 英国敬业钢铁有限公司| 东莞兆泰机械设备有限公司| 温州宇英机械有限公司| 江苏隆达机械设备有限公司| 上海金纬机械有限公司| 昆山市机械有限公司| 新乡市豫新起重机械有限公司 | 深圳印刷机械深圳有限公司| 河南 机械有限公司| 广州众起办公用品有限公司| 东莞市联顺机械有限公司| 北京大铭世进机械设备有限公司 | 苏州友众传动机械有限公司| 重庆川口机械有限公司| 沃得农业机械有限公司| 普惠环保机械有限公司| 青岛力克川液压机械有限公司 | 贵州凯星液力传动机械有限公司 | 德枫丹青岛机械有限公司招聘 | 苏州星光精密机械有限公司| 徐州市机械有限公司| 上海路桥机械有限公司| 成都海科机械设备制造有限公司 | 山东博杰重型工程机械有限公司 | 上海连富机械有限公司| 常州龙鹏机械有限公司| 河南省黄河防爆起重机有限公司 | 京西重工北京有限公司| 杭州诺迈机械有限公司| 上海紫明印刷机械有限公司| 浙江欧迈特减速机械有限公司 | 郑州三和水工机械有限公司| 山东造纸机械厂有限公司 | 江山重工机械有限公司| 连云港机械制造有限公司| 福建东亚机械有限公司| 马鞍山 机械制造有限公司| 佳铭机械有限公司骗局| 梁发记机械有限公司| 广州市市政工程机械施工有限公司| 苏州勤堡精密机械有限公司| 纸箱机械 有限公司| 东莞市 机械有限公司| 苏州通润机械铸造有限公司| 上海轩特机械设备有限公司| 广东 机械设备有限公司| 合肥金锡机械有限公司| 苏州机械制造有限公司| 四川蓝星机械有限公司| 苏州毕特富精密机械有限公司| 浙江明天机械有限公司| 江阴市豪亚机械制造有限公司| 山本机械苏州有限公司| 深圳创世纪机械有限公司| 高博起重设备有限公司| 江阴市三 机械有限公司| 上海汉享食品机械有限公司| 江苏长强钢铁有限公司| 临沂金盛机械配套有限公司| 大连 机械制造有限公司| 宁波伟隆传动机械有限公司| 舞钢中加钢铁有限公司| 上海皆力机械设备有限公司| 常州浦发机械有限公司| 江苏仁达机械有限公司怎么样| 山东金奥机械有限公司| 湖南金峰机械有限公司| 广东省建筑工程机械施工有限公司| 天津 机械 有限公司| 新马木工机械有限公司| 西安金力特机械设备有限公司| 浙江金辉机械有限公司| 安徽佶龙机械有限公司| 随州市恒大机械铸造有限公司| 无锡腾力机械有限公司| 江苏机械设备有限公司| 丰精密机械有限公司| 常州市菲德机械部件有限公司 | 宣威凤凰钢铁有限公司| 东泰盛机械有限公司| 河南 工程机械有限公司| 山东华准机械有限公司| 开封良益机械有限公司| 无锡锡昌机械有限公司| 建华机械制造有限公司| 上海中吉机械有限公司| 威斯特机械有限公司| 上海凌鹰机械有限公司| 烟台精越达机械设备有限公司| 浙江鼎业机械设备有限公司| 常州制药机械有限公司| 江淮重工机械有限公司| 重庆海松机械有限公司| 杭州九钻机械有限公司| 洛阳震动机械有限公司| 东莞元渝机械有限公司| 山东领品机械有限公司| 三星机械制造有限公司| 金沙机械制造有限公司| 重庆机械设备有限公司| 江阴华西钢铁有限公司| 黄山市机械有限公司| 杭州中亚机械有限公司| 浙江陀曼精密机械有限公司 | 恩德特机械(苏州)有限公司| 仙游东亚机械有限公司| 上海轶鹰起重机械有限公司| 山东山特重工机械有限公司| 上海瀚艺冷冻机械有限公司| 宁波永博机械制造有限公司| 广州机械有限公司 v| 河北宏川机械制造有限公司| 河南东起机械有限公司| 成都弘邦机械有限公司| 银丰弹簧机械设备制造有限公司| 渭南金狮机械有限公司| 鹤壁万丰矿山机械制造有限公司| 河北文丰钢铁有限公司| 重庆磐达机械有限公司| 新乡市法斯特机械有限公司| 江苏中圣机械制造有限公司 | 德州力维机械有限公司| 常州儒邦机械有限公司| 台州 机械有限公司| 兰州兴元钢铁有限公司| 昆山市升达机械制造有限公司| 精雕精密机械有限公司| 南通科诚橡塑机械有限公司 | 昆山烽禾升精密机械有限公司| 景德镇 机械有限公司| 青岛越海机械有限公司| 洛阳工程机械有限公司| 鹤壁市豫星机械制造有限公司 | 山东造纸机械厂有限公司| 邢台市振成机械有限公司 | 烟台拓伟机械有限公司| 凯斯纽荷兰机械 哈尔滨 有限公司| 华东油压机械制造有限公司| 国发重工机械有限公司| 普瑞特机械有限公司| 浙江建机工程机械有限公司| 宁波润达机械有限公司| 武汉东泰盛机械有限公司| 派克包装机械有限公司| 上海鹰宏机械有限公司| 贝纳特机械有限公司| 鑫锐机械设备有限公司| 佛山隆机械有限公司| 南牧机械设备有限公司| 江苏奥马机械有限公司| 上海鼎亚精密机械设备有限公司| 欧克机械制造有限公司| 烟台金土源机械化工程有限公司| 威士重工机械有限公司| 南京拓源钢铁有限公司| 玉环 机械有限公司| 广州广重分离机械有限公司| 上海起重电机厂有限公司| 广州东昇机械有限公司| 常州斯塔克机械设备有限公司| 江西柳工机械设备有限公司| 青岛诺机械有限公司| 中航起落架有限公司| 江苏 重型机械有限公司| 兴龙机械模具有限公司| 无锡锡州机械有限公司| 无锡市阳通机械设备有限公司| 广东穗华机械设备有限公司| 无锡通用机械有限公司| 杭州华驰机械有限公司| 禹城市华普机械设备有限公司| 扬州中建建设机械有限公司 | 宁波海江机械制造有限公司| 硕方精密机械有限公司| 中船重工环境工程有限公司| 辽阳喜旺机械制造有限公司| 浙江亿森机械有限公司| 宁波翠科机械有限公司| 玉环博行机械有限公司| 青岛木业机械有限公司| 瑞鼎精密机械有限公司| 江苏宏威重工机床制造有限公司| 宁波环海重工有限公司| 深圳市德润机械有限公司| 卓郎智能机械有限公司| 泰安海松机械有限公司| 东莞市印刷机械有限公司| 丹东富田精工机械有限公司| 莱州日进机械有限公司| 张家港亿塑机械有限公司| 瀚乐电子机械有限公司| 英隆机械昆山有限公司| 青岛华磊塑料机械有限公司| 佛山市顺德区金工铝门窗机械实业有限公司| 威海隆发机械有限公司| 杭州力泰起重机械有限公司| 上海嘉峥机械有限公司| 力顺源机械有限公司| 长江液压机械有限公司| 浙江蓝宝机械有限公司| 徐州 机械有限公司| 南方力劲机械有限公司| 上海得力起重索具有限公司 | 广州起航贸易有限公司| 曲阜市机械有限公司| 东泰机械制造有限公司| 苏州 机械 有限公司| 徐州圣邦机械有限公司| 莱钢永锋钢铁有限公司| 青岛塑料机械有限公司| 山东永健机械有限公司| 四川青城机械有限公司| 宁波博信机械制造有限公司| 大连红日机械有限公司| 东莞 精密机械有限公司| 上海洋邦机械设备有限公司| 日照兴业机械有限公司| 宁夏天地奔牛银起设备有限公司 | 济南钢铁 有限公司| 宁波住重机械有限公司| 沈阳维用精密机械有限公司| 江苏宇达机械有限公司| 山西兴宝钢铁有限公司| 常州铁本钢铁有限公司| 山东瑞华机械有限公司| 杭州萧山凯兴食品机械有限公司 | 广州市台展机械有限公司| 湖北昌胜机械设备制造有限公司| 郑州东方重型机械有限公司| 济南龙铸液压机械有限公司| 江苏润明机械设备有限公司怎么样| 贵州工程机械有限公司| 珠海精密机械有限公司| 广州华研精密机械有限公司| 工程机械销售有限公司| 苏州君驰联动机械有限公司| 中安重工自动化装备有限公司| 张家口中煤嘉益机械制造有限公司 | 锦州万得包装机械有限公司 | 山东领品机械有限公司| 潍坊市通用机械有限公司| 东莞液压机械有限公司| 沈阳斗山工程机械有限公司| 昆山铭世特精密机械有限公司| 大连东拓工程机械制造有限公司 | 浏阳 机械有限公司| 温州市机械有限公司| 台州 精密机械有限公司| 南京 机械设备有限公司| 东莞市金坤机械设备有限公司| 郑州明瑞机械设备有限公司| 唐山鑫达钢铁有限公司| 济南数控机械有限公司| 上海沃勒起重设备有限公司| 河南小松工程机械有限公司| 上海巨远塑料机械有限公司| 玉环县三和机械制造有限公司| 安丘机械制造有限公司| 上海翔展机械有限公司| 深圳市力豪机械设备有限公司| 潍坊天宇机械有限公司| 山东兴源机械有限公司| 华东油压机械制造有限公司| 江西江锻重工有限公司| 江重机械制造有限公司| 中实洛阳重型机械有限公司实习报告| 广州晶冠机械有限公司| 蓬莱万寿机械有限公司| 宝鸡 机械有限公司| 华亿机械制造有限公司| 厦门市机械有限公司| 郑州富民机械有限公司| 牛力机械制造有限公司| 河南起重机器有限公司| 青岛大牧人机械有限公司招聘| 上海久浩机械有限公司| 东莞市腾机械有限公司| 杭州华驰机械有限公司| 隆英金坛机械有限公司| 扬州扬工机械有限公司| 广东龙辉基业建筑机械有限公司 | 东莞市精密机械有限公司| 重庆红江机械有限公司| 上海容安木工机械设备有限公司 | 天津市仁翼钢铁有限公司| 华群数控机械有限公司| 浙江杰豹机械有限公司| 聊城机械设备有限公司| 安徽金龙机械有限公司| 首钢京唐钢铁有限公司| 湖北华伟石化机械设备制造有限公司| 鼎业机械设备有限公司| 威海化工机械有限公司招聘 | 深圳市硕方精密机械有限公司 | 亿德隆机械有限公司| 盐城石油机械有限公司| 中船重工重庆液压机电有限公司| 仙游东亚机械有限公司| 苏州精密机械有限公司| 枣庄金正钢铁有限公司| 浙江金华机械有限公司| 宁波海雄塑料机械有限公司 | 南京巴蜀机械有限公司| 济南业兴通工程机械有限公司| 苏州海盛精密机械有限公司怎么样| 河北液压机械有限公司| 鞍山宝得钢铁有限公司招聘岗位| 厦门东亚机械有限公司| 长沙众宇机械有限公司| 如东通用机械有限公司| 广州机械设备制造有限公司| 山东萨丁重工有限公司| 张家港海狮洗涤机械有限公司 | 新乡市中轻机械有限公司| 河南安普包装机械制造有限公司| 四川机械制造有限公司| 青岛木业机械有限公司| 浙江卓驰机械有限公司| 上海喜曼机械有限公司| 东莞市台克机械有限公司| 泰富重工制造有限公司| 浙江液压机械有限公司| 南京润森工程机械有限公司| 温州惠利机械有限公司| 常州安捷起重吊装有限公司| 临沂机械制造有限公司| 成都市机械有限公司| 纸箱机械设备有限公司| 上海包装机械设备有限公司| 郑州液压机械有限公司| 瑞安 机械有限公司| 台在机械设备有限公司| 常熟通江机械有限公司| 蚌埠柳工机械有限公司| 浙江园林机械有限公司| 常州塑料机械有限公司| 昆成机械(昆山)有限公司| 天津石油机械有限公司| 上海天驰制药机械有限公司| 飞虎机械制造有限公司| 东莞液压机械有限公司| 江重机械制造有限公司| 浙江雷克机械工业有限公司| 佛山市永盛达机械有限公司| 德丰机械制造有限公司| 汇大机械制造有限公司| 河南钢铁贸易有限公司| 宝鸡至信机械有限公司| 马鞍山机械有限公司| 东莞达机械有限公司| 南京机械电子有限公司| 河南博众机械制造有限公司| 凯岛起重机械有限公司| 福建敏捷机械有限公司| 山东瀚业机械有限公司| 山东钢铁日照有限公司| 上海 乐 机械有限公司| 利勃海尔机械大连有限公司| 河北奥宇钢铁有限公司| 东莞麒麟机械有限公司| 深圳市塑胶机械有限公司| 江阴市液压机械有限公司| 湖南汇杰机械设备有限公司| 北京大起空调有限公司| 天津菲特机械有限公司| 东台富康机械有限公司| 深圳市荣德机械设备有限公司| 万好万家机械有限公司| 海宁诚达机械有限公司| 湖南卓迪机械有限公司| 海的动力机械有限公司| 苏州捷合机械有限公司| 大连日立机械设备有限公司| 宁波博日机械有限公司| 东莞市包装机械有限公司| 郑州龙阳重型机械设备有限公司| 亿德隆机械有限公司| 郑州 机械有限公司| 杭州 机械设备有限公司| 萨驰华辰机械 苏州 有限公司| 上海华威焊割机械有限公司| 青岛义龙包装机械有限公司| 湘潭丰弘机械制造有限公司| 浙江金马逊机械有限公司| 大明钢铁实业有限公司| 太原市 机械有限公司| 宁波华表机械制造有限公司 | 鑫锐机械设备有限公司| 华盛机械设备有限公司| 上海传动机械有限公司| 上海淘乐机械有限公司| 广州泽比机械设备有限公司| 上海 精密机械制造有限公司| 徐州东岳工程机械有限公司| 昆山弘迪精密机械有限公司| 上海鹏则机械有限公司| 上海科纳机械有限公司| 佛山柯田包装机械有限公司 | 山东食品机械有限公司| 南通宝顺机械有限公司| 青岛岛宇机械有限公司| 安徽远鸿机械有限公司| 浙江邦泰机械有限公司| 上海起泽起重机械有限公司 | 济南岳峰机械有限公司| 上海 机械制造有限公司| 湖南机械制造有限公司| 广州泓锋食品机械有限公司| 江苏骏马压路机械有限公司| 长沙精密机械有限公司| 江苏精明机械有限公司| 上海梯诺机械设备有限公司 | 南京儒一航空机械装备有限公司 | 甘肃机械化建设工程有限公司| 济南天方机械有限公司| 北京中车重工机械有限公司| 同向精密机械有限公司| 威海 机械有限公司| 河北兴华钢铁有限公司| 上海山冠机械有限公司| 山西建龙钢铁有限公司地址| 东营 机械制造 有限公司| 杭州通绿机械有限公司| 镇江鸿泰钢铁有限公司| 河北工程机械有限公司| 重庆志成机械有限公司| 滁州富达机械电子有限公司| 宁波奇精机械有限公司| 广州机械自动化有限公司| 广州市赛思达机械设备有限公司| 徐州压力机械有限公司| 江阴万恒机械制造有限公司| 新乡市起重机有限公司| 苏州仁成包装机械有限公司 | 佛山机械设备有限公司| 德清章盟机械设备有限公司| 北京富佳伟业机械制造有限公司 | 常德机械制造有限公司| 东莞钰腾机械有限公司| 江苏中饮机械有限公司| 遵化建龙钢铁有限公司| 福州展志钢铁有限公司| 上海凯奇机械设备有限公司| 深圳格瑞克机械有限公司| 重庆工程机械有限公司| 上海龙工机械有限公司| 宁波甬龙机械有限公司| 宁波雄腾机械有限公司| 厦门众达钢铁有限公司| 东方液压机械有限公司| 三益精密机械有限公司| 宁波甬龙机械有限公司| 新麦机械无锡有限公司| 山东愚公工程机械有限公司| 黄石永辉机械有限公司| 山东利达工程机械有限公司 | 成都中挖机械有限公司| 诸城市天顺机械有限公司| 山东运泰机械有限公司| 东莞信易电热机械有限公司| 泉州工程机械有限公司| 临工工程机械有限公司| 山东鲁机械有限公司| 济南钢铁 有限公司| 东莞市永创包装机械有限公司| 莱州市华弘机械有限公司| 东莞市岛精机械有限公司| 邢台远大机械制造有限公司| 武汉钢铁有限公司官网| 湖南中旺工程机械设备有限公司 | 重庆远博机械有限公司| 晋江市机械有限公司| 宁波固奇包装机械制造有限公司| 上海华襄机械有限公司| 上海德托机械有限公司| 温岭市大众精密机械有限公司 | 南通力福通起重机械有限公司| 河钢乐亭钢铁有限公司| 光大机械厂有限公司| 杭州龙云水利机械制造有限公司| 杭州容瑞机械技术有限公司| 大洋食品机械有限公司| 无锡械锐机械有限公司| 北京北宇机械设备有限公司| 上海善佳机械设备有限公司| 首钢长治钢铁有限公司| 新乡市金原起重机械有限公司 | 沧州瑞创机械制造有限公司| 广州冠浩机械设备有限公司| 山东六丰机械工业有限公司| 珠海市广浩捷精密机械有限公司 | 山东临沂机械有限公司| 郑州长城机械有限公司| 冈热机械常州有限公司| 郑州年旭机械有限公司| 山东嘉意机械有限公司| 东莞市凯格精密机械有限公司| 徐州工程机械有限公司| 苏州艾卓精密机械有限公司| 郴州粮油机械有限公司| 广州工程机械有限公司| 唐山亚捷机械有限公司| 太仓倍加机械有限公司| 河南昌申钢铁有限公司| 芜湖中安重工自动化装备有限公司 | 江苏隆达机械设备有限公司| 山东伊莱特重工有限公司| 慈溪 机械 有限公司| 宁波恒阳机械有限公司| 农友机械设备有限公司| 浙江赛力机械有限公司| 潍坊机械制造有限公司| 广东盈钢机械有限公司| 莱钢永锋钢铁有限公司| 江苏舜天机械进出口有限公司| 常州市丰丰机械有限公司| 苏州旭展机械有限公司| 西安金力特机械设备有限公司 | 南通科诚橡塑机械有限公司| 广西玉柴重工有限公司| 三益精密机械有限公司| 海宁弘德机械有限公司| 大连起重矿山机械有限公司| 重庆庆达机械有限公司| 才美机械制造(上海)有限公司| 烟台利丰机械有限公司| 浙江纺织机械有限公司| 山东冠华重工机械有限公司| 温州铸鼎机械有限公司| 福建机械设备有限公司| 辛集澳森钢铁有限公司| 重庆正格农业机械有限公司| 上海汉 机械有限公司| 广州坚诺机械设备有限公司 | 苏州荣业机械有限公司| 日照立盈机械有限公司| 北京盛美食品机械有限公司| 合肥锦利丰机械有限公司| 济南圣元机械工程有限公司| 豫工机械设备有限公司| 济南森华精密机械有限公司| 四川阳光机械有限公司| 诸城隆泽机械有限公司| 深圳市德机械有限公司| 江苏液压机械有限公司| 抚顺机械设备制造有限公司| 江苏清淮机械有限公司| 力 机械 有限公司| 广州市 工程机械有限公司| 湖州三一重工有限公司| 营口金辰机械有限公司| 国发重工机械有限公司| 上海机械进出口有限公司| 山东冠华重工机械有限公司| 东莞培锋精密机械有限公司| 兖州大华机械有限公司| 苏州毕特富精密机械有限公司| 中铁重工有限公司武汉| 诺威起重设备苏州有限公司| 唐山九江钢铁有限公司| 宁波星峰机械有限公司| 泰田液压机械有限公司| 宁波天竺工程机械有限公司| 昆山施耐特机械有限公司| 上海保成机械有限公司| 高博起重设备有限公司| 广州东昻机械有限公司| 佛山市南海鼎工包装机械有限公司 | 上海鹏则机械有限公司| 江阴伟江机械有限公司| 合肥明泰机械施工有限公司| 东莞市鼎祥通用机械设备有限公司 | 大洋机械制造有限公司| 东莞市鑫焘机械有限公司| 玛狮工程机械有限公司| 深圳新添润彩印机械设备有限公司| 无锡胜喜路机械有限公司| 东莞宏起塑胶电子有限公司| 河南黄河防爆起重机有限公司| 江苏中热机械设备有限公司怎么样| 厦门 机械有限公司| 杭州九钻机械有限公司| 河南力博矿山机械有限公司| 广州德机械有限公司| 深圳 机械设备有限公司| 食品机械(上海)有限公司| 东莞市三米通用机械有限公司| 郑州鼎盛机械有限公司| 河南宝润机械有限公司| 浙江金马逊机械有限公司| 烟台飞达机械有限公司| 徐州川一工程机械有限公司| 中机建重工有限公司| 宁波迪奥机械有限公司| 开封明芳机械有限公司| 沈阳三洋建筑机械有限公司| 福建精密机械有限公司| 史陶比尔精密机械电子有限公司| 湖南工程机械有限公司| 乐星机械无锡有限公司| 云南机械制造有限公司| 常州市龙鑫化工机械有限公司| 苏州海盛精密机械有限公司| 新湾机械有限公司招聘| 昆山优能机械有限公司| 福建起然燃气设备有限公司| 武汉益达建设机械有限公司| 宁波创基机械有限公司| 郑州谷丰机械设备有限公司| 沧州华众煤矿机械有限公司| 华通动力重工有限公司| 东莞塑胶机械有限公司| 重庆力波机械有限公司| 山东源泉机械有限公司| 佛山市信虹精密机械有限公司| 浙江吉隆机械有限公司| 诚鑫诚机械有限公司| 郑州明瑞机械设备有限公司| 上海申德机械有限公司| 南通振康机械有限公司| 上海信进精密机械有限公司| 宁波裕民机械工业有限公司| 南牧机械有限公司招聘| 河南长城机械有限公司| 临清市机械有限公司| 广州泓锋食品机械有限公司| 鼎盛机械设备有限公司| 大连橡胶塑料机械有限公司| 江阴宏达机械有限公司| 海宁市腾达机械有限公司| 合肥汉杰包装机械喷码有限公司| 河南起重机器有限公司| 安溪永兴机械有限公司| 宁波威恩精密机械有限公司| 山东鑫弘重工有限公司| 温州镇田机械有限公司| 广东龙辉基业建筑机械有限公司 | 郑州中嘉重工有限公司| 东莞市乔锋机械有限公司| 苏州恩贝德机械有限公司| 秦皇岛秦冶重工有限公司| 扬州液压机械有限公司| 东莞市瑞辉机械制造有限公司| 四川腾中重工机械有限公司| 上海松川远亿机械设备有限公司| 杭州机械制造有限公司| 苏州圣亚精密机械有限公司| 潍坊凯信机械有限公司| 三一起重机械有限公司| 深圳液压机械有限公司| 合肥盛安机械有限公司| 无锡市机械有限公司| 娄底 有限公司 机械| 河北华西钢铁有限公司| 东莞市英豪机械有限公司| 常州机械制造有限公司| 玛连尼 法亚机械有限公司| 苏州宏呈祥机械有限公司|