国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

40 張圖揭秘后端技術(shù)需要學(xué)啥

共 14077字,需瀏覽 29分鐘

 ·

2020-09-06 06:37




說到后端開發(fā),難免會遇到各種所謂高大上的「關(guān)鍵詞 」,對于我們應(yīng)屆生小白,難免會覺得比較陌生,因為在學(xué)校確實比較少遇見這些所謂高大上的東西,那么今天就帶著學(xué)習(xí)的態(tài)度和大家分享這些看似可以裝逼可以飛的帶逼格的關(guān)鍵詞吧。

大綱

1 分布式

在學(xué)校里的項目中,一個 Web 系統(tǒng)可能咋們一個人就搞定,因為幾乎不考慮并發(fā)量,性能咋樣,所謂「過得去 」足矣,但是為了面試考慮,我們又不得不找點(diǎn)類似秒殺系統(tǒng)作為我們簡歷的支撐項目(即使已經(jīng)爛大街)。那么先問你第一個問題,為什么就采用了分布式的方案落地這個項目?

當(dāng)一個人或者幾十個使用你的系統(tǒng),哎呀我去,請求秒回,效果倍棒,于是乎簡歷砰砰寫上卻多么牛X,當(dāng)面試官就會問你你這項目做了啥,測試過沒,并發(fā)量如何,性能如何?你就…..

不懂就蹭

當(dāng)訪問系統(tǒng)的用戶越來越多,可是我們的系統(tǒng)資源有限,所以需要更多的 CPU內(nèi)存去處理用戶的計算請求,當(dāng)然也就要求更大的網(wǎng)絡(luò)帶寬去處理數(shù)據(jù)的傳輸,也需要更多的磁盤空間存儲數(shù)據(jù)。資源不夠,消耗過度,服務(wù)器崩潰,系統(tǒng)也就不干活了,那么在這樣的情況怎么處理?

  • 垂直伸縮

縱向生長。通過提升單臺服務(wù)器的計算處理能力來抵抗更大的請求訪問量。比如使用更快頻率的CPU,更快的網(wǎng)卡,塞更多的磁盤等。其實這樣的處理方式在電信,銀行等企業(yè)比較常見,讓摩托車變?yōu)樾∑?,更?qiáng)大的計算機(jī),處理能力也就越強(qiáng),但是對于運(yùn)維而言也就越來越復(fù)雜。那真的就這樣花錢買設(shè)備就完事了?

當(dāng)然不,單臺服務(wù)器的計算處理能力是有限的,而且也會嚴(yán)重受到計算機(jī)硬件水平的制約。

  • 水平伸縮

一臺機(jī)器處理不過來,我就用多臺廉價的機(jī)器合并同時處理,人多力量大嘛,通過多臺服務(wù)器構(gòu)成分布式集群從而提升系統(tǒng)的整體處理能力。這里說到了分布式,那我們看看分布式的成長過程

記住一句話:系統(tǒng)的技術(shù)架構(gòu)是需求所驅(qū)動

  • 最初的單體系統(tǒng),只需要部分用戶訪問,

    單體結(jié)構(gòu)

做系統(tǒng)的原因當(dāng)然是有需求,有價值,可賺錢。隨著使用系統(tǒng)的用戶越來越多,這時候關(guān)注的人越來越多,單臺服務(wù)器扛不住了,關(guān)注的人覺得響應(yīng)真慢,沒啥意思,就開始吐槽,但是這一吐槽,導(dǎo)致用戶更多,畢竟大家都愛吃瓜。

來自網(wǎng)絡(luò)吃瓜

這樣下去不得不進(jìn)行系統(tǒng)的升級,將數(shù)據(jù)庫和應(yīng)用分離。

數(shù)據(jù)庫應(yīng)用分離

這樣子,咋們將數(shù)據(jù)庫和應(yīng)用程序分離后,部署在不同的服務(wù)器中,從1臺服務(wù)器變?yōu)槎嗯_服務(wù)器,處理響應(yīng)更快,內(nèi)容也夠干,訪問的用戶呈指數(shù)增長,這多臺服務(wù)器都有點(diǎn)扛不住了,怎么辦?

加一個緩存吧,我們不每次從數(shù)據(jù)庫中讀取數(shù)據(jù),而將應(yīng)用程序需要的數(shù)據(jù)暫存在緩沖中。緩存呢,又分為本地緩存分布式的緩存。分布式緩存,顧名思義,使用多臺服務(wù)器構(gòu)成集群,存儲更多的數(shù)據(jù)并提供緩存服務(wù),從而提升緩存的能力。

加了緩存哪些好處?

  • 應(yīng)用程序不再直接訪問數(shù)據(jù)庫,提升訪問效率。因為緩存內(nèi)容在內(nèi)存中,不用每次連接存放磁盤中的數(shù)據(jù)庫,

系統(tǒng)越來越火,于是考慮將應(yīng)用服務(wù)器也作為集群。

集群

2 緩存架構(gòu)

干啥啥不行,緩存第一名。不吹牛,緩存應(yīng)用在計算機(jī)的各個角落。緩存可說是軟件技術(shù)中的的殺手锏,無論是程序代碼使用buffer,還是網(wǎng)絡(luò)架構(gòu)中使用緩存,虛擬機(jī)也會使用大量的緩存。其實最初在CPU中也就開始使用緩存。緩存分為兩種,一種是通讀緩存,一種是旁路緩存

  • 通讀緩存

假設(shè)當(dāng)前應(yīng)用程序獲取數(shù)據(jù),如果數(shù)據(jù)存在于通讀緩存中就直接返回。如果不存在于通讀緩存,那么就訪問數(shù)據(jù)源,同時將數(shù)據(jù)存放于緩存中。下次訪問就直接從緩存直接獲取。比較常見的為CDN反向代理

通讀緩存

CDN

CDN稱為內(nèi)容分發(fā)網(wǎng)絡(luò)。想象我們京東購物的時候,假設(shè)我們在成都,如果買的東西在成都倉庫有就直接給我們寄送過來,可能半天就到了,用戶體驗也非常好,就不用從北京再寄過來。同樣的道理,用戶就可以近距離獲得自己需要的數(shù)據(jù),既提高了響應(yīng)速度,又節(jié)約了網(wǎng)絡(luò)帶寬和服務(wù)器資源。

  • 旁路緩存

應(yīng)用程序需要自己從數(shù)據(jù)源讀取數(shù)據(jù),然后將這個數(shù)據(jù)寫入到旁路緩存中。這樣,下次應(yīng)用程序需要數(shù)據(jù)的
時候,就可以通過旁路緩存直接獲得數(shù)據(jù)了

旁路緩存

緩存的好處

  • 因為大部分緩存的數(shù)據(jù)存儲在內(nèi)存中,相比于硬盤或者從網(wǎng)絡(luò)中獲取效率更高,響應(yīng)時間更快,性能更好

  • 通過 CDN 等通讀緩存可以降低服務(wù)器的負(fù)載能力。

  • 因為緩存通常會記錄計算結(jié)果。如果緩存命中直接返回,否則需要進(jìn)行大量的運(yùn)算。所以使用緩存也減少了CPU 的計算小號,加快處理速度

緩存缺點(diǎn)

我們緩存的數(shù)據(jù)來自源數(shù)據(jù),如果源數(shù)據(jù)被修改了,俺么緩存數(shù)據(jù)很肯能也是被修改過的,成為臟數(shù)據(jù),所以怎么辦?

  • 過期失效

在每次寫入緩存數(shù)據(jù)的時候標(biāo)記失效時間,讀取數(shù)據(jù)的時候檢查數(shù)據(jù)是否失效,如果失效了就重新從數(shù)據(jù)源獲取數(shù)據(jù)。、

  • 失效通知

應(yīng)用程序在更新數(shù)據(jù)源的時候,通知清除緩存中的數(shù)據(jù)。

是不是數(shù)據(jù)使用緩存都有意義呢?

非也,通常放入緩存中的數(shù)據(jù)都是帶有熱點(diǎn)的數(shù)據(jù),比如當(dāng)日熱賣商品,或者熱門吃瓜新聞,這樣將數(shù)據(jù)存放在緩存中,會被多次讀取,從而緩存的命中率也會比較高

3 異步架構(gòu)

在前面中,通過緩存實際上很多時候是解決了讀的問題,加快了讀取數(shù)據(jù)的能力。因為緩存通常很難保證數(shù)據(jù)的持久性和一致性,所以我們通常不會將數(shù)據(jù)直接寫入緩存中,而是寫入 RDBMAS 等數(shù)據(jù)中,那如何提升系統(tǒng)的寫操作性能呢?

此時假設(shè)兩個系統(tǒng)分別為A,B,其中A系統(tǒng)依賴B系統(tǒng),兩者通信采用遠(yuǎn)程調(diào)用的方式,此時如果B系統(tǒng)出故障,很可能引起A系統(tǒng)出故障。

從而不得不單獨(dú)進(jìn)行升級,怎么辦?

使用消息隊列的異步架構(gòu),也成為事件驅(qū)動模型。

