精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

互聯(lián)網(wǎng)架構(gòu)的演變,看了好多這個講的確實清楚!

開發(fā) 架構(gòu)
從過去的 OA、CRM、ERP 等單機即可滿足要求的系統(tǒng)到現(xiàn)代互聯(lián)網(wǎng)時代各大公司的分布式、微服務(wù)平臺,互聯(lián)網(wǎng)架構(gòu)正在經(jīng)歷著巨大的變革,技術(shù)也在不斷的更新迭代。

從過去的 OA、CRM、ERP 等單機即可滿足要求的系統(tǒng)到現(xiàn)代互聯(lián)網(wǎng)時代各大公司的分布式、微服務(wù)平臺,互聯(lián)網(wǎng)架構(gòu)正在經(jīng)歷著巨大的變革,技術(shù)也在不斷的更新迭代。

[[272203]]

圖片來自 Pexels

這也意味著眾多軟件開發(fā)者們的壓力和挑戰(zhàn)正在不斷的加大,這種新技術(shù)更新的速度甚至讓我們望而卻步。

而我們需要做的恐怕不僅僅是學(xué)習(xí)那么簡單了,更要從宏觀的角度根據(jù)當(dāng)前的技術(shù)形勢及時做出更符合我們發(fā)展前景的決定。

這篇文章作者會跟大家一起探究互聯(lián)網(wǎng)架構(gòu)的演變歷程,并對每個歷程中的相關(guān)技術(shù)及應(yīng)用做出合理的解釋。

希望各位也能參考架構(gòu)的這些發(fā)展過程,結(jié)合自己當(dāng)前的項目架構(gòu)有一個適當(dāng)?shù)亩ㄎ唬瑫r對自己未來應(yīng)該學(xué)習(xí)的東西做出明確的計劃和安排。

架構(gòu)演變

大型互聯(lián)網(wǎng)公司系統(tǒng)的業(yè)務(wù)模塊、技術(shù)分布非常復(fù)雜,但是架構(gòu)和技術(shù)永遠都不是架構(gòu)師設(shè)計出來的,而是跟隨公司業(yè)務(wù)的發(fā)展不斷進行升級演變出來的,廢話不多說請聽胖達娓娓道來。

①單機構(gòu)建系統(tǒng)

這個不用多說,剛開始接觸 Java 的同學(xué)應(yīng)該都非常清楚,做畢設(shè)或者平時練手最多的圖書館小項目基本都是這種架構(gòu)。

一個簡單的應(yīng)用,配置一下數(shù)據(jù)庫連接,然后部署到自己電腦的 Tomcat 服務(wù)器上,啟動之后興奮的不得了。

②Nginx 負載均衡+服務(wù)器集群

試想一下,如果我們一時興起做了一個個人博客并且部署到了我們的服務(wù)器上,采用的是單機的構(gòu)建方式。

后來因為博客質(zhì)量高竟然火了,訪問量快速增加,單臺服務(wù)器已經(jīng)無法滿足我們的需求,時不時的就有粉絲抱怨博客沒法訪問了,是不是很頭疼?

穩(wěn)住,這波不慌,這個時候我建議首先想想如何給那臺可憐的服務(wù)器泄泄火,讓服務(wù)器的壓力降下來。

有一個辦法就是給它加一個或者多個伙伴一塊來分攤下壓力,把這么多請求分散到每個伙伴身上,從而提高這種負載的能力。

但是伙伴是有了,一系列的問題也就來了,我整理了一下,統(tǒng)一回答如下:

問題一:這么多伙伴,應(yīng)該識別什么樣的指令來接收用戶的請求呢?

其實完全不用擔(dān)心伙伴們識別什么樣的指令,只要讓它傻傻的站在那等待分配就可以了,因為有一種東西叫做負載均衡器,專門給服務(wù)器分配這種請求。

如果你不知道 F5,那你應(yīng)該知道 Nginx,土豪錢多的公司一般會選擇前者這種硬件負載均衡器。

但是大多數(shù)互聯(lián)網(wǎng)公司會選擇后者,因為能從軟件的角度解決的問題為啥用硬件呢,誰不想省錢啊?

了解 Nginx,必須要知道它的三種功能:

反向代理:了解反向代理,首先要清楚什么是正向代理,相信大家訪問國外的學(xué)習(xí)資源例如某 Hub(你懂的)的時候都用過 FQ 軟件 -VPN,這種通過 VPN 訪問谷歌、Youtube 等國外網(wǎng)站的過程中,我們知道我們的訪問目標(biāo)服務(wù)器是什么,這其實就是正向網(wǎng)絡(luò)代理。

而反向代理則不同,就像我們上圖中所看到的多臺服務(wù)器,如果經(jīng)過反向代理,那我們其實并不知道實際訪問的服務(wù)器是哪一臺。

因為我們的請求被前面架設(shè)的 Nginx 自動分配給了某一臺服務(wù)器,就比如說我們打 10086 人工客服,你一定記得“你好先生,我是 10011 號話務(wù)員,很高興為您服務(wù)”這樣的話。

我們在打電話的時候并不知道由哪一個話務(wù)員來為我們服務(wù),這些分配過程都是由 10086 服務(wù)臺自動進行的,這里的 10086 服務(wù)臺其實就是我們系統(tǒng)中的反向代理服務(wù)器,也即圖中的 Nginx。

動靜分離:在做 Web 開發(fā)的時候大家都清楚,JS、HTML、圖片資源、文件資源這些都屬于靜態(tài)資源,供用戶直接訪問,并不需要編譯或者解釋,是一些放在那里就可以用的東西。

而 JSP、Java 文件這些東西其實都需要被 Tomcat 服務(wù)器解釋一遍才能被機器識別,但是如果把它們都放在一起供用戶訪問,那每臺服務(wù)器的壓力豈不是很大?

這個時候我們就可以做動靜的分離,將這些靜態(tài)的文件放置到 Nginx 服務(wù)器上,后面的 Tomcat 服務(wù)器用來放動態(tài)的 JSP、Java 文件,這樣的話就變向的給服務(wù)器降低了壓力。

