一、打印機(jī)連接的電腦開(kāi)啟打印機(jī)共享。
1、把打印機(jī)連接到電腦,下載并安裝打印機(jī)驅(qū)動(dòng),確保打印機(jī)可以正常使用。
2、查看網(wǎng)絡(luò)連接,確保網(wǎng)絡(luò)配置為專(zhuān)用網(wǎng)絡(luò)(關(guān)鍵)
專(zhuān)用網(wǎng)絡(luò)
3、打開(kāi)網(wǎng)絡(luò)共享,確保當(dāng)前配置為專(zhuān)用網(wǎng)絡(luò)(來(lái)賓或公用網(wǎng)絡(luò)不支持)
4、按窗口+R鍵,打開(kāi)運(yùn)行,輸入secpol.msc,打開(kāi)配置策略窗口,設(shè)置兩個(gè)位置。
一是在安全選項(xiàng)中,查看右邊窗口配置項(xiàng),檢查guest來(lái)賓賬戶是否禁用,如果禁用則將其啟用。如圖所示:
二是在用戶權(quán)限分配中,查看右邊窗口配置項(xiàng)“拒絕從網(wǎng)絡(luò)訪問(wèn)這臺(tái)計(jì)算機(jī)”,雙擊打開(kāi),講guest刪除,允許來(lái)賓賬戶從網(wǎng)絡(luò)訪問(wèn)。
5、打開(kāi)設(shè)置—>設(shè)備—>打印機(jī)和掃描儀,點(diǎn)擊需要共享的打印機(jī),點(diǎn)擊管理—>打印機(jī)屬性,配置兩個(gè)位置,一個(gè)是共享標(biāo)簽頁(yè),點(diǎn)擊“更改共享選項(xiàng)”,然后勾選“共享這臺(tái)打印機(jī)”。
另外一個(gè)是點(diǎn)擊安全標(biāo)簽頁(yè),確保的打印權(quán)限是“允許”。
打印機(jī)共享端配置完畢。
二、其他電腦連接配置
1、確保其他電腦的網(wǎng)絡(luò)連接當(dāng)前配置為專(zhuān)用網(wǎng)絡(luò)(必須)
2、打開(kāi)設(shè)置—>設(shè)備—>打印機(jī)和掃描儀,點(diǎn)擊“添加打印機(jī)和掃描儀”。
3、如果檢索到,直接點(diǎn)擊檢索到的你需要安裝的打印機(jī)和掃描儀,如果沒(méi)有檢索到,點(diǎn)擊“我需要的打印機(jī)不在列表中”。
在彈出的手動(dòng)添加打印機(jī)對(duì)話框中,可以根據(jù)時(shí)機(jī)需要選擇添加的方式,針對(duì)本文配置如下圖所示,手動(dòng)輸入打印機(jī)連接的那臺(tái)電腦的ip地址。
一般情況下,可以配置完畢。
本文針對(duì)的是win10共享打印機(jī),win10連接的問(wèn)題,如果是win10共享,win7或者xp連接請(qǐng)看其他文章。
【技術(shù)分享】分布式架構(gòu)中的時(shí)間真相
感謝業(yè)界小伙伴——吳松林,投稿精品原創(chuàng)類(lèi)文章。VSRC歡迎精品原創(chuàng)類(lèi)文章投稿,優(yōu)秀文章一旦采納發(fā)布,將有好禮相送,我們已為您準(zhǔn)備好了豐富的獎(jiǎng)品!
(活動(dòng)最終解釋權(quán)歸VSRC所有)
分布式架構(gòu)中的時(shí)間真相
對(duì)于生活中常見(jiàn)的事物,我們總是缺乏細(xì)心的觀察與足夠的思考。作者將在這篇文章中帶領(lǐng)大家深入分布式架構(gòu)中時(shí)間的真相。本文不打算使用過(guò)于專(zhuān)業(yè)的術(shù)語(yǔ)和晦澀難懂的數(shù)學(xué)公式,希望能和同學(xué)們輕松愉快的展開(kāi)討論。
我們所熟知的時(shí)間
時(shí)間是人類(lèi)用以描述物質(zhì)運(yùn)動(dòng)過(guò)程或事件發(fā)生過(guò)程的一個(gè)參數(shù)。確定時(shí)間的方法通常是靠不受外界影響的物質(zhì)周期變化的規(guī)律,例如月亮繞地球旋轉(zhuǎn)周期,原子震蕩周期等。
以上是基本物理學(xué)中對(duì)于時(shí)間的定義,也是我們生活中對(duì)于時(shí)間的主要感受。
能不能稍微高大上一點(diǎn)?
愛(ài)因斯坦在相對(duì)論中提出:不能把時(shí)間、空間、物質(zhì)三者分開(kāi)解釋。時(shí)間與空間一起組成四維時(shí)空,構(gòu)成宇宙的基本結(jié)構(gòu)。時(shí)間與空間在測(cè)量上都不是絕對(duì)的,觀察者在不同的相對(duì)速度或不同時(shí)空結(jié)構(gòu)的測(cè)量點(diǎn),所測(cè)量到時(shí)間的流逝是不同的。
就此打住,再下去的專(zhuān)業(yè)知識(shí)就要讓人抓狂了,比如時(shí)空扭曲。好在這些不是我們今天要聊的話題。
再玄一點(diǎn)試試?
愛(ài)因斯坦認(rèn)為:“現(xiàn)在、過(guò)去和將來(lái)之間的差別只是一種錯(cuò)覺(jué)。”這句話對(duì)時(shí)間的存在與否提出了質(zhì)疑。無(wú)獨(dú)有偶,佛教的創(chuàng)立者釋迦牟尼也沒(méi)有正面回答過(guò)時(shí)間的存在問(wèn)題。佛經(jīng)多以“一時(shí)”開(kāi)頭,比如大乘經(jīng)典《華嚴(yán)經(jīng)》:“如是我聞,一時(shí),佛在摩竭提國(guó)阿蘭若法菩提場(chǎng)中,始成正覺(jué)。”另外,佛經(jīng)里對(duì)于時(shí)間長(zhǎng)度也常用“一彈指”“一剎那”等詞語(yǔ)描述。可見(jiàn)佛學(xué)的理論體系中也并沒(méi)有對(duì)時(shí)間的精確定義,這種獨(dú)特的時(shí)間觀和現(xiàn)代物理學(xué)非常接近。
差不多該切入正題了
以上是分別從日常生活,現(xiàn)代物理學(xué),宗教等三個(gè)角度對(duì)于時(shí)間的認(rèn)知。到現(xiàn)在為止,我們應(yīng)該知道時(shí)間并非客觀精確存在的東西。但是生活中時(shí)間是如此的重要,人類(lèi)的群體活動(dòng)必須有一個(gè)時(shí)間作為準(zhǔn)則,否則就亂套了。那怎么辦?很簡(jiǎn)單,靠約定。
約定時(shí)間可以讓一個(gè)群體準(zhǔn)確的完成任務(wù)。注意:約定發(fā)起者的時(shí)間就算是錯(cuò)誤的,也不影響這個(gè)群體完成任務(wù),只要活動(dòng)期間內(nèi)的群體內(nèi)部時(shí)間是一致的就行。
“同志們,對(duì)一下時(shí)間,準(zhǔn)備行動(dòng)”小時(shí)候看電視記得最清楚的臺(tái)詞就是這一句。
計(jì)算機(jī)里的時(shí)間是如何確定的呢?
學(xué)過(guò)計(jì)算機(jī)系統(tǒng)的同學(xué)應(yīng)該都知道,計(jì)算機(jī)中的CPU并不負(fù)責(zé)計(jì)時(shí)。計(jì)算機(jī)是靠一個(gè)叫做時(shí)鐘芯片的東西來(lái)產(chǎn)生時(shí)鐘脈沖推動(dòng)工作的,它就像電腦的心臟一樣,持續(xù)穩(wěn)定的周期性跳動(dòng)。所以計(jì)算機(jī)經(jīng)過(guò)時(shí)間校對(duì)后,接下來(lái)這個(gè)時(shí)鐘芯片的穩(wěn)定性將直接關(guān)系到這臺(tái)計(jì)算機(jī)的時(shí)間后續(xù)是否會(huì)出現(xiàn)偏差。時(shí)鐘芯片就像一個(gè)樂(lè)隊(duì)的指揮家,指揮計(jì)算機(jī)的各個(gè)組件按一樣的節(jié)奏協(xié)同工作。
單機(jī)工作對(duì)時(shí)間的要求是最低的
就單個(gè)計(jì)算機(jī)來(lái)講,計(jì)算機(jī)的CPU,內(nèi)存和輸入輸出等設(shè)備都在同一個(gè)時(shí)鐘芯片的指揮下工作,所以就算這臺(tái)計(jì)算機(jī)的實(shí)際時(shí)間不準(zhǔn)確,也不會(huì)影響計(jì)算機(jī)的正常工作。
最大的麻煩來(lái)了,多臺(tái)計(jì)算機(jī)協(xié)同工作
上圖中3臺(tái)服務(wù)器和客戶的手機(jī)都處于不同的時(shí)間。如果要聯(lián)合完成一項(xiàng)任務(wù),比如接受一個(gè)客戶的訂單,究竟系統(tǒng)該以哪個(gè)時(shí)間作為訂單產(chǎn)生的時(shí)間呢?
通常對(duì)于一個(gè)系統(tǒng)來(lái)說(shuō),越往系統(tǒng)內(nèi)部時(shí)間越可信。比如上圖中客戶手機(jī)的時(shí)間是最不可信的,因?yàn)橐磺€(gè)客戶的手機(jī)時(shí)間可能各不相同。后面的3臺(tái)服務(wù)器,選任何一臺(tái)服務(wù)器的時(shí)間作為訂單產(chǎn)生的時(shí)間都是可以的。
難道就這么簡(jiǎn)單?
當(dāng)然不是。如果系統(tǒng)稍微復(fù)雜一點(diǎn),比如訪問(wèn)量大了以后,WEB服務(wù)和應(yīng)用服務(wù)都要由多臺(tái)服務(wù)器來(lái)支持,如下圖。
這時(shí)候我們發(fā)現(xiàn),只有最后面的數(shù)據(jù)庫(kù)服務(wù)器是單臺(tái)的,其他節(jié)點(diǎn)都變成了多臺(tái)服務(wù)器。這樣的系統(tǒng)結(jié)構(gòu)在中小系統(tǒng)里面很常見(jiàn)。一般都會(huì)選取數(shù)據(jù)庫(kù)服務(wù)器作為時(shí)間標(biāo)準(zhǔn),比如在數(shù)據(jù)庫(kù)中插入訂單庫(kù)記錄的時(shí)候由數(shù)據(jù)庫(kù)生成時(shí)間戳作為訂單的產(chǎn)生時(shí)間。
生意越來(lái)越好,系統(tǒng)需要進(jìn)一步擴(kuò)容
隨著客戶進(jìn)一步增多,系統(tǒng)壓力越來(lái)越大,數(shù)據(jù)庫(kù)也要拆分成多臺(tái)服務(wù)器,如下圖。
現(xiàn)在,那臺(tái)唯一的作為時(shí)間標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)服務(wù)器也不存在了。我們應(yīng)該怎么做?在目前對(duì)時(shí)間的認(rèn)知程度上,很難再討論這個(gè)問(wèn)題的解決方案了。所以,讓我們先離開(kāi)這個(gè)問(wèn)題,回到對(duì)時(shí)間的認(rèn)識(shí)上來(lái)。
我們需要對(duì)時(shí)間多一點(diǎn)認(rèn)識(shí)
我們列出時(shí)間的幾個(gè)重要特性如下,之后會(huì)逐一進(jìn)行分析,并運(yùn)用到分布式架構(gòu)中來(lái)嘗試解決時(shí)間這個(gè)難題。
時(shí)間是靠約定的
可接受的時(shí)間精度
不存在真正的并發(fā),凡事有先后
讓我們從第一個(gè)特性開(kāi)始吧。
一個(gè)群體只要約定好一個(gè)時(shí)間作為群體標(biāo)準(zhǔn)時(shí)間就可以了。作為一個(gè)封閉的群體,時(shí)間標(biāo)準(zhǔn)只需要一個(gè)。而現(xiàn)實(shí)中的世界也就像一個(gè)封閉的系統(tǒng),整個(gè)地球的人類(lèi)只需要約定一個(gè)時(shí)間作為世界標(biāo)準(zhǔn)時(shí)間就可以了。
在系統(tǒng)架構(gòu)中,我們就可以嘗試引入一個(gè)叫做時(shí)間仲裁的服務(wù)節(jié)點(diǎn)來(lái)幫助整個(gè)系統(tǒng)約定時(shí)間,如下圖所示:
但是實(shí)際上問(wèn)題還遠(yuǎn)不止這么簡(jiǎn)單,如果系統(tǒng)足夠龐大,就需要有多個(gè)服務(wù)器群,且服務(wù)器還不在同一個(gè)機(jī)房,甚至不在同一個(gè)城市。這時(shí)候我們就需要一個(gè)頂級(jí)時(shí)間仲裁服務(wù)節(jié)點(diǎn),然后每個(gè)機(jī)房的時(shí)間仲裁節(jié)點(diǎn)需要跟這個(gè)頂級(jí)節(jié)點(diǎn)同步。對(duì)于時(shí)間精度要求一般的系統(tǒng)來(lái)說(shuō),可以通過(guò)NTP網(wǎng)絡(luò)時(shí)間協(xié)議(Network Time )來(lái)把計(jì)算機(jī)的時(shí)鐘和UTC世界協(xié)調(diào)時(shí)( Time )進(jìn)行同步。它的對(duì)時(shí)精度在局域網(wǎng)內(nèi)可達(dá)0.1ms,在互聯(lián)網(wǎng)上大概能達(dá)到1-50ms。
我看一下實(shí)際場(chǎng)景中的NTP應(yīng)用示意圖:
即便約定了標(biāo)準(zhǔn)時(shí)間,系統(tǒng)內(nèi)各個(gè)節(jié)點(diǎn)的時(shí)間依然是不絕對(duì)一致的。為什么?因?yàn)闀r(shí)間同步需要通過(guò)網(wǎng)絡(luò)進(jìn)行,而網(wǎng)絡(luò)是有延遲的。實(shí)際環(huán)境中,每臺(tái)服務(wù)器到時(shí)間仲裁節(jié)點(diǎn)的網(wǎng)絡(luò)條件是不一樣的,所以各臺(tái)服務(wù)器之間依然會(huì)有細(xì)小的時(shí)間差異。面對(duì)這種現(xiàn)狀,我們需要妥協(xié),只要保證在業(yè)務(wù)可接受精度內(nèi)的時(shí)間一致就行了。
一般來(lái)說(shuō),大部分業(yè)務(wù)的時(shí)間精度需求在秒級(jí),少數(shù)電商和金融領(lǐng)域的需求在毫秒級(jí),微秒級(jí)的需求不多見(jiàn)。時(shí)間同步問(wèn)題之所以沒(méi)有特別顯著,因?yàn)榇蟛糠滞瑢W(xué)經(jīng)歷的業(yè)務(wù)場(chǎng)景需求在秒級(jí)就可以滿足了。實(shí)際狀況,筆者這幾年經(jīng)歷的真實(shí)生產(chǎn)環(huán)境中,服務(wù)器時(shí)間誤差達(dá)到分鐘級(jí)的都很常見(jiàn)。這樣的時(shí)間誤差,就要引起重視了。
任何兩件事情,都不會(huì)在同一個(gè)時(shí)間點(diǎn)發(fā)生。時(shí)間是線性的,是連續(xù)不斷的,用數(shù)字的方式去表示時(shí)間,是天生有缺陷的,會(huì)有時(shí)間測(cè)量顆粒度問(wèn)題。理論上,只要技術(shù)夠先進(jìn),時(shí)間的度量單位可以不斷縮小。所以我們可以推斷,世界上任何兩件事情都不可能絕對(duì)的同時(shí)發(fā)生,一定是有先后的。也就是說(shuō),沒(méi)有真正的所謂的并發(fā)。通常所說(shuō)的并發(fā),準(zhǔn)確的說(shuō)是在一定時(shí)間段內(nèi)的請(qǐng)求總數(shù),比如1秒內(nèi)的請(qǐng)求數(shù)。
讀到這里,我們明白在理論上并不存在真正并發(fā)的兩個(gè)事件,但是在計(jì)算機(jī)系統(tǒng)中,對(duì)時(shí)間模擬的顆粒度并不是無(wú)限小的。比如現(xiàn)在常見(jiàn)的內(nèi)核版本2.6的Linux系統(tǒng)服務(wù)器的節(jié)拍值是每秒1000次,也就是說(shuō)時(shí)間的精確度在1毫秒,如果通過(guò)CPU時(shí)鐘計(jì)數(shù),可以達(dá)到微秒級(jí)。對(duì)這部分內(nèi)容感興趣的同學(xué)可以參閱《深入理解Linux內(nèi)核》。
于是我們可以得出結(jié)論,在計(jì)算機(jī)世界中,由于時(shí)間顆粒度模擬的限制,會(huì)存在毫秒級(jí)別的多事件并發(fā)。
來(lái)回顧一下剛才說(shuō)明的三個(gè)重要的時(shí)間特征
時(shí)間是靠約定的
可接受的時(shí)間精度
不存在真正的并發(fā),凡事有先后
當(dāng)我們一開(kāi)始對(duì)時(shí)間的這幾個(gè)特征并不了解的時(shí)候,也并不影響我們實(shí)施分布式架構(gòu)。但是隨著架構(gòu)的深入和系統(tǒng)的日漸龐大,一旦出現(xiàn)問(wèn)題后,我們就必須要對(duì)時(shí)間有清楚的認(rèn)識(shí)才能獲得有效的改進(jìn)方案。
接下來(lái)我們看看基于上述特征的幾個(gè)應(yīng)用
應(yīng)用1. 提前約定全局可用的時(shí)間
在本文前面的例子中,我們發(fā)現(xiàn)依靠后端數(shù)據(jù)庫(kù)節(jié)點(diǎn)來(lái)約定時(shí)間在分布式架構(gòu)下是不可靠的。我們可以考慮把時(shí)間約定的環(huán)節(jié)前移。比如在業(yè)務(wù)請(qǐng)求進(jìn)入的時(shí)候,由一個(gè)類(lèi)似時(shí)間仲裁的節(jié)點(diǎn)來(lái)統(tǒng)一分配全局范圍內(nèi)可辨識(shí)的業(yè)務(wù)發(fā)生時(shí)間。時(shí)間仲裁節(jié)點(diǎn)可以根據(jù)系統(tǒng)的實(shí)際業(yè)務(wù)需求,選擇合適的時(shí)間精度。之后,系統(tǒng)內(nèi)任意節(jié)點(diǎn)在處理這條事件記錄的時(shí)候,都以這個(gè)時(shí)間為準(zhǔn)。
應(yīng)用2. 針對(duì)并發(fā)可以使用隊(duì)列實(shí)現(xiàn)先來(lái)后到
把所有事件全部壓入一個(gè)隊(duì)列。把進(jìn)入隊(duì)列的時(shí)間約定為事件發(fā)生的時(shí)間,按照先進(jìn)先出(FIFO)的原則公平的處理所有事件。這個(gè)辦法簡(jiǎn)單有效,很多使用了隊(duì)列的系統(tǒng)都獲得了這個(gè)利益。但是對(duì)于更大的系統(tǒng),比如使用了多個(gè)隊(duì)列,那么會(huì)面臨另外一個(gè)問(wèn)題,就是隊(duì)列之間的時(shí)間同步。這似乎是一個(gè)無(wú)底洞,但是在實(shí)際業(yè)務(wù)設(shè)計(jì)中,這并不難解決。我們可以把同類(lèi)型業(yè)務(wù)的所有事件安排在同一個(gè)隊(duì)列中進(jìn)行,這樣就解決了多隊(duì)列的時(shí)間同步問(wèn)題。目前流行的隊(duì)列系統(tǒng),比如Kafka等,都支持集群部署,可以避免單點(diǎn)故障。如下圖所示:
應(yīng)用3. 實(shí)現(xiàn)分布式架構(gòu)下的事件全局有序回放
這是一個(gè)非常有挑戰(zhàn)的事情。以往單機(jī)系統(tǒng)中,事件回放很容易,因?yàn)樗惺录加幸粋€(gè)時(shí)間戳,這個(gè)時(shí)間戳是基準(zhǔn)一致的。但是在分布式架構(gòu)中,事件的時(shí)間戳沒(méi)有一個(gè)統(tǒng)一的基準(zhǔn),集群中的每一臺(tái)服務(wù)器時(shí)間都不完全一致,要做到精準(zhǔn)有序的回放,幾乎是不可能的事情。
眾所周知,目前的分布式架構(gòu)多用到了微服務(wù)。微服務(wù)是高內(nèi)聚、低耦合的,每個(gè)服務(wù)單元都可以完成一個(gè)基本的任務(wù),如果要協(xié)同其它微服務(wù)一起完成一個(gè)任務(wù),就需要使用消息通訊。每個(gè)微服務(wù)單元因?yàn)楦叨茸灾危匀罩疽彩歉髯元?dú)立的。這樣一來(lái)系統(tǒng)中就沒(méi)有一個(gè)中心點(diǎn)負(fù)責(zé)全局日志,避免了系統(tǒng)中日志瓶頸點(diǎn)的存在的同時(shí),也帶來(lái)一些副作用。如果強(qiáng)行把每個(gè)服務(wù)的日志集合到一起,因?yàn)槊總€(gè)服務(wù)所在的服務(wù)器時(shí)間是不一樣的,歸集后的日志也無(wú)法實(shí)現(xiàn)全局有序的回放。
基于本文對(duì)時(shí)間的認(rèn)識(shí),我們嘗試尋找解決方案。首先想到的是能不能在全局約定一個(gè)標(biāo)準(zhǔn)時(shí)間,比如引入時(shí)間仲裁服務(wù)。然后考慮究竟時(shí)間應(yīng)該精確到什么程度才能滿足需求。因?yàn)橛?jì)算機(jī)的硬件限制,日志時(shí)間通常只能達(dá)到毫秒級(jí)別,再加上網(wǎng)絡(luò)延遲抖動(dòng),我們不可能在一個(gè)復(fù)雜的分布式網(wǎng)絡(luò)中對(duì)時(shí)間精度提出苛刻的要求。最后依據(jù)不存在真正的并發(fā),事件必定有先后的原則,我們考慮是否可以引入一個(gè)計(jì)數(shù)器來(lái)標(biāo)記事件的先后。
我們先來(lái)看一個(gè)圖:
圖中一共ABCD四個(gè)節(jié)點(diǎn)。最初由A節(jié)點(diǎn)先后發(fā)出m1和m2兩個(gè)消息,分別發(fā)給B和C節(jié)點(diǎn)。B和C節(jié)點(diǎn)處理完事件后,先后發(fā)出m3和m4兩個(gè)消息給D節(jié)點(diǎn)。由于時(shí)間精度的關(guān)系,實(shí)際先發(fā)出的m3和后發(fā)出的m4擁有相同的時(shí)間戳。當(dāng)系統(tǒng)回放所有事件的時(shí)候,m3和m4就無(wú)法區(qū)別先后,很有可能m4被先于m3回放,而導(dǎo)致錯(cuò)誤。
現(xiàn)在我們嘗試提出方案。既然使用精準(zhǔn)的時(shí)間是一條不歸路,那么我們就引入一個(gè)叫做邏輯時(shí)間的概念。邏輯時(shí)間是一種組合的時(shí)間表示方式,即:精準(zhǔn)時(shí)間+偏移量。表示為{T,C},兩個(gè)邏輯時(shí)間比較的規(guī)則是先看T分量哪個(gè)大,如果相等,再看C分量。
邏輯時(shí)鐘服務(wù)作為一個(gè)服務(wù)層在系統(tǒng)中的位置如圖:
當(dāng)事件通過(guò)消息在系統(tǒng)內(nèi)傳遞的時(shí)候,邏輯時(shí)鐘服務(wù)會(huì)分配該事件到達(dá)各個(gè)處理節(jié)點(diǎn)的邏輯時(shí)間,保持全局有序。當(dāng)我們需要全局回放事件的時(shí)候,我們可以把位于各個(gè)微服務(wù)節(jié)點(diǎn)的日志記錄收集到統(tǒng)一日志服務(wù)器,然后通過(guò)歸并排序,使日志有序,最后按邏輯時(shí)間進(jìn)行重放即可。由于邏輯時(shí)間中的基準(zhǔn)時(shí)間部分和物理時(shí)間比較接近,所以也可以進(jìn)行倍速重演。
改造后的方案如圖所示:
當(dāng)D節(jié)點(diǎn)收到m3和m4的時(shí)候,會(huì)向邏輯時(shí)鐘服務(wù)申請(qǐng)全局唯一的邏輯時(shí)間。m3和m4因?yàn)橄葋?lái)后到的關(guān)系,分別獲得偏移量001和002,這樣在事件回放的時(shí)候就可以準(zhǔn)確的判斷順序了。
當(dāng)然,這只是一個(gè)簡(jiǎn)單的方案,實(shí)際在生產(chǎn)環(huán)境中,我們還要考慮很多問(wèn)題。比如細(xì)心的同學(xué)可能已經(jīng)發(fā)現(xiàn)問(wèn)題了,如果大量的事件傳遞都要由邏輯時(shí)鐘服務(wù)層來(lái)統(tǒng)一提供時(shí)間服務(wù),就會(huì)對(duì)這個(gè)時(shí)鐘層形成很大的壓力,可能會(huì)成為新的性能瓶頸。所以,這個(gè)時(shí)鐘服務(wù)層也必須是一個(gè)去中心化的設(shè)計(jì)。有興趣的同學(xué)可以參閱以下主題的文章,比如Raft(分布式一致性算法),以及邏輯時(shí)鐘(Lamport Clock)等等。本文不再深入。
最后,我們做一點(diǎn)總結(jié)
時(shí)間和空間是構(gòu)成這個(gè)世界的重要基準(zhǔn)元素。軟件系統(tǒng)的復(fù)雜性,很多時(shí)候是在解決時(shí)間和空間的問(wèn)題。越來(lái)越多的架構(gòu)師已經(jīng)認(rèn)識(shí)到中國(guó)傳統(tǒng)文化中“天人合一”思想的意義。比如在計(jì)算機(jī)中尋找隨機(jī)數(shù)種子是一個(gè)難題,因?yàn)橛?jì)算機(jī)系統(tǒng)是一個(gè)確定的系統(tǒng),沒(méi)有真正的隨機(jī)。于是有人使用大氣噪音( Noise)這種大自然的隨機(jī)現(xiàn)象來(lái)產(chǎn)生隨機(jī)數(shù)序列,效果非常不錯(cuò)。道法自然,也許是解決軟件系統(tǒng)架構(gòu)難題的最后一枚銀彈。
最后希望這篇文章可以拋磚引玉,引發(fā)同學(xué)們更多的思考,謝謝。
任何問(wèn)題歡迎聯(lián)系作者,個(gè)人微信號(hào) ,歡迎交流。
。
。
精彩原創(chuàng)文章投稿有驚喜!
歡迎投稿!
VSRC歡迎精品原創(chuàng)類(lèi)文章投稿,優(yōu)秀文章一旦采納發(fā)布,將為您準(zhǔn)備的豐富獎(jiǎng)金稅后1000元現(xiàn)金或等值禮品,上不封頂!如若是安全文章連載,獎(jiǎng)金更加豐厚,稅后10000元或等值禮品,上不封頂!可點(diǎn)擊“閱讀原文”了解規(guī)則。(最終獎(jiǎng)勵(lì)以文章質(zhì)量為準(zhǔn)。活動(dòng)最終解釋權(quán)歸VSRC所有)
我們聆聽(tīng)您寶貴建議
不知道,大家都喜歡閱讀哪些類(lèi)型的信息安全文章?
不知道,大家都希望我們更新關(guān)于哪些主題的干貨?
現(xiàn)在起,只要您有任何想法或建議,歡迎直接回復(fù)本公眾號(hào)留言!
精彩留言互動(dòng)的熱心用戶,將有機(jī)會(huì)獲得VSRC贈(zèng)送的精美獎(jiǎng)品一份!
同時(shí),我們也會(huì)根據(jù)大家反饋的建議,選取熱門(mén)話題,進(jìn)行原創(chuàng)發(fā)布!
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。