異步相對于同步而言,同步通常是當(dāng)應(yīng)用程序調(diào)用服務(wù)的時候,不得不阻塞等待服務(wù)期完成,此時CPU空閑比較浪費(fèi),直到返回服務(wù)結(jié)果后才會繼續(xù)執(zhí)行。

同步

舉個例子,小藍(lán)今天想在系統(tǒng)中加一個發(fā)郵件的功能,通過SMTP和遠(yuǎn)程服務(wù)器通信,但是遠(yuǎn)程服務(wù)器有很多郵件需要等待發(fā)送呢,當(dāng)前郵件就可能等待比較長時間才能發(fā)送成功,發(fā)送成功后反饋與應(yīng)用程序。這個過程中,遠(yuǎn)程服務(wù)器發(fā)送郵件的時候,應(yīng)用程序就阻塞,準(zhǔn)確的說是執(zhí)行應(yīng)用程序的線程阻塞。

這樣阻塞帶來什么問題“?

  • 不能釋放占用的系統(tǒng)資源,導(dǎo)致系統(tǒng)資源不足,影響系統(tǒng)性能

  • 無法快速給用戶響應(yīng)結(jié)果

但是在實際情況中,我們發(fā)送郵件,并不需要得到發(fā)送結(jié)果。比如用戶注冊,發(fā)送賬號激活郵件,無論郵件是否發(fā)送成功都會收到"返回郵件已經(jīng)發(fā)送,請查收郵件確認(rèn)激活",怎樣才能讓應(yīng)用程序不阻塞?

消息隊列的異步模型

此時就比較清晰了,調(diào)用者將消息發(fā)送給消息隊列直接返回,應(yīng)用程序收到返回以后繼續(xù)執(zhí)行,快讀響應(yīng)用戶釋放資源。有專門的消費(fèi)隊列程序從中消息隊列取出數(shù)據(jù)并進(jìn)行消費(fèi)。如果遠(yuǎn)程服務(wù)出現(xiàn)故障,只會傳遞給消費(fèi)者程序而不會影響到應(yīng)用程序。

消息隊列

消息隊列模型中通常有三個角色,分別為生產(chǎn)者,消息隊列消費(fèi)者。生產(chǎn)者產(chǎn)生數(shù)據(jù)封裝為消息發(fā)送給消息隊列,專門的消費(fèi)程序從消息隊列中取出數(shù)據(jù),消費(fèi)數(shù)據(jù)。在我看來,消息隊列主要是緩沖消息,等待消費(fèi)者消費(fèi)。其中消費(fèi)的方式分為兩種

  • 點(diǎn)對點(diǎn)

對生產(chǎn)者多消費(fèi)者的情況。一個消息被一個消費(fèi)者消費(fèi)

多生產(chǎn)消費(fèi)

上述的發(fā)郵件例子就是典型的點(diǎn)對點(diǎn)模式?;ゲ桓蓴_,其中某個服務(wù)出現(xiàn)問題不會印象到全局

  • 訂閱模式

開發(fā)人員在消息隊列中設(shè)置主題,生產(chǎn)者往相應(yīng)的主題發(fā)送數(shù)據(jù),消費(fèi)者從對應(yīng)的主題中消費(fèi)數(shù)據(jù),每個消費(fèi)者按照自己業(yè)務(wù)邏輯分別進(jìn)行計算

訂閱模式

這個比較好理解,比如在用戶注冊的時候,我們將注冊信息放入主題用戶中,消費(fèi)者訂閱了這個主題,可能有構(gòu)造短信消息的消費(fèi)者,也有推廣產(chǎn)品的消費(fèi)者,都可以根據(jù)自己業(yè)務(wù)邏輯進(jìn)行數(shù)據(jù)處理。

用戶注冊案例

使用異步模型的優(yōu)點(diǎn)

  • 快速響應(yīng)

不在需要等待。生產(chǎn)者將數(shù)據(jù)發(fā)送消息隊列后,可繼續(xù)往下執(zhí)行,不虛等待耗時的消費(fèi)處理

  • 削峰填谷(需要修改)

互聯(lián)網(wǎng)產(chǎn)品會在不同的場景其并發(fā)請求量不同?;ヂ?lián)網(wǎng)應(yīng)用的訪問壓力隨時都在變化,系統(tǒng)的訪問高峰和低谷的并發(fā)壓力可能也有非常大的差距。如果按照壓力最大的情況部署服務(wù)器集群,那么服務(wù)器在絕大部分時間內(nèi)都處于閑置狀態(tài)。但利用消息隊列,我們可以將需要處理的消息放入消息隊列,而消費(fèi)者可以控制消費(fèi)
速度,因此能夠降低系統(tǒng)訪問高峰時壓力,而在訪問低谷的時候還可以繼續(xù)消費(fèi)消息隊列中
未處理的消息,保持系統(tǒng)的資源利用率

  • 降低耦合

如果調(diào)用是同步,如果調(diào)用是同步的,那么意味著調(diào)用者和被調(diào)用者必然存在依賴,一方面是代碼上的依賴,應(yīng)用程序需要依賴發(fā)送郵件相關(guān)的代碼,如果需要修改發(fā)送郵件的代碼,就必須修改應(yīng)用程序,而且如果要增加新的功能

那么目前主要的消息隊列有哪些,其有缺點(diǎn)是什么?(好好記下這個高頻題目啦)

4 負(fù)載均衡

一臺機(jī)器扛不住了,需要多臺機(jī)器幫忙,既然使用多臺機(jī)器,就希望不要把壓力都給一臺機(jī)器,所以需要一種或者多種策略分散高并發(fā)的計算壓力,從而引入負(fù)載均衡,那么到底是如何分發(fā)到不同的服務(wù)器的呢?

砸錢

最初實現(xiàn)負(fù)載均衡采取的方案很直接,直接上硬件,當(dāng)然也就比較貴,互聯(lián)網(wǎng)的普及,和各位科學(xué)家的無私奉獻(xiàn),各個企業(yè)開始部署自己的方案,從而出現(xiàn)負(fù)載均衡服務(wù)器

HTTP重定向負(fù)載均衡

也屬于比較直接,當(dāng)HTTP請求叨叨負(fù)載均衡服務(wù)器后,使用一套負(fù)載均衡算法計算到后端服務(wù)器的地址,然后將新的地址給用戶瀏覽器,瀏覽器收到重定向響應(yīng)后發(fā)送請求到新的應(yīng)用服務(wù)器從而實現(xiàn)負(fù)載均衡,如下圖所示

HTTP重定向負(fù)載均衡

優(yōu)點(diǎn):

  • 簡單,如果是java開發(fā)工程師,只需要servlet中幾句代碼即可

缺點(diǎn):

  • 加大請求的工作量。第一次請求給負(fù)載均衡服務(wù)器,第二次請求給應(yīng)用服務(wù)器

  • 因為要先計算到應(yīng)用服務(wù)器的 IP 地址,所以 IP 地址可能暴露在公網(wǎng),既然暴露在了公網(wǎng)還有什么安全可言

DNS負(fù)載均衡

了解計算機(jī)網(wǎng)絡(luò)的你應(yīng)該很清楚如何獲取 IP 地址,其中比較常見的就是 DNS 解析獲取 IP 地址。用戶通過瀏覽器發(fā)起HTTP請求的時候,DNS 通過對域名進(jìn)行即系得到 IP 地址,用戶委托協(xié)議棧的 IP 地址簡歷 HTTP 連接訪問真正的服務(wù)器。這樣不同的用戶進(jìn)行域名解析將會獲取不同的IP地址從而實現(xiàn)負(fù)載均衡

DNS負(fù)載均衡

乍一看,和HTTP重定向的方案不是很相似嗎而且還有 DNS 解析這一步驟,也會解析出 IP 地址,不一樣的暴露?每次都需要解析嗎,當(dāng)然不,通常本機(jī)就會有緩存,在實際的工程項目中通常是怎么樣的呢

  • 通過 DNS 解析獲取負(fù)載均衡集群某臺服務(wù)器的地址

  • 負(fù)載均衡服務(wù)器再一次獲取某臺應(yīng)用服務(wù)器,這樣子就不會將應(yīng)用服務(wù)器的 IP 地址暴露在官網(wǎng)了

反向代理負(fù)載均衡

這里典型的就是Nginx提供的反向代理和負(fù)載均衡功能。用戶的請求直接叨叨反向代理服務(wù)器,服務(wù)器先看本地是緩存過,有直接返回,沒有則發(fā)送給后臺的應(yīng)用服務(wù)器處理。

反向代理負(fù)載均衡

IP負(fù)載均衡

上面一種方案是基于應(yīng)用層的,IP很明顯是從網(wǎng)絡(luò)層進(jìn)行負(fù)載均衡。TCP./IP協(xié)議棧是需要上下層結(jié)合的方式達(dá)到目標(biāo),當(dāng)請求到達(dá)網(wǎng)絡(luò)層的黑猴。負(fù)載均衡服務(wù)器對數(shù)據(jù)包中的IP地址進(jìn)行轉(zhuǎn)換,從而發(fā)送給應(yīng)用服務(wù)器

IP負(fù)載均衡