負載均衡:這個很明顯了,簡單來說,通過架設(shè) Nginx 服務(wù)器,經(jīng)過一定的均衡算法將用戶的請求合理分發(fā)給后面的服務(wù)器。

這個過程很好的降低了請求負載,讓每一臺服務(wù)器都能舒舒服服的承載請求,做好自己的工作。

問題二:能確定伙伴之間公平分散請求嗎?

這個問題就具體到了 Nginx 的均衡算法問題,只有通過合適的算法均衡用戶請求到每臺服務(wù)器上才能保證服務(wù)器不打架不撂挑子,否則其中某臺服務(wù)器不高興突然間罷工,剩下的服務(wù)器可就遭殃了。

其實 Nginx 均衡算法總共有十種,但是常用的一般是下面幾種:

LC 算法(最近最少使用連接算法):這種算法的規(guī)則就是判斷哪一臺服務(wù)器一定時間段內(nèi)的連接數(shù)比較少,就把用戶請求分發(fā)給它,其實就是誰的活少分配給誰,不能讓他太閑也不能讓其他服務(wù)器太忙,否則就會掐架了。

輪詢算法:輪詢這種算法還是比較公平的,類似我們上學(xué)的時候排了一張值日表,周一的時候是小紅,周二的時候是小明等等等等,這樣就把活平均分配給了每一個人也即每一臺服務(wù)器。

IP_Hash 算法:這種算法是通過 IP 取模的方式制定服務(wù)器,首先通過 IP 字段轉(zhuǎn)換成 Hash 值,將取到的 Hash 值與負載服務(wù)器的總數(shù)取模,按照模值獲取負載 IP 列表中的服務(wù)器,最終確定是哪一臺服務(wù)器來承載這次請求。

這種方式因為 IP 的 Hash 值一致性原因,每一臺 IP 訪問的都是固定的服務(wù)器,用的是同一臺服務(wù)器上的 Session,從而解決了 Session 一致性的問題。

問題三:這么多服務(wù)器怎么返回用戶的請求呢?

這個問題換一種問法就是通過什么樣的集群搭建模式來處理網(wǎng)絡(luò)問題,常用的包括下面幾種:

NAT 模式:也稱為網(wǎng)絡(luò)地址傳輸模式,用戶在實際訪問項目的時候?qū)嶋H上并不是直接去訪問 Tomcat 服務(wù)器,而首先要經(jīng)過第一臺 Nginx 服務(wù)器。

但是這臺服務(wù)器的 IP 是虛擬 IP,真實要訪問的 IP 其實是后面的 Tomcat 服務(wù)器 IP。

那么在這一步就需要根據(jù)均衡算法在配置中取出后面 Tomcat 服務(wù)器的真實 IP 并做網(wǎng)絡(luò)跳轉(zhuǎn),已達到訪問的目的。

在返回用戶請求的時候,也是如此,必須通過 Tomcat 服務(wù)器的網(wǎng)絡(luò)跳轉(zhuǎn)訪問到 Nginx,繼而將請求返回到用戶方。

DR 模式:也稱為直接路由模式,這種方式相較于 NAT 模式有一個區(qū)別就是在返回用戶請求的時候,不再通過中間服務(wù)器進行轉(zhuǎn)發(fā),而是直接轉(zhuǎn)發(fā)給了用戶。

這樣做的目的其實也提高了網(wǎng)絡(luò)傳輸?shù)乃俣龋档土?Nginx 服務(wù)器的壓力。

問題四:用戶每次都去跟不一樣的伙伴勾兌,這次找伙伴 1,下次找伙伴 2,那怎么保證 Session 一致呢?

這種情況是做負載均衡經(jīng)常遇到的一個問題,如果不做處理,經(jīng)常會遇到 Session 丟失的問題,處理這個問題一般有下面幾種方法:

IP_Hash 算法固定 Session:就像上面均衡算法所說的,通過 IP 的 Hash 值取模,固定訪問某臺服務(wù)器。

這樣就確保了用戶的 Session 每次訪問都保存在同一臺服務(wù)器上,不會出現(xiàn)找不到的現(xiàn)象,從而實現(xiàn) Session 一致性。

Session廣播:也稱為 Session 復(fù)制,就是指每個用戶登錄之后,只要是訪問了我的服務(wù)器記錄了 Session,就會把 Session 的信息在所有的服務(wù)器上復(fù)制一份。

這樣就能保證每臺服務(wù)器都包含這個用戶的 Session,當(dāng)然這也是非常浪費的。

Session 持久化:就是將 Session 的信息保存到數(shù)據(jù)庫、文件或者內(nèi)存中,用這種持久化的方式將其保存到一臺公共服務(wù)器上。

這樣就能確保了 Session 一致性,而我們一般采用的方式就是將其保存到 Redis 中,方便存取而且內(nèi)存讀取的效率很高。

客戶端存儲:基于 Cookie 實現(xiàn),將 Session 直接存儲到 Cookie 中,這種方案其實不是很安全,雖然能夠做到加密,但是道高一尺魔高一丈,總會有方法破解,而且 Cookie 最多只能為 4K,大小受到限制。

上面講到的這種架構(gòu)方式,確實能夠短期內(nèi)解決個人博客訪問量激增帶來的問題,但是有沒有想過一個問題,Nginx 也是一臺服務(wù)器,如果他掛了怎么辦?還有誰能來給我們分配任務(wù)呢?難道讓這些伙伴干瞪眼嘛?

這種情況引出了一個面試題:如何避免單點故障?不慌,接著來看下一種方案。

③HA 高可用+負載均衡+服務(wù)器集群

想要解決這種問題,大家一定可以想到,再加一臺 Nginx 不就行了嘛?

沒錯,引入 HA 高可用就能解決這個問題,HA 高可用是目前企業(yè)防止核心計算機系統(tǒng)因故障停機的最有效手段,但是如何實現(xiàn)這種高可用讓兩臺 Nginx 互相切換呢?

下面還需要了解兩個新鮮的技術(shù):LVS+KeepAlived。

LVS 實現(xiàn)負載均衡:看到這個小標(biāo)題,有人可能要噴我,說你都用了 Nginx 做了負載均衡了,為啥還要用 LVS 這種東西呢?

