拜占庭將軍問(wèn)題(Byzantine Generals Problem)音婶,是由蘭波特在其同名論文中提出的?分布式對(duì)等網(wǎng)絡(luò)?通訊容錯(cuò)問(wèn)題郑象。在分布式計(jì)算中册烈,不同的計(jì)算機(jī)通過(guò)通訊交換信息達(dá)成共識(shí)而按照同一套協(xié)作策略行動(dòng)弥姻。但有的時(shí)候强经,系統(tǒng)中的成員計(jì)算機(jī)可能出錯(cuò)而發(fā)送錯(cuò)誤的消息睡陪,用于傳遞信息的通訊網(wǎng)絡(luò)也可能導(dǎo)致信息損壞,使得網(wǎng)絡(luò)中不同的成員關(guān)于全體協(xié)作的策略得出不同結(jié)論匿情,從而破壞系統(tǒng)一致性兰迫。拜占庭問(wèn)題被認(rèn)為是容錯(cuò)問(wèn)題中最難的問(wèn)題類型之一。
波蘭特在其論文中描述了如下問(wèn)題:
一組拜占庭將軍分別各率領(lǐng)一支軍隊(duì)共同圍困一座城市炬称。為了簡(jiǎn)化問(wèn)題汁果,將各支軍隊(duì)的行動(dòng)策略限定為進(jìn)攻或撤退兩種。因?yàn)椴糠周婈?duì)進(jìn)攻玲躯,部分軍隊(duì)撤退可能會(huì)導(dǎo)致災(zāi)難性后果据德,因此各位將軍必須通過(guò)投票來(lái)達(dá)成一致策略,即所有軍隊(duì)一起進(jìn)攻跷车,或者所有軍隊(duì)一起撤退棘利。因?yàn)楦魑粚④姺痔幊鞘械牟煌较颍麄冎荒芡ㄟ^(guò)信使互相聯(lián)系朽缴。在投票過(guò)程中每位將軍都將自己投票給進(jìn)攻還是撤退的信息通過(guò)信使來(lái)分別通知其他所有將軍善玫,這樣一來(lái)每位將軍根據(jù)自己的投票和其他將軍送來(lái)的信息就可以知道共同的投票結(jié)果而決定行動(dòng)策略。
系統(tǒng)的問(wèn)題在于密强,可能將軍中出現(xiàn)叛徒茅郎,他們不僅可能向較為糟糕的策略投票,還可能選擇性地發(fā)送投票信息或渤。假設(shè)有9位將軍投票系冗,其中1名叛徒。8名忠誠(chéng)的將軍中出現(xiàn)了4人投進(jìn)攻薪鹦,4人投撤離的情況掌敬。這時(shí)候叛徒可能故意給4名投進(jìn)攻的將領(lǐng)送信表示投票進(jìn)攻,而給4名投撤離的將領(lǐng)送信表示投撤離距芬。這樣一來(lái)在4名投進(jìn)攻的將領(lǐng)看來(lái)涝开,投票結(jié)果是5人投進(jìn)攻,從而發(fā)起進(jìn)攻框仔;而在4名投撤離的將軍看來(lái)則是5人投撤離舀武。這樣各支軍隊(duì)的一致協(xié)同就遭到了破壞。
由于將軍之間需要通過(guò)信使通訊离斩,叛變將軍可能通過(guò)偽造信件來(lái)以其他將軍的身份發(fā)送假投票银舱。而即使在保證所有將軍忠誠(chéng)的情況下瘪匿,也不能排除信使被敵人截殺,甚至被敵人間諜替換等情況寻馏。因此很難通過(guò)保證人員可靠性及通訊可靠性來(lái)解決問(wèn)題棋弥。
假使那些忠誠(chéng)(或是沒(méi)有出錯(cuò))的將軍仍然能通過(guò)多數(shù)決定來(lái)決定他們的戰(zhàn)略,便稱達(dá)到了拜占庭容錯(cuò)诚欠。在此顽染,票都會(huì)有一個(gè)默認(rèn)值,若消息(票)沒(méi)有被收到轰绵,則使用此默認(rèn)值來(lái)投票粉寞。
上述的故事映射到計(jì)算機(jī)系統(tǒng)里,將軍便成了計(jì)算機(jī)左腔,而信差就是通信系統(tǒng)唧垦。雖然上述的問(wèn)題涉及了電子化的決策支持與信息安全,卻沒(méi)辦法單純的用密碼學(xué)與數(shù)字簽名來(lái)解決液样。因?yàn)殡娐峰e(cuò)誤仍可能影響整個(gè)加密過(guò)程振亮,這不是密碼學(xué)與數(shù)字簽名算法在解決的問(wèn)題。因此計(jì)算機(jī)就有可能將錯(cuò)誤的結(jié)果提交去鞭莽,亦可能導(dǎo)致錯(cuò)誤的決策坊秸。
困惑一:口頭協(xié)議,當(dāng)將軍為叛徒的時(shí)候撮抓,不能保證準(zhǔn)確性妇斤,只能保持一致性。
困惑二:為什么3個(gè)叛徒的時(shí)候丹拯,需要進(jìn)行三次嵌套?
困惑三:為什么網(wǎng)絡(luò)延遲的時(shí)候荸恕,不能使用乖酬?