注意,這種方案通常屬于內(nèi)核級別,如果數(shù)據(jù)比較小還好,但是大部分情況是圖片等資源文件,這樣負(fù)載均衡服務(wù)器會出現(xiàn)響應(yīng)或者請求過大所帶來的瓶頸

數(shù)據(jù)鏈路負(fù)載均衡

它可以解決因為數(shù)據(jù)量他打而導(dǎo)致負(fù)載均衡服務(wù)器帶寬不足這個問題。怎么實現(xiàn)的呢。它不修改數(shù)據(jù)包的IP地址,而是更改mac地址。應(yīng)用服務(wù)器和負(fù)載均衡服務(wù)器使用相同的虛擬IP

數(shù)據(jù)鏈路負(fù)載均衡

以上介紹了幾種負(fù)載均衡的方式,但是很重要的負(fù)載均衡算法卻沒有設(shè)計,其中包含了輪詢,隨機(jī),最少連接,下面分別對此進(jìn)行介紹

5 數(shù)據(jù)存儲

公司存在的價值在于流量,流量需要數(shù)據(jù),可想而知數(shù)據(jù)的存儲,數(shù)據(jù)的高可用可說是公司的靈魂。那么改善數(shù)據(jù)的存儲都有哪些手段或方法呢

  • 數(shù)據(jù)主從復(fù)制

主從復(fù)制比較好理解,需要使用兩個數(shù)據(jù)庫存儲一樣的數(shù)據(jù)。其原理為當(dāng)應(yīng)用程序A發(fā)送更新命令到主服務(wù)器的時候,數(shù)據(jù)庫會將這條命令同步記錄到Binlog中,然后其他線程會從Binlog中讀取并通過遠(yuǎn)程通訊的方式復(fù)制到另外服務(wù)器。服務(wù)器收到這更新日志后加入到自己Relay Log中,然后SQL執(zhí)行線程從Relay Log中讀取次日志并在本地數(shù)據(jù)庫執(zhí)行一遍,從而實現(xiàn)主從數(shù)據(jù)庫同樣的數(shù)據(jù)。

主從復(fù)制

主從復(fù)制可以方便進(jìn)行讀寫分離,可以使用一主多從的方式保證高可用,如果從數(shù)據(jù)庫A掛了,可以將讀操作遷移到從數(shù)據(jù)庫完成高可用。但是如果主數(shù)據(jù)庫掛了咋搞,那就Mysql的主主復(fù)制??墒遣还苌厦嬲f的那種方式都不是提升它的存儲能力,這就需要進(jìn)行數(shù)據(jù)庫的分片

  • 數(shù)據(jù)庫分片

將一張表分成若干片,其中每一片都包含一部分行記錄,然后將每一片存儲在不同的服務(wù)器中,這樣就實現(xiàn)一張表存放在多臺服務(wù)器中,哪都有哪些分片存儲的方案?

最開始使用"硬編碼"的方式,此方式從字面上可以理解為直接在代碼中指定。假定表為用戶表,通過ID的奇偶存放在不同的服務(wù)器上,如下圖

在這里插入圖片描述

這種方式的缺點(diǎn)很明顯,當(dāng)需要增加服務(wù)器的時候,就需要改動代碼,這就不友好了。比較常見的數(shù)據(jù)庫分片算法是通過余數(shù)Hash算法,根據(jù)主鍵ID和服務(wù)器的數(shù)量取模,根據(jù)余數(shù)確定服務(wù)器。

6 搜索引擎

我們使用谷歌瀏覽器的時候,輸入搜索關(guān)鍵字,就會出現(xiàn)搜索到多少條結(jié)果,用時多少,它是如何做到在如此短的時間完成這么大數(shù)據(jù)量的搜索。

先來想第一個問題,全世界這么多網(wǎng)頁在哪里?

互聯(lián)網(wǎng)的存在讓你和我隔著屏幕都知道你多帥。當(dāng)然,每個網(wǎng)頁中都會存在很多其他網(wǎng)頁的超鏈接,這樣構(gòu)成了龐大的網(wǎng)絡(luò)。對于搜索引擎而言,目標(biāo)為解析這些網(wǎng)頁獲取超鏈接,下載鏈接內(nèi)容(過濾),具體一些說。

將URL存放于池子中,從池子中取出URL模擬請求,下載對應(yīng)的HTML,并存放于服務(wù)器上,解析HTML內(nèi)容時如果有超鏈接URL,檢測是否已經(jīng)爬取過,如果沒有暫存隊列,后面再依次爬取。架構(gòu)圖如下

爬蟲常規(guī)方法

將獲取的所有網(wǎng)頁進(jìn)行編號并得到網(wǎng)頁集合。然后通過分詞技術(shù)獲得每一個單詞,組成矩陣如下所示

分詞

就這樣按照單詞-文檔的方式組織起來就叫做倒排索引了。

倒排索引

Google通過建立<單詞,地址>這樣的文檔,主要搜索到單詞就能定位到文檔的地址列表,然后根據(jù)列表中文檔的編號就展現(xiàn)文檔信息從而實現(xiàn)快速的檢索。

如果搜索出來結(jié)果很多,Google是如何能更精準(zhǔn)的將我們需要的信息呈現(xiàn)給我們呢。它很明顯有個排序功能,那是如何排序的?

Google使用了一種叫做"PageRank"的算法,通過計算每個網(wǎng)頁的權(quán)重,并按照權(quán)重排序,權(quán)重高的自然就在顯示在前面,那問題來了,為啥權(quán)重高的,排在前面的通常就是用戶所需要的呢?這就得了解下pagerank算法了

在pagerank中,如果網(wǎng)頁A包含網(wǎng)頁B說明A認(rèn)可B,即投一票。如下圖ABCD四個網(wǎng)頁所示,箭頭代表超鏈接的方向,比如A->B代表A網(wǎng)頁包含B的超鏈接

pagerank

怎么計算的?

ABCD 初始值都為1,然后根據(jù)關(guān)系計算權(quán)重。比如此時B包含了AD兩個網(wǎng)頁,那么權(quán)重1被分為兩個1/2分別給A和D,此時A包含BCD,那么此時A頁面新的權(quán)重為1/2 + 1/3 + 1 = 11/6

pagerank 值越受推薦,代表用戶越想看到?;诿總€網(wǎng)頁的 pagerank 值對倒排索引中的文檔列表排序,靠前者則是用戶想看到的文檔。

這種是因為超鏈接,引入權(quán)值的方式排序。還有其他諸如對于商品售賣次數(shù)排序或者電影點(diǎn)贊或評價分?jǐn)?shù)排序。還有通過關(guān)鍵字查找,希望找到和搜索詞相關(guān),這個時候可能就會采用詞頻TF進(jìn)行排序,詞頻代表所查詞和文檔的相關(guān)程度

詞頻TF

比如我們搜索"Java后端"出現(xiàn)的結(jié)果以"后端"的相關(guān)技術(shù)。

在大部分的應(yīng)用中都會涉及到搜索引擎技術(shù),技術(shù)龐大且復(fù)雜,希望各位老鐵根據(jù)自身情況搜索相關(guān)所需學(xué)習(xí),校招面試中不出現(xiàn)盲點(diǎn)即可。

7 微服務(wù)

技術(shù)的引進(jìn)一定是想解決某個痛點(diǎn)。我不希望在一個系統(tǒng)中,一小點(diǎn)改動就影響到全局,希望各個功能模塊拆分清晰,不管是測試還是運(yùn)維都能節(jié)省更多的時間。

那么單體的架構(gòu)出現(xiàn)了哪些問題?

  • 代碼分支管理困難

各個部門分別完成各自的任務(wù),但是最后需要 merge 在一起成為整個系統(tǒng),merge過程經(jīng)歷的人都知道,問題是真XX多。所以不再是996

  • 新增功能麻煩

隨著項目的效益越來越好,用戶的需求也更多,招聘的人可能更多,對于新手來說上來是一臉懵逼的,老員工忙的要死,新員工成為了摸魚專家

  • 耗盡連接

用戶的增多,每個應(yīng)用都得和數(shù)據(jù)庫連接,給數(shù)據(jù)庫的連接造成太大的壓力甚至耗盡連接

微服務(wù)

“微"-------微微一笑很傾城,微笑,微小。顧名思義,講一個大的系統(tǒng),拆分為一個個小的服務(wù),分別對各個小服務(wù)進(jìn)行管理。這樣說感覺太不專業(yè)了,專業(yè)點(diǎn)

  • 大應(yīng)用拆分為小模塊

  • 小模塊不屬于集群中

  • 通過遠(yuǎn)程調(diào)用的方式依賴各個獨(dú)立的模塊完成業(yè)務(wù)的處理

這些小的模塊就叫做------微服務(wù),整體也就是所謂的微服務(wù)架構(gòu)。

既然拆分成了小服務(wù),這么多小服務(wù)怎么協(xié)調(diào)成為一個問題,甚至都不知道怎么掉這個服務(wù),所以在微服務(wù)的整體架構(gòu)中出現(xiàn)了注冊中心,誰需要調(diào)用使用提供的接口即可。如下圖所示

