亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 優化推廣 > 正文

趙海平大神談異步處理對分布式系統的優化

2024-04-26 14:21:35
字體:
來源:轉載
供稿:網友

單機時代的數據請求

十五年前寫軟件是很簡單的,一個Client對應一個DB Server,或者多個Client對應一個DB Server,每一個Client執行各自的服務。當時的討論很多是說,這個東西要寫在Client端還是寫在DB Server端,流行的思路有兩種:

1.把DB Server寫得很復雜,比如Oracle數據庫,而Client端則寫得很簡單,只有調用返回
2.DB很簡單,只有簡單的表,而Client寫得復雜。很多創業公司會這樣做,因為他們對SQL不是很熟悉,但是很熟悉PHP。早期Facebook就是典型的代表


大數據時代的數據請求

單機時代隨著兩個趨勢而逐漸成為歷史。一個趨勢是隨著互聯網的流行,越來越多的人開始上網使用Web服務,而且很多時候用戶增長速度是非??斓模Y果造成一臺DB Server無法儲存下所有用戶的數據。第二個趨勢是計算機能力越來越強,網絡服務針對每一個用戶要做的事情也變多了,比如Facebook不僅要保存一個用戶的個人信息,還有他的關系鏈信息,他的使用習慣、點擊習慣等,就造成一個用戶的數據量也大大增加,僅僅訪問一個DB Server就準備好一個頁面變成了不可能的事情。

這就帶來了一個問題:針對多個DB Server的程序應該怎么寫?

針對這個問題也有兩個思路:

1.串行同步。先query DB1,返回res1,再使用res1做另一個DB的query,返回res2。這是在第二個Query依賴第一個Query結果的情況
2.并行同步。針對DB1的query跟針對DB2的query同步進行。這是兩個Query之間沒有依賴關系的情況。Facebook早期專門寫了一個并行處理的函數,用法是 ExecParallelQuery(conn1,Query1,conn2,Query2)
這個時候的代碼就比以前的代碼更加復雜了,不過還是能實現需要實現的需求。但這時候帶來了一個新的問題,就是等待。一個頁面的加載可能需要調用不同的函數,而不同的函數可能是由不同的團隊寫的。比如獲取朋友關系的函數getFriends把自己需要的數據用同步的方式獲取了,但如果一個第三方開發者過來,則不僅要調用這個函數,還需要調用其他函數,這樣其他函數的執行就需要等待前面這個getFriends函數返回了結果之后才能開始執行,就很慢了。

要如何做到并行處理在代碼層面很直觀,在機器上的執行效率又好呢?

異步的處理思路就是這么來的。

所謂異步就是,我這個函數知道這里需要訪問哪幾個DB Server,但我先不著急去訪問,而是先記錄一下,等等看其他函數是不是也要訪問這個DB,如果有的話,待會兒再一起去訪問。異步處理的指令比如說是 conn.asyncExec(Query) ,這個可以立刻返回一個Future對象,意思就是“待會兒再去執行”。如果每個函數都返回這種Future對象,那么就可以根據這些Future對象來判斷哪些請求沒有依賴可以并行處理,哪些請求有依賴需要串行處理了。如此,不同的團隊寫出來的函數就不用一個等一個,而是可以在更高層面上互相合作。

然而這又帶來了一個問題,那就是異步處理的寫法是具有傳染性的。如果一個服務中有的函數寫的異步,有的函數沒寫異步,就會造成有的函數返回了Future Object,有的函數返回了數值,導致無法執行。要實現異步,需要關聯的所有函數都用異步的寫法返回Future Object才可以。

所以Facebook在轉向異步處理的過程是非常痛苦的,一開始做了局部修改,再修改調用了局部修改過的函數的函數,所有調用的調用都要修改,最后全部改成了異步,只要有調用遠程服務IO的操作都要改。每一個DB Query都拆分成兩步,一個set request,一個receive response。這里的工作量很大,所以如果創業團隊的話,最好是第一天就用正確的寫法,就不會這么痛苦。

所有函數改寫后,每一個函數執行都會返回Future Object。那么異步處理的第一步,就是將這些Future Object形成一棵依賴樹的結構,好像這樣:
201662104115662.jpg (602×332)

這里每個節點都是一個Future對象,每一個Future對象有兩種狀態,一個是等待執行,一個是完成執行。同級的節點是沒有依賴關系的,可以并行執行;上下節點是有依賴關系的,需要串行執行,先執行下層再執行上層。

樹結構形成后,從下到上執行,直到最上面的top parent節點被執行進入完成執行的狀態,就是完成,比如一個頁面加載完畢。

所以異步處理之后有一個很有意思的情況,那就是PHP這個語言已經跟以前不同了,不再是一上來就是執行,而是一上來先lazy一下,看清楚所有的Query之后再執行。

異步處理還需要解決的問題

到目前為止,這樣做異步處理似乎已經是足夠好的優化,但實際上還有問題。看看下面這個例子。

比如我們現在有兩個查詢需求。一個是查詢你在淘寶上買過東西的朋友,另一個是查詢你在淘寶上買過保時捷的朋友。常理來說,我們會先想到查詢你在淘寶上的朋友,再進行另一個條件的查詢,比如這樣:

Java Code復制內容到剪貼板
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品免费视频| 日韩精品视频免费在线观看| 亚洲精品国产精品国自产观看浪潮| 国产一区二区三区在线免费观看| 亚洲一区二区三区四区视频| 欧美精品一区三区| 日韩电影免费观看在线| 久久精品久久久久久| 91av在线免费观看| 91中文在线视频| 96sao精品视频在线观看| 久久亚洲精品小早川怜子66| 久久久噜久噜久久综合| 亚洲成人999| 91欧美视频网站| 色综合色综合久久综合频道88| 狠狠躁夜夜躁人人爽天天天天97| 日韩中文字幕久久| 欧美大片在线看免费观看| 久久人91精品久久久久久不卡| 久久久久久久久电影| 中文字幕精品在线视频| 亚洲在线免费看| 91午夜在线播放| 日韩欧美亚洲成人| 亚洲成人黄色网| 国产欧美日韩精品在线观看| 国产精品99久久久久久久久久久久| 欧美中文字幕精品| 亚洲精品色婷婷福利天堂| 欧美亚洲国产日本| 日本精品在线视频| 亚洲影视九九影院在线观看| 国产一区二区丝袜高跟鞋图片| 欧美亚洲第一页| 精品亚洲一区二区三区在线观看| 91丨九色丨国产在线| 尤物yw午夜国产精品视频明星| 亚洲成年人在线| 青青草原一区二区| 91精品视频大全| 国产精品入口日韩视频大尺度| 久久精品99久久香蕉国产色戒| 欧美午夜女人视频在线| 日韩免费在线观看视频| www.日韩欧美| 亚洲欧美日韩中文在线制服| 亚洲丝袜在线视频| 亚洲视频欧洲视频| 国产91在线播放精品91| 51色欧美片视频在线观看| 亚洲精品中文字幕有码专区| 欧美日韩在线一区| 国产精品免费一区二区三区都可以| 在线观看日韩视频| 2019中文字幕全在线观看| 欧美激情第三页| 国产精品盗摄久久久| 亚洲aa中文字幕| 亚洲欧洲午夜一线一品| 亚洲性xxxx| 久久免费在线观看| www.久久久久久.com| 综合136福利视频在线| 亚洲精品国精品久久99热一| 欧美日韩成人网| 日韩免费视频在线观看| 欧美成年人网站| 国产精品久久久久久久9999| 欧美床上激情在线观看| 欧美日韩成人在线播放| 欧洲一区二区视频| 久久香蕉频线观| 4438全国亚洲精品在线观看视频| 亚洲区在线播放| 在线日韩中文字幕| 日韩一区二区三区在线播放| 欧美与黑人午夜性猛交久久久| 亚洲黄一区二区| 国外成人在线播放| 久久成人这里只有精品| 日韩av电影国产| 亚洲欧洲在线观看| 性夜试看影院91社区| 中文字幕亚洲无线码在线一区| 91亚洲精品久久久久久久久久久久| 亚洲一区二区三区xxx视频| 中文字幕日本欧美| 久久av在线看| 国产免费亚洲高清| 国产91ⅴ在线精品免费观看| 性夜试看影院91社区| 91精品国产色综合| 欧美成年人视频网站欧美| 中文字幕精品网| 色阁综合伊人av| 亚洲综合日韩在线| 日本19禁啪啪免费观看www| 国产在线视频91| 国产精品啪视频| 亚洲大尺度美女在线| 色综合久久精品亚洲国产| 国产中文字幕91| 欧美视频在线观看免费网址| 成人a免费视频| 亚洲天堂男人天堂| 欧美在线观看www| 国产精品视频区1| 精品视频在线观看日韩| 中文字幕视频一区二区在线有码| 日韩福利在线播放| 亚洲精品99久久久久| 午夜精品国产精品大乳美女| 91午夜理伦私人影院| 欧美性猛交丰臀xxxxx网站| 国产精品av在线播放| 91精品国产综合久久久久久久久| 日韩电影在线观看永久视频免费网站| 久久久久久久久久久av| 色悠悠久久久久| 精品国产乱码久久久久久虫虫漫画| 精品国产91乱高清在线观看| 午夜剧场成人观在线视频免费观看| 91国内揄拍国内精品对白| 国产欧美一区二区| 国产一区二区三区日韩欧美| 久久躁日日躁aaaaxxxx| 欧美性色视频在线| 国产在线观看一区二区三区| 国产一区二区三区在线视频| 九九久久国产精品| 亚洲理论在线a中文字幕| 日韩av手机在线观看| 国产精品国产自产拍高清av水多| 欧美黑人xxxx| 国产欧美欧洲在线观看| 亚洲成人激情在线| 亚洲精选中文字幕| 亚洲综合小说区| 日韩国产精品视频| 日韩精品亚洲视频| 欧美日韩精品国产| 久久久免费观看视频| 国产精品27p| 国产在线观看一区二区三区| 亚洲国产毛片完整版| 亚洲精品一区中文| www日韩中文字幕在线看| 欧美一区二粉嫩精品国产一线天| 欧美久久精品一级黑人c片| 欧美激情xxxx性bbbb| 91久久精品一区| 国产成人自拍视频在线观看| 亚洲影院色在线观看免费| 国产精品欧美亚洲777777| 国产精品久久久久不卡| 国产欧美日韩高清| 国产午夜精品视频免费不卡69堂| 日韩精品免费在线播放| 欧美国产乱视频| 久久久久久久av| 亚洲欧美综合区自拍另类| 欧美成人精品在线视频| 1769国内精品视频在线播放|