別著急首先了解下LVS:LVS 的英文全稱是 Linux Virtual Server,即 Linux 虛擬服務(wù)器。

它是由國防科大畢業(yè)的章文嵩博士開展的一個開源項目,在 Linux 內(nèi)存 2.6 版本中已經(jīng)成為內(nèi)核的一部分。

LVS 主要用于多服務(wù)器的負載均衡,工作在七層模型中的第四層網(wǎng)絡(luò)層,可以實現(xiàn)高性能,高可用的服務(wù)器集群技術(shù),并且可把許多低性能的服務(wù)器組合在一起形成一個超級服務(wù)器。

它的配置非常簡單,有多種負載均衡的方法,而且穩(wěn)定可靠,即使在集群的服務(wù)器中某臺服務(wù)器無法正常工作,也不影響整體效果,另外它的可擴展性也非常好。

那么這種解釋能解決疑惑嗎?當(dāng)然不能,且看下面:

由于 LVS 屬于內(nèi)核級別的優(yōu)化,而且工作在網(wǎng)絡(luò)層,當(dāng)做為負載均衡服務(wù)器的 Nginx 和 LVS 處理相同的請求時,所有的請求和響應(yīng)流量都會經(jīng)過 Nginx。

但是使用 LVS 時,僅請求流量經(jīng)過 LVS 的網(wǎng)絡(luò),響應(yīng)流量由后端服務(wù)器的網(wǎng)絡(luò)返回。

這樣的話,如果有大量的請求出現(xiàn),那因為帶寬問題,LVS 的效率就會有顯著的表現(xiàn),Nginx 的瓶頸也就出現(xiàn)了。

但是僅僅使用 LVS 作為負載均衡的話,一旦后端接受到請求的服務(wù)器出了問題,那么這次請求就失敗了。

但是如果在 LVS 的后端在添加一個 Nginx(或者多個),讓 Nginx 做動靜分離和反向代理,每個 Nginx 后端再有幾臺應(yīng)用服務(wù)器。

那么結(jié)合兩者的優(yōu)勢,既能避免單 Nginx 的流量集中瓶頸,又能避免單 LVS 時請求失敗的問題,何樂而不為呢?

KeepAlived 實現(xiàn) HA 高可用:KeepAlived 從字面意思上來講就是保持活著,比如說我們兩臺 Tomcat 服務(wù)器就是兩個小伙伴,兩個小伙伴商量著,要不然咱們一個人干活一個人歇著。

但是時常的要互相詢問一句:“老鐵?你累嗎?還能行不?”,如果這個時候他回復(fù)還行,那么我就安心玩我的就行了。

但是如果他一直沒搭理我,怎么問怎么不應(yīng)聲,那它應(yīng)該是累了,你是不是需要把他的活接過來啊,沒人干肯定不行。

嚴肅點哈,KeepAlived 技術(shù)其實主要就是通過發(fā)送心跳包的方式,在每臺服務(wù)器之間進行狀態(tài)偵查,如果發(fā)現(xiàn)有宕機或者停止運行的服務(wù)器,立刻讓閑置服務(wù)器運行起來實現(xiàn)主備復(fù)制和轉(zhuǎn)移。

當(dāng)然這其中還需要一種容錯技術(shù)來將系統(tǒng)運行的狀態(tài)恢復(fù)到本應(yīng)該有的狀態(tài),避免因為某臺服務(wù)器的宕機影響執(zhí)行的結(jié)果。

④CDN 內(nèi)容分發(fā)網(wǎng)絡(luò)+Varnish 服務(wù)器集群

隨著個人博客用戶量的不斷提升,我們的項目雖然已經(jīng)可以應(yīng)付的了這么多用戶量了,但是略微還有點慢,又或者有點卡。

而且還有一個問題,中國的網(wǎng)絡(luò)環(huán)境一般都是南方多用電信網(wǎng)絡(luò),北方多用移動聯(lián)通的網(wǎng)絡(luò),電信的網(wǎng)絡(luò)訪問聯(lián)通的網(wǎng)絡(luò)明顯能感覺的出來會特別卡。

如果我們的博客放到了北方的聯(lián)通網(wǎng)絡(luò)上,而大量的用戶來自于南方,對用戶來講豈不是很痛苦。

每次訪問的時候下載一些靜態(tài)資源都會特別的慢,時間久了,可能會損失大量的用戶。

如何解決這些卡、慢的問題呢,下面再來看幾種優(yōu)化技術(shù):

CDN 內(nèi)容分發(fā)網(wǎng)絡(luò):CDN 內(nèi)容分發(fā)網(wǎng)絡(luò)是構(gòu)建在網(wǎng)絡(luò)之上的內(nèi)容加速器,依靠部署在各地的邊緣服務(wù)器,通過中心平臺的負載均衡、內(nèi)容分發(fā)、調(diào)度等功能模塊,使用戶就近獲取所需內(nèi)容,降低網(wǎng)絡(luò)擁塞,提高用戶訪問響應(yīng)速度和命中率。

也就是說,如果我們系統(tǒng)中有一個 jquery.min.js,直接放在我們北方的網(wǎng)通服務(wù)器上,南方的用戶下載會特別的慢。

但是如果我們直接用某個高速 CDN 服務(wù)器上的 Jquery 資源引入,那用戶下載的速度豈不是會快速提高,用戶體驗也會變得更好。

Varnish 服務(wù)器集群:Varnish 這個詞很多人都很陌生,其實它就是一個 HTTP 加速器和反向代理服務(wù)器,也是為了優(yōu)化方案而引入的技術(shù)。

這種技術(shù)一般被應(yīng)用在 Nginx 后面,在 Tomcat 的前面,主要用來優(yōu)化 Nginx 的動靜分離功能。

之前提到將 HTML、JS 這些靜態(tài)的資源都放置到 Nginx 服務(wù)器中,Java、JSP 等文件放置到 Tomcat 服務(wù)器中。

這樣能夠更好的分攤 Tomcat 服務(wù)器的壓力,但是這個地方還有優(yōu)化的空間,想一想是否在開發(fā)過程中存在一些 JSP 文件、Java 文件基本上是不變的。