注冊中心

從上圖我們能知道主要是三個概念

  • 服務(wù)提供者

微服務(wù)的具體提供者,其他微服務(wù)通過接口調(diào)用即可

  • 服務(wù)消費(fèi)者

對應(yīng)于服務(wù)提供者,按照提供者接口編程即可。這么輕松的嘛,當(dāng)然很多細(xì)節(jié)。舉個例子,注明的dubbo服務(wù)框架,服務(wù)接口通過Dubbo框架代理機(jī)制訪問Dubbo客戶端,客戶端通過服務(wù)接口聲明去注冊中心查看有哪些服務(wù)器,并將這服務(wù)器列表給客戶端??蛻舳巳缓蟾鶕?jù)負(fù)載均衡策略選擇其中一個服務(wù)器,通過遠(yuǎn)程調(diào)用的方式發(fā)送服務(wù)調(diào)用。那么使用微服務(wù)需要注重哪幾點(diǎn)

選擇中的注意事項

不要拿工具硬上需求,結(jié)合業(yè)務(wù)也許會更佳

8 高可用

高可用,意味著一臺機(jī)器掛了沒事,其他機(jī)器可以照常工作,用戶體驗一樣倍棒,用戶壓根就不知道,臥槽,你居然升級了系統(tǒng),我居然一點(diǎn)感受都沒有。那么高可用總有個標(biāo)準(zhǔn)吧,是百分之80就行還是90?

一個系統(tǒng)突然不能訪問的原因很多,

  • 硬件故障

  • 數(shù)據(jù)庫宕機(jī)

  • 磁盤孫歡

  • bug

  • 光纜斷了

可用性指標(biāo)

通過多少個9來衡量,比如大寶系統(tǒng)可用性為4個9,意味著是99.99%,說明它的服務(wù)保證運(yùn)行時間只有0.01不可用。

高可用涉及到技術(shù)成本和設(shè)備成本,不是說高可用值越高越好,而是根據(jù)具體工具具體場景而定,這里分享一些高可用策略

冗余備份

任何一個服務(wù)都有備份,就反復(fù)我們都會對我們筆記本電腦相關(guān)文件進(jìn)行備份一樣,以防萬一。即使一臺服務(wù)器掛了,可以很快的切換以致于讓用戶不會覺得"這系統(tǒng)怎么這么渣"。

負(fù)載均衡

使用多臺服務(wù)器分擔(dān)一臺服務(wù)器的壓力,滿足高并發(fā)的請求。怎么實現(xiàn)的呢,應(yīng)用程序會有一個心跳檢測/健康檢查機(jī)制,如果發(fā)現(xiàn)不妥切換即可。上面提到的數(shù)據(jù)庫主主復(fù)制也是高可用的方案之一,技術(shù)思想果然是相通的

負(fù)載均衡

限流降級

我們的目標(biāo)不是沒有蛀牙,而是希望整個系統(tǒng)不要掛掉。限流是對部分請求進(jìn)行丟棄處理,保證大部分的用戶可以正常的請求完成任務(wù)。

降級:

可以屏蔽部分當(dāng)前看來不是很有用的任務(wù)。比如電商系統(tǒng)做秒殺活動的過程中,確認(rèn)收貨功能給予的壓力挺大,暫時看來并不是核心任務(wù),而且系統(tǒng)到期也會自動確認(rèn)收貨,所以暫時關(guān)閉,將系統(tǒng)的資源留給準(zhǔn)備下單,放購物車的太太們

異地多活

有時候我在想要是地震,火災(zāi)等自然災(zāi)害發(fā)生的時候,很多系統(tǒng)的數(shù)據(jù)怎么辦啊。想多了撒,大些的系統(tǒng)多會在各個地方部署數(shù)據(jù)中心,采用異地多活的多機(jī)房策略。用戶可以訪問任何數(shù)據(jù)中心,那問題來了,用戶的請求是如何到達(dá)不同的機(jī)房去的?

  • 域名解析

9 安全性

公司中的數(shù)據(jù)財產(chǎn),其重要程度不言而喻。系統(tǒng)的健壯性和安全性是保證系統(tǒng)持久運(yùn)行的基礎(chǔ)。不要因為數(shù)據(jù)泄露才去關(guān)注安全問題。

也許說到安全問題,首先想到的是“用戶名密碼”泄漏,數(shù)據(jù)庫被脫褲導(dǎo)致數(shù)據(jù)泄露,hack直接拿到用戶的敏感信息,所以我們通常有哪些手段或方法來盡全力的抵抗hack嘞,辦法總比問題多嘛

  • 數(shù)據(jù)加解密

通過對用戶密碼,身份證等敏感數(shù)據(jù)加密是常用方法。加密方法通常分為:單向散列加密,對稱加密和非對稱加密。

所謂單向散列加密,主要體現(xiàn)在單向二字,意味著對明文加密后是不可以解密,你即使是給明文加密的加密者,也無法通過密文知道其明文是什么,即加密單向,不支持解密。說的這么絕對?這么無敵?那只是理論上而已,常用的MD5算法就是大象散列加密,我們完全可以通過彩虹表等方式進(jìn)行破解。怎么破解?說個簡單的道理,我們設(shè)置密碼的時候,通常會使用生日?手機(jī)號?什么love?什么520?,這些組合是有限的,我們就可以建立一個比如生日和密文的映射表,然后通過XX彩虹表就可得到密碼明文

單向散列加密

所以,通常的情況,使用單向散列加密的時候需要加一點(diǎn),這樣一來,hack拿到密文,不知道鹽,無法建立彩虹表,就更難還原明文。

應(yīng)用場景:通常應(yīng)用在用戶密碼加密。其加密和校驗過程如下

應(yīng)用場景

我們通過上圖來回顧一下一個網(wǎng)站的注冊登錄模塊中的用戶部分,用戶注冊需要輸入用戶名和密碼,我們一般不會將裸露的將密碼直接存放在數(shù)據(jù)庫,不然被脫褲直接算裸奔。所以,用戶輸入密碼,應(yīng)用服務(wù)器獲得密碼后,調(diào)用單向散列加密算法,將加密的密文存放于數(shù)據(jù)庫,用戶下一次登錄的時候,用戶依然會輸入密碼,只是到了Web服務(wù)器后,Web服務(wù)器會對輸入的密碼再進(jìn)行一次單向散列加密,然后和數(shù)據(jù)庫中取出來的密文進(jìn)行對比,如果相同,則用戶的驗證成功,通常這樣的方式可以保證用戶密碼的安全性,當(dāng)然如果加一點(diǎn)鹽,會增加破解的難度。

對稱加密

對稱加密是通過一個加密算法和密鑰,對一段明文進(jìn)行加密后得到密文,然后使用相同的密鑰和對應(yīng)的解密算法進(jìn)行解密得到明文。

對稱加密

舉個例子,我們不會將銀行卡卡號,有效期等直接存儲在數(shù)據(jù)庫,而是會通過先加密,然后存儲于數(shù)據(jù)庫。使用的時候必須對密文進(jìn)行解密還原出明文。這個時候使用對稱加密算法,存儲的時候加密算法進(jìn)行加密,使用的時候解密算法解密

非對稱加密

非對稱加密是說使用一個加密算法和一個加密秘鑰進(jìn)行加密得到密文,但是在解密出明文的時候,其加解密密鑰和加密密鑰不同,通常加密密鑰叫做公鑰,解密密鑰叫做私鑰。

非對稱加密

其實我們常用的 HTTPS 即是非對稱加密的應(yīng)用場景。用戶在客戶端進(jìn)行通訊的時候,對數(shù)據(jù)使用的加密密鑰和加密算法進(jìn)行加密得到密文,到了服務(wù)端以后,使用解密密鑰和算法進(jìn)行解密得到明文。但是非對稱消耗的資源比較多,所以HTTPS不是每次請求響應(yīng)都采用非對稱加密,而是先利用非對稱加密,在客戶單和服務(wù)器之間交換一個對稱加密的密鑰,然后每次的請求響應(yīng)再使用對稱加密。綜上,使用費(fèi)對稱加密保證對稱加密迷藥的安全,使用對稱加密密鑰保證請求響應(yīng)數(shù)據(jù)的安全。

HTTP攻擊與防護(hù)

HTTP明文協(xié)議,咋們通過嗅探工具就可以清晰查看會話內(nèi)容,這也是hack攻擊門檻最低的方式。很常見的也就是SQL注入XSS攻擊

SQL注入是攻擊者在提交請求參數(shù)的時候,包含了惡意的SQL腳本

SQL注入

server處理計算后向數(shù)據(jù)庫提交的SQL如下

Select id from users where username='Mike';

如果是惡意攻擊,提交的HTTP請求如下

http://www.a.com?username=Mike';drop table users;--

此時最終生成的SQL是

Select id from users where username='Mike';drop table users;--';

查詢完就直接給刪除表了。怎么防護(hù)?比較常用的解決方案是使用PrepareStaement預(yù)編譯,先將SQL交給數(shù)據(jù)庫生成執(zhí)行計劃,后面hack不管提交什么字符串也只能交給這個執(zhí)行計劃執(zhí)行,不會生成新的SQL,也就不會被攻擊啦。