也就是說不管怎么調(diào)用,這些東西短期內(nèi)都是固定的,那我們能不能把這些文件也提出來,讓 Nginx 直接調(diào)用以降低 Tomcat 服務(wù)器壓力呢?

答案是可以的,直接將一些短期內(nèi)不變得文件配置進 Varnish 服務(wù)器中即可。

⑤數(shù)據(jù)庫讀寫分離

之前的部分我們對 Tomcat 服務(wù)器左側(cè)進行了優(yōu)化,但是右側(cè)的數(shù)據(jù)庫還是孤零零的只有一臺。

這樣的話,個人博客項目還好只有讀操作,能夠應(yīng)付得了,但是如果我們擴展業(yè)務(wù),將博客做成了大型的博客平臺,有大量的用戶頻繁進行讀寫操作,那我們的數(shù)據(jù)庫還能應(yīng)付嘛?

肯定需要優(yōu)化了,首先我們會想到的就是把數(shù)據(jù)庫的讀寫進行分離。數(shù)據(jù)庫讀寫的分離一般需要設(shè)置主從數(shù)據(jù)庫,主庫只用來寫數(shù)據(jù),從庫用來讀取數(shù)據(jù)。

而兩個數(shù)據(jù)庫之間則需要實現(xiàn)數(shù)據(jù)的同步,否則會出現(xiàn)數(shù)據(jù)差異,實現(xiàn)數(shù)據(jù)庫同步的方法有很多,MySQL 提供了一種方法是 Binlog,目前還是比較普遍的,具體的操作配置步驟這里不再描述,以后有機會會嘗試寫寫。

⑥NOSQL 數(shù)據(jù)庫+分布式搜索引擎

讀寫分離做完之后,過不了多久會發(fā)現(xiàn),如此多的用戶讀寫數(shù)據(jù),主從庫的壓力也在日益攀升,變得越來越大,那么如何優(yōu)化讀取、寫入數(shù)據(jù)的速度呢?

引入 Redis 數(shù)據(jù)庫:既然我們的 MySQL 數(shù)據(jù)庫讀寫壓力那么大,那么我們就在它的前面添加一層 NOSQL 內(nèi)存數(shù)據(jù)庫作為盾牌。

Redis 作為常用的 NOSQL 數(shù)據(jù)庫一直以來深受大家的歡迎,而且因為是內(nèi)存中讀寫數(shù)據(jù),所以效率也是非常的高。

將它放到關(guān)系數(shù)據(jù)庫的前面,用來存放一些高頻率、熱點的常用搜索數(shù)據(jù),能夠抵抗大量的搜索壓力。

這樣的話在讀寫分離,Redis 分攤壓力的情況下,MySQL 的數(shù)據(jù)庫壓力會大規(guī)模降低。

增加分布式搜索引擎:你以為這就完了嗎,不,還不夠,為了優(yōu)化搜索的速度,給用戶帶來更好的體驗效果,引入分布式搜索引擎才是好的選擇,目前行業(yè)內(nèi)使用廣泛的分布式搜索引擎非 Elasticsearch 莫屬。

Elasticsearch 技術(shù)簡稱 ES,是一個基于 Lucene 的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于 RESTful Web 接口。

Elasticsearch 是用 Java 開發(fā)的,并作為 Apache 許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎。

Elasticsearch 分布式搜索引擎可以進行分布式實時文件存儲,并將每一個字段都編入索引,使其可以被搜索,并且可以擴展到上百臺服務(wù)器,處理 PB 級別的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。

這樣的話我們就可以通過這種方式構(gòu)建索引,再去查詢就更加減輕了關(guān)系數(shù)據(jù)庫的壓力。

⑦NOSQL 數(shù)據(jù)庫(HA)+分庫分表+MyCat

隨著博客平臺的發(fā)展,海量用戶的暴增,搜索類目的多樣性,用戶體驗的實時性,對網(wǎng)站提出了更高的要求,必須滿足高并發(fā)、高可用、高性能的要求才能繼續(xù)業(yè)務(wù)的發(fā)展。

對于我們程序員而言要做的仍然需要更新當(dāng)前的架構(gòu)技術(shù),以面對更強大的沖擊和考驗,那么我們還要如何優(yōu)化我們的系統(tǒng)呢?第七個階段我們又要引入三種方案:

NOSQL 數(shù)據(jù)庫的 HA:通過在 MySQL 服務(wù)器前面添加 Redis 服務(wù)器確實能夠抵御不少的對 MySQL 數(shù)據(jù)庫的讀寫壓力。

但是對于前面的盾牌來講,難道它就沒有壓力嗎,怎么降低 Redis 服務(wù)器的壓力呢?

首先我們會想到去配置 Redis 集群的方式加一臺或者幾臺服務(wù)器,但是配置 Redis 集群其實經(jīng)常會出現(xiàn)錯誤。

而且對于 Redis 集群來說,經(jīng)常要求 Redis 服務(wù)器可以自動擴容,為了解決這些問題更好的管理 Redis 集群,我們可以選擇引入分布式 Redis 解決方案。

前段時間 Redis 官方的 3.0 出了穩(wěn)定版,3.0 就可以支持集群管理的功能。這里選擇的是國產(chǎn)的分布式 Redis 解決方案-Codis。

Codis 是一個分布式 Redis 解決方案,對于上層的應(yīng)用來說,連接到 Codis Proxy 和連接原生的 Redis Server 沒有明顯的區(qū)別。

上層應(yīng)用可以像使用單機的 Redis 一樣使用,Codis 底層會處理請求的轉(zhuǎn)發(fā),不停機的數(shù)據(jù)遷移等工作,所有后邊的一切事情,對于前面的客戶端來說是透明的,可以簡單的認為后邊連接的是一個內(nèi)存無限大的 Redis 服務(wù)。

分庫分表:隨著業(yè)務(wù)的遞增,分庫分表的技術(shù)也需要運用到如此龐大的項目中,主要是因為各種業(yè)務(wù)表正在變得越來越大,例如用戶表、博客表等等。