XSS攻擊

跨站點(diǎn)腳本攻擊,攻擊者通過構(gòu)造惡意的瀏覽器腳本文件,使其在其他用戶的瀏覽器運(yùn)行進(jìn)而進(jìn)行攻擊。假設(shè)小A將含有惡意腳本的請求給360服務(wù)器,服務(wù)器將惡意的腳本存儲在本地的數(shù)據(jù)庫,當(dāng)其他正常用戶通過這個服務(wù)器瀏覽信息的時候,服務(wù)器就會讀取數(shù)據(jù)庫中含有惡意腳本的數(shù)據(jù)并呈現(xiàn)給用戶,在用戶正常使用瀏覽器的時候達(dá)到攻擊的目的。

防御:

比較常見的是在入口處對危險的請求比如drop table等進(jìn)行攔截,設(shè)置一個Web應(yīng)用防火墻將危險隔離。

安全防御

10 大數(shù)據(jù)

其實在上面提到的分布式中就有涉及大數(shù)據(jù)相關(guān)知識。無外乎是數(shù)據(jù)量越來越大,我們?nèi)绾伪M可能使用較低的成本存儲更多的數(shù)據(jù),更公司企業(yè)帶來更好的利潤。上面說過分布式緩存,負(fù)載均衡等技術(shù),其共同特點(diǎn)是如何抵抗高并發(fā)的壓力,而這里的大數(shù)據(jù)技術(shù)主要談?wù)摰氖侨绾螡M足大規(guī)模的計算。

通過對數(shù)據(jù)的分析,進(jìn)而發(fā)掘海量數(shù)據(jù)中的價值,這里的數(shù)據(jù)包含數(shù)據(jù)庫數(shù)據(jù),日志信息,用戶行為數(shù)據(jù)等等。那么這么多不同類型的數(shù)據(jù),怎么去存儲呢

分布式文件存儲 HDFS 架構(gòu)

如何將數(shù)以萬計的服務(wù)器組成統(tǒng)一的文件存儲系統(tǒng)?其中使用Namenode服務(wù)器作為控制塊,負(fù)責(zé)元數(shù)據(jù)的管理(記錄文件名,訪問權(quán)限,數(shù)據(jù)存儲地址等),而真正的文件存儲在DataNode中。

Mapreduce

大量的數(shù)據(jù)存儲下來的目的是通過相應(yīng)的算法進(jìn)行數(shù)據(jù)分析,獲得通過深度學(xué)習(xí)/機(jī)器學(xué)習(xí)進(jìn)行預(yù)測,從而獲取有效的價值,這么大的文件,我們不可能將HDFS當(dāng)做普通的文件,從文件中讀取數(shù)據(jù)然后計算,這樣子不知道算到何時何地。

大數(shù)據(jù)處理經(jīng)典的處理框架即MapReduce,分為Map和Reduce兩個階段,其中一個Map過程是將每個服務(wù)器上啟動Map進(jìn)程,計算后輸出一個集合。reduce過程,MapReduce在每個服務(wù)器上啟動多個reduce進(jìn)程,然后將所有的map輸出的集合進(jìn)行shuffle操作,什么是shuffle操作呢,即是將相同的ekey發(fā)送到同一個reduce進(jìn)程,在reduce中完成數(shù)據(jù)關(guān)聯(lián)的操作。

下面以WordCount統(tǒng)計所有數(shù)據(jù)中相同的詞頻數(shù)據(jù)為例,詳細(xì)看看Map和Reduce的過程。

wordcoun計算過程

在這個例子中,通過對value中的1組成的列表,reduce對這些1進(jìn)行求和操作從而得到每個單詞的詞頻。代碼實現(xiàn)如下

public?class?WordCount?{
????????// Mapper四個參數(shù):第一個Object表示輸入key的類型;第二個Text表示輸入value的類型;第三個Text表示表示輸出鍵的類型;第四個IntWritable表示輸出值的類型。map這里的輸出是指輸出到reduce
????public?static?class?doMapper?extends?Mapper<Object,?Text,?Text,?IntWritable>?{
????????public?static?final?IntWritable?one?=?new?IntWritable(1);//這里的IntWritable相當(dāng)于Int類型
????????public?static?Text?word?=?new?Text();//Text相當(dāng)于String類型

????????//?map參數(shù),將處理后的數(shù)據(jù)寫入context并傳給reduce
????????protected?void?map(Object?key,?Text?value,?Context?context)?throws?IOException,?InterruptedException?{

????????????//StringTokenizer是Java工具包中的一個類,用于將字符串進(jìn)行拆分??
????????????StringTokenizer?tokenizer?=?new?StringTokenizer(value.toString(),?"???");

????????????//返回當(dāng)前位置到下一個分隔符之間的字符串??
????????????word.set(tokenizer.nextToken());

????????????//將word存到容器中,記一個數(shù)
????????????context.write(word,?one);
????????}
????}

????//參數(shù)同Map一樣,依次表示是輸入鍵類型,輸入值類型,輸出鍵類型,輸出值類型。這里的輸入是來源于map,所以類型要與map的輸出類型對應(yīng)?。
????public?static?class?doReducer?extends?Reducer<Text,?IntWritable,?Text,?IntWritable>?{
????????private?IntWritable?result?=?new?IntWritable();

????????@Override
????????protected?void?reduce(Text?key,?Iterable?values,?Context?context)
????????????????throws?IOException,?InterruptedException?
{
????????????int?sum?=?0;

????????????//for循環(huán)遍歷,將得到的values值累加
????????????for?(IntWritable?value?:?values)?{
????????????????sum?+=?value.get();
????????????}
????????????result.set(sum);
????????????context.write(key,?result);//將結(jié)果保存到context中,最終輸出形式為"key"?+?"result"
????????}
????}
????public?static?void?main(String[]?args)?throws?IOException,?ClassNotFoundException,?InterruptedException?{
????????System.out.println("start");
????????Job?job?=?Job.getInstance();
????????job.setJobName("wordCount");

????????Path?in?=?new?Path("hdfs://***:9000/user/hadoop/input/buyer_favorite1.txt");//設(shè)置這個作業(yè)輸入數(shù)據(jù)的路徑(***部分為自己liunx系統(tǒng)的localhost或者ip地址)
????????Path?out?=?new?Path("hdfs://***:9000/user/hadoop/output/wordCount");????????//設(shè)置這個作業(yè)輸出結(jié)果的路徑

????????FileInputFormat.addInputPath(job,?in);
????????FileOutputFormat.setOutputPath(job,?out);

????????job.setJarByClass(WordCount.class);//?設(shè)置運(yùn)行/處理該作業(yè)的類

????????job.setMapperClass(doMapper.class);//設(shè)置實現(xiàn)了Map步的類
????????job.setReducerClass(doReducer.class);//設(shè)置實現(xiàn)了Reduce步的類

????????job.setOutputKeyClass(Text.class);//設(shè)置輸出結(jié)果key的類型
????????job.setOutputValueClass(IntWritable.class);//設(shè)置輸出結(jié)果value的類型

????????////執(zhí)行作業(yè)
????????System.exit(job.waitForCompletion(true)???0?:?1);
????????System.out.println("end");
????}
}

那么這個map和reduce進(jìn)程是怎么在分布式的集群中啟動的呢?

map/reduce啟動過程

上圖比較清晰地闡述的整個過程,再描述一波。MR中主要是兩種進(jìn)程角色,分別為 JobTracke r和 TaskTracker 兩種,JobTracker在集群中只有一個,而 TaskTracker 存在多個,當(dāng) ?JobClient 啟動后,往 JobTracker 提交作業(yè),JobTracker查看文件路徑?jīng)Q定在哪些服務(wù)器啟動 Map 進(jìn)程,然后發(fā)送命令給 TaskTracker,告訴它要準(zhǔn)備執(zhí)行任務(wù)了,TaskTracker收到任務(wù)后就會啟動 TaskRunner 下載任務(wù)對應(yīng)的程序。map計算完成,TaskTracker對map輸出結(jié)果 shuffer 操作然后加載 reduce 函數(shù)進(jìn)行后續(xù)計算,這就是各個模塊協(xié)同工作的簡單過程。

Hive

上述過程還是比較麻煩,我們能不能直接寫SQL,然后引擎幫助我們生成mapreduce代碼,就反復(fù)我們在web開發(fā)的時候,不直接寫SQL語句,直接交給引擎那么方便,有的,它就是HIVE

舉個例子

SQL
拆分

那么使用MR的計算過程完成這條SQL的處理

MR TO SQL

Spark

Spark是基于內(nèi)存計算的大數(shù)據(jù)并行計算框架。基于此說說上面hadoop中組件的缺點(diǎn)

  • 磁盤IO開銷大。每次執(zhí)行都需要從磁盤讀取并且計算完成后還需要將將中間結(jié)果存放于磁盤

  • 表達(dá)能力有限。大多數(shù)計算都需要轉(zhuǎn)換為Map和Reduce兩個操作,難以描述復(fù)雜的數(shù)據(jù)處理