你會想到如果每個業(yè)務(wù)表都能分開存放那該多好,添加多個數(shù)據(jù)庫服務(wù)器,每個服務(wù)器負責(zé)一塊業(yè)務(wù)表的維護管理。

數(shù)據(jù)庫 1 存放用戶數(shù)據(jù),數(shù)據(jù)庫 2 存放博客信息,從而達到進一步細分數(shù)據(jù)庫的目的,而這種拆分數(shù)據(jù)庫的方式就叫做垂直拆分方式。

還有一種拆分方式是這樣的,比如說我們的用戶表數(shù)據(jù)量非常非常大,一張表數(shù)據(jù)達到了 8 千萬,那我們查詢讀取這張表的時候會不會特別慢。

即便你已經(jīng)垂直拆分到了一個服務(wù)器上進行管理,但是你仍然不能解決一張表 8 千萬的問題,那么如何解決呢?

聰明的你會想到分表存放,這種方式就是水平拆分方式,將用戶表分成表 1、表 2、表 3......

通過這樣的方式你可以將這 8 千萬的用戶分到子表中,而具體的分表方式可以采用很多種方案,例如進行 ID 取模,具體方式由于篇幅問題不再描述。

MyCat:分庫分表之后,你會發(fā)現(xiàn)數(shù)據(jù)庫壓力真的變小了很多,但是也會有很多不方便的事情。

比如說:

  • 分布式事務(wù)提交問題。
  • 分庫分表的運維和獲取問題。
  • 跨數(shù)據(jù)庫的 Join 聚合查詢問題。
  • MySQL 中自增字段(AUTO_INCREMENT)還能用嗎?
  • 某些約束條件在分庫分表的環(huán)境下會不會特別復(fù)雜了?

這個時候你會用到分庫分表中間件 MyCat,它是一個徹底開源的,面向企業(yè)應(yīng)用開發(fā)的大數(shù)據(jù)庫集群,支持事務(wù)、ACID、可以替代 MySQL 的加強版數(shù)據(jù)庫。

一個可以視為 MySQL 集群的企業(yè)級數(shù)據(jù)庫,用來替代昂貴的 Oracle 集群 ,一個融合內(nèi)存緩存技術(shù)、NoSQL 技術(shù)、HDFS 大數(shù)據(jù)的新型 SQL Server,結(jié)合傳統(tǒng)數(shù)據(jù)庫和新型分布式數(shù)據(jù)倉庫的新一代數(shù)據(jù)庫中間件產(chǎn)品。

⑧分布式文件系統(tǒng)

在系統(tǒng)的發(fā)展過程中,會發(fā)現(xiàn)有一些圖片、視頻、Excel 等不同格式的大文件也需要做出處理。

比如說大型系統(tǒng)中的用戶頭像,8 千萬的用戶就需要有 8 千萬的頭像,每張頭像都需要占用一定的存儲空間(一般來說 4K 到幾百 M 都有可能)。

那么如何去處理這些文件的存儲呢?保存到數(shù)據(jù)庫中技術(shù)上完全可以,但是僅限于說說哈,如果實際這么做了可能你的系統(tǒng)會面臨很大的壓力。

為了解決這種問題,就出現(xiàn)了分布式文件系統(tǒng)這樣的技術(shù),典型比較通用的包括 MogileFS、FastDFS。

MogileFS 是一個開源的分布式文件存儲系統(tǒng),是由 LiveJournal 旗下的 Danga Interactive 公司開發(fā)。

目前使用 MogileFS 的公司非常多,如日本排名靠前的幾個互聯(lián)公司以及國內(nèi)的 Yupoo(又拍)、digg、豆瓣、大眾點評、搜狗等,分別為所在的組織或公司管理著海量的圖片。

以大眾點評為例,用戶全部圖片均有 MogileFS 存儲,數(shù)據(jù)量已經(jīng)達到 500TB 以上。

FastDFS 是由阿里數(shù)據(jù)庫大神開發(fā),是一個開源的輕量級分布式文件系統(tǒng),它對文件進行管理。

功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務(wù),如相冊網(wǎng)站、視頻網(wǎng)站等等。

⑨應(yīng)用服務(wù)化拆分+消息中間件

如果思考過京東、美團、淘寶等等這些大型互聯(lián)網(wǎng)公司的業(yè)務(wù)模塊,你會發(fā)現(xiàn)他們每增加一塊業(yè)務(wù),其實就是在增加一個業(yè)務(wù)組件。

比如說某生活服務(wù)公司的業(yè)務(wù)分布如圖所示:

在上圖中會發(fā)現(xiàn)業(yè)務(wù)組件部分包括了用戶、支付、搜索、推薦、地理位置等等。

其中的每一個業(yè)務(wù)組件其實都對應(yīng)著一項服務(wù),而且都有專門的數(shù)據(jù)庫服務(wù)器進行維護管理,也就是之前提到的分庫分表。

而分庫分表拆分的是數(shù)據(jù),那如何對業(yè)務(wù)進行拆分,將每一種業(yè)務(wù)分成一種服務(wù),需要什么服務(wù)就去調(diào)用什么服務(wù),從而讓系統(tǒng)更加的專一和精確。

如果對應(yīng)到我們的架構(gòu)上,就需要在數(shù)據(jù)層和應(yīng)用層添加一個層面——服務(wù)組件層,其實這種架構(gòu)方式就是應(yīng)用服務(wù)化拆分。

提到應(yīng)用服務(wù)化拆分,就不得不提及服務(wù)化治理框架,這里就需要引入三種主流的應(yīng)用服務(wù)化技術(shù):

  • Zookeeper
  • Dubbo
  • 消息解耦異步的消息中間件技術(shù):MQ 消息隊列

Zookeeper:一般來說,Zookeeper 常常跟 Dubbo 是配合使用的,因為 Dubbo 需要進行服務(wù)注冊。

而 ZooKeeper 一個最常用的使用場景就是用于擔(dān)任服務(wù)生產(chǎn)者和服務(wù)消費者的注冊中心。