spark優(yōu)點(diǎn)

  • 編程模型不限于map和reduce,具有更加靈活的編程模型

  • spark提供內(nèi)存計算,帶來更高的迭代運(yùn)算效率且封裝了良好的機(jī)器學(xué)習(xí)算法

  • 采用了基于圖DAG的任務(wù)調(diào)度機(jī)制

Flink

Flink是大數(shù)據(jù)處理的新規(guī),發(fā)展速度之快,這兩年也相繼出現(xiàn)中文資料。作為流式數(shù)據(jù)流執(zhí)行引擎,針對數(shù)據(jù)流的分布式計算提供數(shù)據(jù)分布,數(shù)據(jù)通信以及容錯機(jī)制等功能。同時Flink也提供了機(jī)器學(xué)習(xí)庫,圖計算庫等。

關(guān)于大數(shù)據(jù)相關(guān)知識點(diǎn)可作為擴(kuò)充點(diǎn),在面試的過程中經(jīng)常會有大數(shù)問題,除了從算法的角度來闡述,也可以從這些框架中吸取一些經(jīng)驗。

嘮嗑

對于之前從事c/c++開發(fā)的我,很多時候是Linux的開發(fā)。在學(xué)校又沒怎么接觸系統(tǒng)性的項目,更不知道后端技術(shù)的博大進(jìn)深,可能文中涉及的也就一部分,不過希望還在學(xué)校的小伙伴可以知道有這些東西,然后通過強(qiáng)大的搜索引擎,給自己個比較明確的方向,也許會少走點(diǎn)彎路,這周的文章就到這了,goodbye!

你的點(diǎn)贊在看是我前進(jìn)的動力,Thanks!


? ? ? ?
???
給學(xué)妹的 Java 學(xué)習(xí)路線
如何閱讀源碼?
2020 年 Java 程序員應(yīng)該學(xué)習(xí)什么?

覺得不錯,點(diǎn)個在看~

瀏覽 34
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點(diǎn)贊
評論
收藏
分享

手機(jī)掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 黄色一级视频在线观看| 亚洲成人天堂| 精品人妻无码一区二区三区四川人| 夜夜操天天| 美女视频一区二区三区| 天天干夜夜骑| 一本色道久久88加勒比| 欧美五月激情| 波多野59部无码喷潮| 91在线观看免费视频| 国产美女自拍| 手机看片久久| 99热这里只有精品1| 国产黄网站| 日韩日批视频| 久久久老熟女一区二区三区91| 男人av网站| 亚洲AV成人无码精在线| 性无码一区二区三区无码免费| 2019人人操| 精品国产一级| 激情五月丁香花| www.操操网| 欧美做爱网站| 亚洲综合91| 巨爆乳肉感一区二区三区| 91麻豆精品无码人妻| 国产在线欧美| 亚洲北条麻妃一级A片| 伊人成人网站| 日韩美女视频19| 日韩成人无码人妻| 特级婬片A片AAA毛片AA做头| 大香蕉黄色片| 免费无码婬片aaaa| 久草香蕉| 99在线视频播放| 精品一区国产探花| 99热国产精品| 中国熟妇XXXX18| 中文字幕+乱码+中文乱码电影 | 欧美不卡一区二区三区| 日本熟妇高潮BBwBBwBBw| 日韩AV无码成人精品| 91色图| 中文原创麻豆传媒md0052| 大香蕉现在视频中心一| 日韩一区二区视频| 日本大香蕉视频| 中文字幕久久人妻无码精品蜜桃 | 黄色天堂| 成人午夜无码| 91色色色色| 国产婬片一级A片AAA毛片AⅤ| 先锋影音资源站av每日资源在线| 亚洲精品一区二区二区的游戏情况 | 91精品人妻一区二区三区四区| 天天色图片| 色色色无码| 亚洲无码中文字幕在线观看| 99人妻视频| 陈冠希和张柏芝mv| 人妻无码在线视频| 99热黄| 五月天在线观看| 天天摸天天干| 日本一区不卡| 国內精品久久久久久久| 黄色电影网页| 蜜桃视频无码区在线观看| 中文字幕东京热| 成人免费无码激情AV片| 精品亚洲一区二区三区| 免费看三级网站| 在线免费人成视频| 亚洲国产精品成人综合色五月 | 色婷婷国产精品| 国产日女人| 国产尤物| AV在线导航| 九月丁香婷婷| 天天爽夜夜爽夜夜爽| a片免费网址| 超碰自拍97| 五月婷婷狠狠爱| 插菊花综合网亚洲| 国产午夜精品视频| 中字无码AV| 亚洲视频456| 大香蕉福利视频导航| 在线观看av网站中文字幕| 亚洲aaa| 久操久操| 日韩在线视频观看| 一级欧美一级日韩| 日逼视频免费看| 成人做爰A片一区二区| 国产午夜视频在线观看| 亚洲一级黄| 搡BBBB搡BBB搡五十| 五月伊人网| 91综合视频| 久草综合视频| 永久黄网站| 欧美日韩小视频| 黄色www| 婷婷国产亚洲精品网站| 9I成人免费版| 色噜噜噜| 蜜桃视频| 招土一级黄色片| 欧美性爱超碰| 亚洲最大三级片| 蜜桃av秘无码一区二区三| 青青草成人免费在线视频| 久久电影无码| 五月天婷婷在线播放视频免费观看| 成人伊人AV| 91福利资源| 波多野结衣Av在线| 亚洲人人爱| 国产精品毛片VA一区二区三区| 91密臀| 中文字幕成| AV无码网| 欧美特级视频| 亚洲成人精品一区二区| 欧美精品在线观看视频| 亚洲区成人777777精品| 97视频在线观看免费| 青青草伊人网| 黑人操白人| 欧美后门菊门交| 91人妻无码精品一区二区毛片| 500部大龄熟乱4K视频| 亚洲精品国产精品国自产观看| 欧美九九| 久草黄色电影| 国产ts视频| 91在线无码精品入口电车| 乱伦小说五月天| 国产在线观看你懂的| www444www| 亚久久久| 在线观看免费国产| 伊人成人小说| 2014天堂网| 日韩人妻无码视频| 波多野结衣无码视频| 亚洲高清国产欧美综合s8| 日韩三级中文| 簧片网站免费| 国产精品被狂躁到高潮| 99爱精品| 国产黄色一级| 欧美精品91| 北条麻妃二区| 黄片免费大全| 一区二区操逼| 欧美日韩中文在线观看| 久久青草免费视频| 国产在线一| 欧美日韩亚洲中文字幕| 丰满老妇高潮一级A片| 欧美午夜福利在线观看| 人人操人| 免费精品黄色网页| 婚闹不堪入目A片| 欧美老熟妇BBBBB搡BBB| 欧性猛交ⅩXXX乱大交| 天堂AV在线免费观看| 热久久精品| 99热66| 国产操屄视频| 色婷婷久久久久swag精品| 亚洲素人无码| 婷婷丁香色| 东方av在线免费观看| 亚洲秘无码一区二区三区蜜桃中文| 一区在线观看视频| 超碰免费97| 偷偷撸在线| 欧美喷水视频| 久久黄色视屏| 无码视频在线看| 热热AV| 国产中文字幕视频| 久久久久久久久久久久久自慰小片| 麻豆传媒av| 在线天堂a| NP玩烂了公用爽灌满视频播放| 99xxxxx| 91绿帽人妻-ThePorn| 日韩Av无码一区二区三区不卡| 久草在在线视频| 青青草视频免费观看| 日韩毛片在线看| 青青视频网| 自拍AV在线| 一区二区精品| 亚洲国产精品自| 日本黄色A片免费看| 无码AV免费观看| 一本色道久久综合无码欧美| 中文字幕亚洲有码| 91色视频在线观看| 在线高清无码视频| 你懂的网站在线观看| 麻豆A∨在线| 成人国产精品秘久久久网站| AV在线播放中文字幕| 丁香五月天激情网| 亚洲日韩免费视频| 污视频免费在线观看| AⅤ中文字幕在线免费观看| 久久精品免费看| 69AV视频网站| www.91madou| 热久久这里只有精品| 波多野结衣成人在线| 亚洲日韩在线视频| 亚洲图片中文字幕| 九一av| 大屌色| 91乱伦视频| 国产精品系列视频| 日韩四区| 黄色AV免费| 欧美黄色网| 欧美一道本在线| 青春草在线播放| 超碰人人91| 久久久国产精品视频| 中文字幕日本电影| 色婷在线| 丁香婷婷五月色成人网站| 一区二线视频| 青青精品视频| 国产美女精品视频| 色五月婷婷综合| 8050午夜| 先锋影音男人资源站| 一级黄色在线| 久久亚洲天堂| 日韩性爱视频在线播放| 色色五月天网站| 狠狠操狠狠撸| 中文字幕观看| 亚洲综合一区二区三区| 亚洲色图欧美另类| 青青草无码视频| 亚洲国产精品欧美久久| 天天拍天天射| 成人AAA片| 日本伊人在线综合视频| 91亚洲国产成人精品一区二区三 | 一级操逼大片| 先锋影音资源AV| 俺来也网| 91大神在线资源观看无广告| 午夜8050| 婷婷伊人大香蕉| 色婷婷AV| 亚洲成人影音先锋| 日本精品中文字幕| 内射视频网站| 成人H视频| 很很干在线视频| 久久免费黄色视频| 97精品人妻一区二区三区香蕉农 | 亚洲国产剧情| 欧美成人AA| 91精品人妻一区二| 婷婷黄色电影| 看免费黄色视频| 美日韩无码| 91成人毛片| 国产精品美女毛片j酒店| 欧日无码| 影视先锋久久| 亚洲无码资源| 91丨九色丨熟女老版| 性爱AV| 日韩久久网站| 91视频久久| 97色色婷婷五月天| 中文字幕在线观看视频免费| 丁香六月激情| 久久青青草在线视频| 日韩成人无码专区| 婷婷色网| 亚洲成人av在线播放| 超碰在线大香蕉| 精品国产乱码一区二区| 大伊香蕉久久| a天堂视频| 国产精品免费麻豆| 五月天激情小说网| 97综合| 波多野结衣视频无码| 精品成人A片久久久久久不卡三区| 欧美色色网| 亚洲午夜成人精品一区二区| 蜜桃BBwBBWBBwBBw| 天天天天天天天天干| 特黄特色大片BBBB| 日韩一区二区视频| 久久久永久免费视频| 天堂在线中文字幕| 日韩高清无码免费看| 大地影视中文第三页最新在线观看 | 亚洲搞清视频日本| 激情久久AV一区AV二区AV三区| 亚洲人妻在线视频| 亚洲精品少妇| 狠狠操狠狠操狠狠操| 国产A片录制现场妹子都很多| 欧美生活片18| 特级444WWW大胆高清| 女人BBBB| 爆乳尤物一区二区三区| 亚洲无人禁区| 91成人在线播放| 亚洲综合伊人| 青青草乱伦视频| 日韩人妻精品无码久久| 无码秘蜜桃一区二区三区| 欧美熟妇性爱| 国产一级免费观看| 欧美一区二区三区成人片下载| 欧美色成人免费在线视频| 欧美成人AA| 日日爽夜夜爽| 人人摸在线视频| 亚洲第一页在线| 91嫩草久久久久久久| 北条麻妃精品| 亚洲精品97| 先锋影音一区二区| 超级碰碰碰碰碰碰碰碰碰| 欧美人操逼视频| www99热| 欧美日韩网| 亚洲AV高清无码| 无码在线视频播放| 无码在线电影| 91人妻一区二区三区| 欧美黄色录像| 搞搞电影91| 黄网免费观看| 奇米四色秒播| 中国国产乱子伦| 人妻电影亚洲av| 北条麻妃JUX-869无码播放| 五月丁香婷婷综合| 91人妻人人澡人人添人人爽| 婷婷色色五月天| 美女被操网站免费| 国产做受91一片二片老头| 免费无码国产| 中国熟妇XXXX18| 伊人大香焦网| 国产激情无码视频| 91人人妻人人澡人人爽人人精品| 国产91白丝在一线播放| 亚洲Aⅴ| 欧美性爱视频免费看| 骚骚肥肥一区二区三区| 婷婷99狠狠躁天天躁| 伊人大香蕉婷婷| 亚洲秘无码一区二区三区,| 久久久久亚洲AV无码专区成人 | 国产一级A片| 中文字幕第9页| 三级丁香在线| 日本成人毛片| 久久黄色网络| 日本熟妇高潮BBwBBwBBw| 中文字幕乱码亚洲无线码按摩| 国产熟女一区二区| 九九九九九九国产| 国产无套内射在线观看| 黄色一级片免费在线观看| 婷婷五月天成人电影| 伊人影院在线免费观看| 成人A片免费看| 特级西西444www大胆高清图片| 国产三级片在线视频| 六十路老熟女码视频| 不卡二区| www.199麻豆在线观看网站| 亚洲色图偷拍| 日韩一区二区不卡| 亚洲免费MV| 91视频www| 亚洲va欧美va天堂v国产综合 | 任我操在线视频| 日韩中文无码一级A片| 久久区| AV777777| 伊人99热| 久久精品波多野结衣| 男女拍拍拍| 熟女人妻视频| 久久无码影院| 成人做爰100部免费网站| 日韩视频免费在线| 亚洲精品国产精品国自产在线| 看一级黄色视频| 中文字幕在线免费| 国产第一精品| JlZZJLZZJlZZ亚洲女人17 | 天天色综| 国产多人搡BBBB槡BBBB| 国产亚洲色情| 一级黄色片在线观看| 特级西西444www大胆高清图片| 国产激情综合| 一区二区三区精品无码| 三级电影久久麻豆| 国产av一级片| 熟女影音先锋| 午夜精品久久久久久久99黑人 | 深爱婷婷网| 安徽妇搡BBBB搡BBBB| 亚洲视频精选| 日韩色情片| 欧美人妻无码| 免费中文字幕视频| 大香蕉在线伊| 亚洲综合二区| 亚洲四区| 毛片操逼视频| 美国熟妇| 久久草在线观看| 中文字幕免费AV| 亚洲性生活| 超碰97久久| 污视频网站免费在线观看| 欧美精品一区二区三区成人片在线| 97国产精品人人爽人人做| 天天三级片| 婷婷一区二区三区| 久久9视频| 天天操免费| 国产成人亚洲综合A∨婷婷| 翔田千里无码一区| 国产综合自拍| 亚洲精品久久久久久久久豆丁网| 中国熟睡妇BBwBBw| 国产欧美熟妇另类久久久| 一卡二卡三卡| 精品人妻一区二区三区日产乱码 | 五月天无码| 日韩网站在线观看| 人妻无码蜜桃视频| 国产一级a爱做片免费☆观看| 就要操逼| 狠狠狠久久久| 亚洲天天| 人人超碰人人| 在线天堂v| 中文字幕人妻日韩在线| 亚洲在线第一页| 久久久久人| 成人欧美在线| 国产成人精品一区二| 四川揉BBB搡BBB| 亚洲日韩视频在线观看| 在线a | 伊人9| 黄色亚洲| 四虎AV在线| 日皮视频在线观看免费| 一区二区三区在线观看| www.婷婷六月天| 亚洲精品久久久久久久蜜桃 | 亚洲欧美影院| 欧美性爱内射| 狼友视频在线观看| 怡春院亚洲| 精品免费一区二区三区四区| 亚洲黄色在线| 激情综合五月| 免费无码蜜臀在线观看| 日本不卡在线观看| 亚洲无码电影网| 再深点好爽灬轻点久久国产| 成人网站一区二区| 欧美在线观看视频| 国产精品视频福利| 中文字幕在线免费观看电影| 国产综合亚洲精品一区二| 97人妻精品一区二区三区| 欧美日韩成人在线观看| 欧美老女人的逼| 日逼片| 亚洲高清av| 99热综合在线| 在线观看AⅤ| 亚洲视频区| 豆花网| 欧美群交videotv群交| 韩国成人无码视频| 欧美黄色免费观看| av六月天| 久久国产精品在线| 亚洲欧洲在线视频| 一区二区成人电影| 日皮网站在线观看| 三级久久网| 久草资源在线| 日韩操逼网站| 91蜜桃传媒在线观看| 西西444WWW无码视频软件功能介绍 | 久久午夜夜伦鲁鲁一区二区| 青娱乐av在线| 无码电影在线播放| 99re热在线视频| 在线观看国产视频| 亚洲国产免费| a久久| 污污污污污www在线观看优势 | 欧美成人内射| 91妻人人澡人人爽人人精品| 久久人人做| 性无码专区| 色婷婷一级A片AAA毛片| 成人毛片在线视频| 女人18片毛片60分钟翻译 | 无码人妻丰满熟妇区17水蜜桃 | 欧美日韩性色无码免费| 中文字幕有码在线播放| 男人先锋| 日韩成人黄色电影| 无码水蜜桃一区二区| 奇米狠狠777| 青青三级片| 亚洲天堂在线视频观看| 91精品视频网站| 亚洲码无人客一区二区三区 | 亚洲色成人中文字幕在线| 黑人av| 大香蕉网视频| 牛牛精品视频| 又黄又湿的视频| 91av导航| 国产老熟女高潮毛片A片仙踪林 | 五十路義母| 国产日韩欧美在线| 精品国产乱码久久久久久郑州公司 | h片在线观看免费| 伊人看片| 自拍偷拍图区| 久久免费毛片| 欧美激情DVD| 精品人妻一区二区三区日产| 丁香五月影院| 91小视频在线| 久久99精品国产.久久久久久| 操逼操逼操| 中韩AV在线免费观看| 欧美性爱综合网| 大香蕉尹在线| 俺去俺来WWW色官方| 99精品视频网站| 麻豆蜜桃91无码| 亚洲激情网址| 99热在线免费观看| 无码人妻av黄色一区二区三区 | www.日本黄色视频| 日韩中文字幕视频在线观看| 老太色HD色老太HD.| 國模久久| 91啪啪| 碰碰97| 中文字幕视频在线播放| 无码V | 91蝌蚪视频在线播放| 精品国产999久久久免费| 色老板免费精品无码免费视频| 亚洲色婷婷| 日韩动态图| 免费看的黄色视频| 91福利在线视频| www.18av| 天堂在线中文网| 日韩在线综合网| 亚洲精品鲁一鲁一区二区三区| 屌国产精品| 国产毛片在线| 大香蕉久久爱| 国产黄色精品视频| 特级西西人体WWWWW| 91人妻人人澡人人爽精品| 狠狠插网站| 亚洲AV无码成人精品区h麻豆 | 成人特级毛片全部免费播放| 囯产精品久久久久久久久久辛辛| 无码精品成人观看A片| 国产91久久婷婷一区二区| 大香蕉网站视频| 国产第八页| 国产精品久久久久久亚洲毛片| 日本少妇视频| 久久久精品人妻| 精品国产三级| 一区二区三区在线免费观看| 婷婷五月久久| 丰满岳乱妇一区二区三区全文阅读| 亚洲中文幕| 国产人妻一区二区精选| 亚洲高清无码视频在线播放| 天天草夜夜操| 国产精品H| 国产91综合一区在线观看| 男女操逼视频网站免费观看| 无码国产精品一区二区三| 婷婷五月天激情视频| 国模精品无码一区二区免费蜜桃| a视频免费在线观看| 午夜99| 天天色影院| 波多无码在线| 波多在线视频| 一级黄视频| 在线啊啊啊| www.99在线| 久久国色| 丁香五月天激情视频| www.91在线视频| 午夜理论在线| 中文字幕天天在线| 中文字幕亚洲观看| 在线亚洲免费观看| 国产女人精品视频| 国产成人片色情AAAA片| 2019中文字幕在线| 兔子先生和優奈玩游戲脫衣服,運氣報表優奈輸到脫精光 | 美女做爱在线观看| 久操无码视频| 国产精品18在线| 亚洲AV官方网站| 安徽妇搡BBBB搡BBBB小说| 91成人在线观看学生和老师| 一区二区高清| 免费激情网站| 免费看无码一级A片放24小时| 日韩久久精品| 草逼片| 強姦婬片A片AAA毛片Mⅴ| 欧美激情五月天| 免费无码一区二区三区| 一本色道久久综合亚洲精品久久| 青青久操| 97精品综合久久| 成人三级片在线播放| 亚洲欧美日韩久久| 无码AⅤ一区二区三区| 欧美午夜视频| 婷婷五月天无码| 色片视频| a在线免费| 另类罕见稀奇videos| 做爱网站免费| 加勒比色综合| 色综合久久88色综合天天| 亚洲免费视频在线| 在线视频第一页| 亚洲性网| 亚洲av免费| 天天色视频| 日韩福利| 亚洲欧美综合| 国产AV无码区亚洲| 98在线++传媒麻豆的视频| 婷婷开心色四房播播免费| 丁香五香天堂| 性欧美V| 99热在线中文字幕| 毛片9| 亚洲xxxxxx| 成人欧美一区二区三区在线观看| 日韩黄色精品| 色欲精品| 台湾无码片| 一区二区三区四区在线看| 插逼视频网站| 成人短视频在线观看| 欧美一区不卡| 正在播放JUQ-878木下凛凛子| 日韩草逼| 无码视频一区二区| www.亚洲天堂| AV毛片| 欧美日韩午夜福利视频| 蝌蚪九色啦403| 久久久免费黄色视频| www.777熟女人妻| 久久久久久久久免费视频| 国产精品美女久久久久久久久 | 精品中文字幕视频| 丁香婷婷五月基地| 美日韩无码视频| 亚洲第九页| 中文在线字幕免费观看| 日本AⅤ在线观看| 日韩高清av| 欧美一级一级| 婷婷久久久| 性感91影院| 99色播| 亚洲AV秘无码一区在线| 久艹在线视频| 99精品自拍| 亚洲一本之道| 毛片中文字幕| 岛国无码破解AV在线播放| 自拍在线| 苍井空无码| 黄片免费网站| 精品国产一区二区三区性色AV | 精品美女视频| 久久久精品午夜人成欧洲亚洲韩国 | 欧美精品一区二区三区蜜臀| 色综合社区| 日本A在线播放| 91成人视频在线免费观看| 亚洲无码123| 日韩黄频| 蜜桃久久99精品久久久酒店| 国产无码专区| 北条麻妃无码精品AV怎么看| 亚韩在线| 嫩草在线播放| 三浦恵子一级婬片A片| 久久久蜜桃| 日韩午夜AV| 久久水蜜桃| 久久久大香蕉| 日韩老熟妇| 天堂中文资源在线观看| 自拍偷拍亚洲无码| 亚洲人操逼视频| 国产精品二区高清在线苍井空| 色色视频网站| 波多野结衣无码在线| 一品国精和二品国精的文化意义| 亚洲一区自拍| 91妻人人澡人人爽人人精品| 亚洲AV综合网| 日韩中文字码无砖| 亚洲资源网| 亚洲成人av| 午夜精品久久久久久久久无码99热| 性性性性性XXXXX| 国产一区二区视频在线| 伦理被部长侵犯HD中字| 五月天啪啪| 麻豆视频在线观看| 69久久久久久久久久| 国产成人精品毛片| av不卡在线观看| 欧亚AV| 亚洲中文字幕在线观看视频| 97人人色| 最新中文字幕在线播放| 中文字幕久久人妻无码精品蜜桃 | 午夜99| 国产精品色色色| 日韩草逼| 亚洲黄色小视频| 日本一级黃色大片看免费| 中文字幕在线看| 日本三级片免费| 青青草在线观看视频| 国产一区二区免费| 欧美成人版| 成人在线网| 老太奶性BBwBBw侧所| 日韩午夜在线观看| 丁香六月综合激情| AV免费播放| 东京热综合| 午夜美女视频| 亚洲无码在线观看网站| 国产精品第二页| 亚洲欧美日韩一区二区| a片免费在线观看| AV天堂小说网| 成年人视频免费| 国产黄色一级| 国产又爽又黄免费网站在线观看 | 国产婬片一级A片AAA毛片AⅤ| 五月乱伦| 人成视频在线免费观看| 男人先锋| 豆花精品视频| 免费看毛片的网站| www尤物| 日本成人中文字幕| 伊人色色视频| 蜜桃久久久亚洲| 国产操逼大全| 偷拍第一页| 强奸校花到高潮| a日韩| 黄色无码av| 91啪啪视频| 国产高清秘成人久久| 麻酥酥在线视频| 色色五月天视频| 欧美精品无码| 91超碰在线观看| 三级国产在线| 91无码人妻一区二区成人aⅴ| 亚洲在线视频免费观看| 在线高清无码| 91一区在线观看| 97精品欧美91久久久久久久| 18国产免费视频在线观看| 甘肃WBBBB搡wBBBB| 日韩Va| 国产精品秘久久久久久| 91九色在线观看| 初学影院WWWBD英语完整版在线观看| 人妻久操| 精品国产午夜福利在线观看| 亚洲的天堂的αⅴ| 最新久欠一区二区免费看| 国精产品一区一区三区有限公司杨| WWW久久| 中文字幕二区| 一区二区成人免费视频| 五月婷婷精品| 成人网站av| 国产特級黃色大片| 日韩1234区| 午夜福利aaa| 最好看的MV中文字幕国语电影| 能看的黄色视频| 加勒比综合网| 日韩黄视频| 一级黄色电影A片| 中国一级片| 天天综合网久久综合网| 一区二区三区久久久| 91偷拍与自偷拍精品无码| 想要xx| 欧美色交| 三级高清无码视频| 狠狠色五月亚洲91| 亚洲AV无码成人精品区国产| 国产成人a亚洲精品www| www.91熊猫成人网| 亚洲中文字幕2025| 韩国毛片基地久久| 久久97人妻AⅤ无码一区| AV中文字幕在线播放| A片网| 欧美特级黄| 黑人狂躁女人高潮视频| 黄片在线视频| 大香蕉大香蕉免费网| 色婷婷六月天| 日韩欧美在线播放| 中文字幕五月天| 国产夫妻在线视频| 99亚洲精品| 欧美黄网站在线观看| 巨爆乳肉感一区二区三区| 大香蕉视频在线观看| 久久av网站| 欧美成人黄色A片| 国产精品资源| 精品无码9| 午夜性爱网站| 海滩AV黑人| 日本黄色A片免费看| 西西西444www无码视| 久草黄色电影| 亚洲GV成人无码久久精品| 国产一二三视频| 北条麻妃视频在线播放| 亚洲男人的天堂网| 日韩综合一区| 国精品无码一区二区三区在线 | 国产精品AV片| 精品一区电影| 国产成人精品在线观看| 黄色福利网| 站街大龄熟女x| 亚洲成人精品少妇| 欧美午夜激情视频| 欧美一级婬片A片免费软件| 六月婷婷在线观看| 欧美日韩高清一区二区三区| 精品人妻一区二区三区日产| 免费欧美成人网站| 欧美少妇视频|