服務(wù)生產(chǎn)者將自己提供的服務(wù)注冊到 ZooKeeper 中心,服務(wù)的消費者在進行服務(wù)調(diào)用的時候先到 ZooKeeper 中查找服務(wù),獲取到服務(wù)生產(chǎn)者的詳細信息之后,再去調(diào)用服務(wù)生產(chǎn)者的內(nèi)容與數(shù)據(jù)。

Dubbo:提到服務(wù)治理,Dubbo 絕對是一個優(yōu)秀的服務(wù)治理框架,它可以通過透明化的遠程方法調(diào)用。

就像調(diào)用本地方法一樣調(diào)用遠程方法,只需簡單配置即可,這樣不管是擴展了幾種業(yè)務(wù)組件,都可以像調(diào)用本地方法一樣調(diào)用其他的業(yè)務(wù)方法。

它使用起來非常方便,用過的人一般都知道,只需要加一個注解就可以使用其方法,而且調(diào)用的效率非常高。

MQ 消息隊列:MQ 消息隊列已經(jīng)逐漸成為企業(yè) IT 系統(tǒng)內(nèi)部通信的核心手段。

它具有低耦合、可靠投遞、廣播、流量控制、最終一致性等一系列功能,成為異步 RPC 的主要手段之一。

比如在電商系統(tǒng)中,來自訂單下載轉(zhuǎn)化后的大量訂單需要推送到物流配送管理系統(tǒng)中,就需要通過 MQ 這種技術(shù)來處理讓物流系統(tǒng)慢慢的按照數(shù)據(jù)庫能承受的并發(fā)量,從消息隊列中拉取并配送訂單,從而讓流程更加有序、穩(wěn)定。

當(dāng)今市面上有很多主流的消息中間件,如老牌的 ActiveMQ、RabbitMQ,炙手可熱的 Kafka,阿里巴巴自主開發(fā) RocketMQ 等。

⑩微服務(wù)架構(gòu)

上一個架構(gòu)演變的階段作為目前主流的系統(tǒng)架構(gòu)來說,完全可以抵住當(dāng)前流量所帶來的壓力,但是未來隨著業(yè)務(wù)和用戶量的增長,仍然還會有更大的挑戰(zhàn)出現(xiàn)。

2012 年微服務(wù)的概念被提了出來,它的基本思想在于考慮圍繞著業(yè)務(wù)領(lǐng)域組件來創(chuàng)建應(yīng)用,這些應(yīng)用可獨立地進行開發(fā)、管理和加速。

在分散的組件中使用微服務(wù)云架構(gòu)和平臺,使部署、管理和服務(wù)功能交付變得更加簡單。

在微服務(wù)架構(gòu)中,每個服務(wù)都是自我包含的,并且實現(xiàn)了單一的業(yè)務(wù)功能,而這種架構(gòu)也必將成為未來的發(fā)展趨勢,目前也有很多微服務(wù)的框架已經(jīng)落地并迅速發(fā)展,比如說 Spring Cloud 微服務(wù)框架。

Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā)。

如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用 Spring Boot 的開發(fā)風(fēng)格做到一鍵啟動和部署。

在未來的微服務(wù)盛行的趨勢下,Spring Cloud 也必將成為 Java 程序員必須掌握的框架之一了。

總結(jié)

在這篇互聯(lián)網(wǎng)架構(gòu)的演變中,我只是簡單的對一些技術(shù)進行了說明,重點說明的是每一層的架構(gòu)所引入的技術(shù)到底是為什么會出現(xiàn)在這一層,具體解決了什么樣的實際問題。

不管怎么樣,技術(shù)發(fā)展如此快速的時代,我們每一個程序員都不應(yīng)該一直埋頭于技術(shù)的研究,偶爾抬起頭看看架構(gòu)的發(fā)展和未來的趨勢,或許對我們的程序之路有一個更宏觀的了解。只有這樣,我們才能離職業(yè)危機更遠。

 

責(zé)任編輯:武曉燕 來源: Java知識共享
相關(guān)推薦

2017-12-26 15:52:31

MQ互聯(lián)網(wǎng)耦合

2019-03-18 07:08:53

高可用互聯(lián)網(wǎng)架構(gòu)分布式

2016-12-06 11:56:13

互聯(lián)網(wǎng)架構(gòu)高可用

2016-09-22 15:55:39

互聯(lián)網(wǎng)架構(gòu)容量設(shè)計

2019-05-13 10:30:34

互聯(lián)網(wǎng)架構(gòu)容量

2018-01-01 06:41:44

耦合互聯(lián)網(wǎng)架構(gòu)配置中心

2022-06-09 08:01:43

秒殺系統(tǒng)互聯(lián)網(wǎng)架構(gòu)

2016-09-22 15:01:59

微服務(wù)互聯(lián)網(wǎng)架構(gòu)

2019-11-28 16:09:29

架構(gòu)模板存儲

2017-01-11 21:40:03

互聯(lián)網(wǎng)架構(gòu)高并發(fā)

2019-04-10 14:10:02

高并發(fā)分布式系統(tǒng)架構(gòu)

2011-11-10 15:09:04

廣告移動互聯(lián)網(wǎng)

2019-04-18 14:24:52

技術(shù)互聯(lián)網(wǎng)架構(gòu)

2012-09-19 15:43:21

云時代

2018-11-07 06:35:50

互聯(lián)網(wǎng)服務(wù)化高可用架構(gòu)

2019-12-26 07:39:36

互聯(lián)網(wǎng)架構(gòu)ip

2021-08-27 08:44:52

MQ架構(gòu)耦合

2019-12-31 10:08:35

架構(gòu)模式軟件

2015-08-24 10:34:21

云數(shù)據(jù)中心互聯(lián)網(wǎng)架構(gòu)安全

2020-08-11 09:43:28

分層架構(gòu)互聯(lián)網(wǎng)架構(gòu)
點贊
收藏

51CTO技術(shù)棧公眾號

欧美色男人天堂| 国产欧美一区二区精品忘忧草| 欧美精品一区在线播放| 亚洲日本久久久| 依依综合在线| 国产精品久久久久影院亚瑟| 99国产在线| 亚洲精品成人在线视频| 久久一区91| 亚洲成人激情在线| 中文字幕欧美人妻精品一区| 黄色网页在线观看| av高清久久久| 91精品一区二区| 国产成人无码精品| 日韩伦理一区| 日韩av中文字幕在线| 污色网站在线观看| 操喷在线视频| 亚洲欧洲一区二区三区| 精品蜜桃一区二区三区| 97视频免费在线| 久久国产免费| 欧美精品videossex性护士| 在线观看国产精品一区| 中文字幕一区二区三区日韩精品| 一本大道久久a久久精二百| 中文字幕乱码免费| 久草福利在线视频| 不卡的av中国片| 成人久久一区二区三区| 久久精品视频7| 欧美午夜久久| 中文字幕精品一区久久久久 | 欧美free嫩15| 欧美日韩免费一区| 日韩精品综合在线| 国产日产一区二区三区| 国产精品全国免费观看高清| 欧美精品中文字幕一区二区| 欧美熟妇交换久久久久久分类| 久久99精品国产麻豆婷婷| 国产成人亚洲综合| wwwwww国产| 亚洲日本免费| 久久欧美在线电影| 欧美黄色免费观看| 欧美在线黄色| 欧美成人三级视频网站| 在线视频这里只有精品| 日韩精品一区二区三区免费观看| 亚洲人成在线一二| 国产又爽又黄无码无遮挡在线观看| 亚洲精品午夜| 日韩精品一区二区三区蜜臀| 一本之道在线视频| 国产精品亚洲综合在线观看| 欧美另类高清zo欧美| 毛片毛片毛片毛| 成人在线日韩| 日韩美一区二区三区| 日本中文字幕在线不卡| 久久伊人影院| 精品国产99国产精品| 精品1卡二卡三卡四卡老狼| 国产极品模特精品一二| 亚洲成av人片在线观看香蕉| 中文字幕乱码一区| 久久这里只有精品一区二区| 日韩精品欧美国产精品忘忧草 | 中文在线免费看视频| 免费精品视频最新在线| 成人网中文字幕| 99热这里是精品| 成人免费毛片a| 精品日产一区2区三区黄免费| 天天干在线观看| av欧美精品.com| 午夜精品一区二区三区四区| 在线视频婷婷| 亚洲伊人伊色伊影伊综合网| 国自产拍偷拍精品啪啪一区二区| 香蕉视频亚洲一级| 欧美日产国产精品| 女教师高潮黄又色视频| 伦理一区二区| 色噜噜亚洲精品中文字幕| 高清国产在线观看| 欧美极品一区二区三区| 欧美一区视频在线| 国产精品免费无遮挡| 成人av综合一区| 日韩欧美精品在线不卡| 中中文字幕av在线| 日韩欧美在线免费观看| 亚洲视频第二页| 精品少妇一区| 视频在线一区二区| 国产精彩视频在线观看| 日韩av一区二区在线影视| 97人人干人人| 国产视频福利在线| 亚洲综合一区在线| 激情五月婷婷久久| 亚洲日本va中文字幕| 亚洲深夜福利网站| 久久精品99久久久久久| 日韩经典一区二区| 国产精品麻豆免费版| 番号集在线观看| 精品av在线播放| 人人爽人人爽av| 久草成人在线| 高清亚洲成在人网站天堂| 一区二区视频播放| 91在线观看高清| 九九久久九九久久| 日韩在线免费| 日韩激情在线视频| 欧美成人一二三区| 久久9热精品视频| 欧美激情视频一区二区三区| 欧美亚洲天堂| 555www色欧美视频| 成熟人妻av无码专区| 亚洲人成在线影院| www.久久久| 免费黄色在线观看| 欧美最猛性xxxxx直播| 亚洲中文字幕一区| 激情成人亚洲| av日韩免费电影| 影院在线观看全集免费观看| 欧美丝袜丝交足nylons图片| 国产精品三级在线观看无码| 一本色道久久综合一区 | 日本精品www| 国产精品99久久免费观看| 毛片精品免费在线观看| 一本色道久久综合熟妇| 国产精品三级久久久久三级| 日韩在线第三页| 一道本一区二区三区| 97婷婷大伊香蕉精品视频| 亚洲黄色精品视频| 洋洋av久久久久久久一区| 特级西西444www| 亚洲成av人片一区二区密柚| 国产日韩在线一区| 黄色在线免费看| 9191精品国产综合久久久久久| 日本污视频网站| 日本欧美在线看| 图片区小说区区亚洲五月| 欧美日韩精品免费观看视完整| 亚洲美女视频网站| 五月天婷婷导航| 国产欧美日韩三级| 9l视频白拍9色9l视频| 成人精品天堂一区二区三区| 国产精品亚洲欧美导航| 日本在线看片免费人成视1000| 色婷婷综合五月| 久久久久久久毛片| 麻豆极品一区二区三区| 中文字幕中文字幕一区三区| 精品国产三区在线| 欧美精品第一页在线播放| 亚洲精品久久久狠狠狠爱| 亚洲国产人成综合网站| 亚洲av成人片色在线观看高潮| 一本色道久久综合亚洲精品不卡| 欧美一区1区三区3区公司| 日韩欧美一区二区三区免费观看 | 大地资源二中文在线影视观看| 国产精品综合色区在线观看| 日韩中文字幕av在线| 先锋影音一区二区| 久久久久久久国产精品| 深夜福利视频在线免费观看| 欧洲国产伦久久久久久久| 网站永久看片免费| 国产suv精品一区二区883| 男人插女人视频在线观看| 一区二区三区韩国免费中文网站| 国产精品成人v| 超碰在线最新| 日韩电视剧在线观看免费网站| 久久精品视频2| 日韩美女精品在线| 久久一区二区电影| 欧美bbbbb| 久久男人资源站| 国产精品手机在线播放| 91夜夜未满十八勿入爽爽影院| 黄色18在线观看| 中文字幕一区二区精品| 三上悠亚av一区二区三区| 午夜视频在线看| 精品国产a毛片| 最近中文字幕在线免费观看 | 午夜精品一区二区三区视频| www.爱久久.com| 15—17女人毛片| 精品成人在线| 在线不卡日本| 欧美日日夜夜| 亚洲一区国产精品| 午夜日韩成人影院| 久久久久久av| 麻豆传媒在线完整视频| 日韩大片免费观看视频播放| 国产伦精品一区二区三区四区 | 国产一区二区黑人欧美xxxx| 成人av手机在线| 欧美日韩免费观看一区二区三区| 日韩和一区二区| 亚洲欧美偷拍三级| www.av天天| 99久久久精品| 成人在线短视频| 免费xxxx性欧美18vr| 欧美成人高潮一二区在线看| 正在播放日韩欧美一页| 日韩中文字幕一区| 日韩系列在线| 国产九色精品| 日本精品视频| 国产日韩亚洲欧美| a成人v在线| 国产成人综合精品| 国产精品专区免费| 69视频在线免费观看| 青草在线视频在线观看| 久久亚洲精品中文字幕冲田杏梨| 国产美女视频一区二区三区| 亚洲免费小视频| 亚洲av成人无码久久精品老人| 欧美一区二区久久久| 国产又粗又黄又爽| 欧美日韩高清一区二区三区| 无码人妻丰满熟妇区五十路| 高跟丝袜一区二区三区| 99热只有这里有精品| 亚洲狠狠爱一区二区三区| 国产盗摄x88av| 亚洲人妖av一区二区| 黑人操日本美女| 国产精品国产成人国产三级| 国产又粗又长免费视频| 亚洲国产精品成人综合| 影音先锋制服丝袜| 国产精品网友自拍| 一二三四在线观看视频| 国产欧美一区二区精品忘忧草| 韩国三级hd中文字幕| 日本一区二区三区在线不卡| 一区二区三区在线观看免费视频| 久久精品水蜜桃av综合天堂| 日本理论中文字幕| 成人免费在线播放视频| 欧美激情图片小说| 亚洲精品成人在线| 久久草视频在线| 欧美视频专区一二在线观看| 色老头在线视频| 欧美亚洲精品一区| 888奇米影视| 日韩视频一区二区三区在线播放 | 日韩欧美亚洲在线| 日韩在线第七页| 久久久成人精品一区二区三区| 亚洲网色网站| 777av视频| 日韩电影免费一区| 五月天开心婷婷| 成人午夜短视频| av黄色免费网站| 亚洲天堂a在线| 黄色一级片在线免费观看| 亚洲午夜一区二区| 日本a级c片免费看三区| 欧美福利视频一区| 无套内谢的新婚少妇国语播放| 国产一区二区三区免费视频| 九七电影韩国女主播在线观看| 欧美国产日本高清在线| 亚洲一区站长工具| 成人女保姆的销魂服务| 国产精东传媒成人av电影| 日韩高清国产一区在线观看| 91精品国产调教在线观看| 久久久久久久中文| 久久精品国产一区二区三| 午夜视频在线免费看| 91片在线免费观看| www.5588.com毛片| 欧美日韩中文字幕在线视频| 一级爱爱免费视频| 日韩av在线影院| 国产黄色在线免费观看| 2019亚洲男人天堂| 国产精品国产三级在线观看| 另类小说综合网| 亚洲精品网址| 亚洲狼人综合干| 成人黄色777网| 国产中文字幕久久| 一本久久综合亚洲鲁鲁五月天 | 激情五月激情综合网| 三级视频网站在线观看| 1区2区3区精品视频| 欧美三级一区二区三区| 91精品黄色片免费大全| 精品乱码一区二区三四区视频| 欧美人与性动交a欧美精品| av在线日韩| 久久久久久久久一区二区| 一区二区蜜桃| 免费一区二区三区在线观看| k8久久久一区二区三区 | 特级丰满少妇一级aaaa爱毛片| 精品国产一区二区三区久久狼黑人| 欧美男男tv网站在线播放| 草莓视频一区| 99久久精品费精品国产| 国产又黄又猛视频| 99久久精品99国产精品| 欧美三级小视频| 欧美精品在线一区二区| 国产女人在线视频| 日韩av三级在线观看| 久久丝袜视频| 国产中文字幕二区| 成人性生交大合| 久草视频免费在线播放| 7777女厕盗摄久久久| 欧美性videos| 国产在线视频欧美| 欧美3p在线观看| 欧美特级aaa| 日本一区二区视频在线观看| 免费又黄又爽又猛大片午夜| 亚洲欧美制服中文字幕| sis001欧美| 日本不卡一区二区三区视频| 亚洲免费一区二区| 少妇大叫太粗太大爽一区二区| 亚洲国产中文字幕| 女人18毛片一区二区三区| 欧美国产亚洲精品久久久8v| 视频一区在线| 波多野结衣与黑人| 丁香亚洲综合激情啪啪综合| 国产精品成人免费观看| 日韩视频免费直播| 女人黄色免费在线观看| 国产精品加勒比| 亚洲成人资源| 特大黑人巨人吊xxxx| 欧美体内谢she精2性欧美| 精品久久av| 国产中文字幕亚洲| 女人天堂亚洲aⅴ在线观看| 久久久久亚洲av无码网站| 亚洲国产欧美日韩另类综合| 无码国产伦一区二区三区视频| 欧美一区三区三区高中清蜜桃| 久久99精品久久久久久园产越南| 爱情岛论坛vip永久入口| 中文字幕亚洲一区二区va在线| 国产精品一区二区av白丝下载| 欧美日韩第一页| 日韩高清成人在线| 毛葺葺老太做受视频| 国产精品乱人伦| www.久久精品.com| 136fldh精品导航福利| 国产探花一区| 中文字幕日韩久久| 五月激情六月综合| 69视频在线观看| 99在线免费观看视频| 久久精选视频| 午夜精品福利在线视频| 亚洲国产成人精品久久| 电影网一区二区| 亚洲成年人专区| 99久久精品情趣| 一级片视频免费| 午夜欧美大片免费观看| 精品久久不卡| 一本色道久久hezyo无码| 色天天综合久久久久综合片| 成人直播在线| 品久久久久久久久久96高清| 韩国视频一区二区| 国产一级做a爱片久久毛片a| 久久黄色av网站| 中文字幕精品影院|