互聯(lián)網(wǎng)系統(tǒng)架構(gòu)_第1頁(yè)
互聯(lián)網(wǎng)系統(tǒng)架構(gòu)_第2頁(yè)
互聯(lián)網(wǎng)系統(tǒng)架構(gòu)_第3頁(yè)
互聯(lián)網(wǎng)系統(tǒng)架構(gòu)_第4頁(yè)
互聯(lián)網(wǎng)系統(tǒng)架構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、互聯(lián)網(wǎng)系統(tǒng)架構(gòu)第1頁(yè)提要指導(dǎo)思想實(shí)例架構(gòu)進(jìn)化實(shí)現(xiàn)框架慣用技術(shù)第2頁(yè)指導(dǎo)思想分而治之(divide and conquer)集中調(diào)度(centralized schedule)緩存(cache)復(fù)制(replication)數(shù)據(jù)采集(sample)第3頁(yè)實(shí)例1:Google早期系統(tǒng)架構(gòu)Replica 1Replica 0GTCNetscalerGFEGSLBGFEGFEBackend0Backend0Backend0Backend0LBBackend1Backend1UserBorgBorgMonAlertManager第4頁(yè)實(shí)例2:分層分模塊架構(gòu)第5頁(yè)架構(gòu)進(jìn)化利用指導(dǎo)思想,一步一步進(jìn)化成一個(gè)大

2、規(guī)模服務(wù)架構(gòu)第6頁(yè)分離webserver和數(shù)據(jù)庫(kù)/BlueDavy/archive/09/03/226749.html狀態(tài)搜集第7頁(yè)增加頁(yè)面緩存狀態(tài)搜集第8頁(yè)增加頁(yè)面片段緩存狀態(tài)搜集第9頁(yè)數(shù)據(jù)緩存狀態(tài)搜集第10頁(yè)增加webserver狀態(tài)搜集服務(wù)調(diào)度第11頁(yè)分庫(kù)狀態(tài)搜集服務(wù)調(diào)度第12頁(yè)分表、DAL和分布式緩存狀態(tài)搜集服務(wù)調(diào)度第13頁(yè)增加更多webserver狀態(tài)搜集第14頁(yè)數(shù)據(jù)讀寫分離和廉價(jià)存放方案狀態(tài)搜集第15頁(yè)大型分布式應(yīng)用和廉價(jià)服務(wù)器群狀態(tài)搜集服務(wù)調(diào)度第16頁(yè)實(shí)現(xiàn)框架Zookeeper服務(wù)集群管理Thrift RPC 實(shí)現(xiàn)服務(wù)模塊Nagios數(shù)據(jù)采集監(jiān)控第17頁(yè)ZooKeeperZook

3、eeper 從設(shè)計(jì)模式角度來看,是一個(gè)基于觀察者模式設(shè)計(jì)分布式服務(wù)管理框架,負(fù)責(zé)存放和管理大家都關(guān)心數(shù)據(jù),然后接收觀察者注冊(cè),一旦這些數(shù)據(jù)狀態(tài)發(fā)生改變,Zookeeper 就將負(fù)責(zé)通知已經(jīng)在 Zookeeper 上注冊(cè)那些觀察者做出對(duì)應(yīng)反應(yīng),從而實(shí)現(xiàn)集群管理。第18頁(yè)統(tǒng)一命名服務(wù)(Name Service)分布式應(yīng)用中,通常需要有一套完整命名規(guī)則,既能夠產(chǎn)生唯一名稱又便于人識(shí)別和記住,通常情況下用樹形名稱結(jié)構(gòu)是一個(gè)理想選擇,樹形名稱結(jié)構(gòu)是一個(gè)有層次目錄結(jié)構(gòu),既對(duì)人友好又不會(huì)重復(fù)。Name Service 已經(jīng)是 Zookeeper 內(nèi)置功效,只要調(diào)用 Zookeeper API 就能實(shí)現(xiàn)。如調(diào)

4、用 create 接口就能夠很輕易創(chuàng)建一個(gè)目錄節(jié)點(diǎn)。第19頁(yè)配置管理(Config Management)配置管理在分布式應(yīng)用環(huán)境中很常見,比如同一個(gè)應(yīng)用系統(tǒng)需要多臺(tái) Server 運(yùn)行,不過它們運(yùn)行應(yīng)用系統(tǒng)一些配置項(xiàng)是相同,假如要修改這些相同配置項(xiàng),那么就必須同時(shí)修改每臺(tái)運(yùn)行這個(gè)應(yīng)用系統(tǒng) Server,這么非常麻煩而且輕易犯錯(cuò)。像這么配置信息完全能夠交給 Zookeeper 來管理,將配置信息保留在 Zookeeper 某個(gè)目錄節(jié)點(diǎn)中,然后將全部需要修改應(yīng)用機(jī)器監(jiān)控配置信息狀態(tài),一旦配置信息發(fā)生改變,每臺(tái)應(yīng)用機(jī)器就會(huì)收到 Zookeeper 通知,然后從 Zookeeper 獲取新配置信息應(yīng)

5、用到系統(tǒng)中。第20頁(yè)配置管理(Config Management)第21頁(yè)集群管理(Group Membership)Zookeeper 能夠很輕易實(shí)現(xiàn)集群管理功效,如有多臺(tái) Server 組成一個(gè)服務(wù)集群,那么必須要一個(gè)“總管”知道當(dāng)前集群中每臺(tái)機(jī)器服務(wù)狀態(tài),一旦有機(jī)器不能提供服務(wù),集群中其它集群必須知道,從而做出調(diào)整重新分配服務(wù)策略。一樣當(dāng)增加集群服務(wù)能力時(shí),就會(huì)增加一臺(tái)或多臺(tái) Server,一樣也必須讓“總管”知道。實(shí)現(xiàn)方式都是在 Zookeeper 上創(chuàng)建一個(gè) EPHEMERAL 類型目錄節(jié)點(diǎn),然后每個(gè) Server 在它們創(chuàng)建目錄節(jié)點(diǎn)父目錄節(jié)點(diǎn)上調(diào)用 getChildren(Stri

6、ng path, boolean watch) 方法并設(shè)置 watch 為 true,因?yàn)槭?EPHEMERAL 目錄節(jié)點(diǎn),當(dāng)創(chuàng)建它 Server 死去,這個(gè)目錄節(jié)點(diǎn)也隨之被刪除,所以 Children 將會(huì)改變,這時(shí) getChildren上 Watch 將會(huì)被調(diào)用,所以其它 Server 就知道已經(jīng)有某臺(tái) Server 死去了。新增 Server 也是一樣原理。第22頁(yè)集群管理(Group Membership)第23頁(yè)ThriftThrift 是 Facebook 實(shí)現(xiàn)一個(gè)高效、支持各種編程語(yǔ)言遠(yuǎn)程服務(wù)調(diào)用框架。結(jié)合了功效強(qiáng)大軟件堆棧代碼生成引擎,無(wú)縫地與C+,C#,Java,Pytho

7、n和PHP和Ruby,Javascript等各種語(yǔ)言結(jié)合。Thrift允許你定義一個(gè)簡(jiǎn)單定義文件中數(shù)據(jù)類型和服務(wù)接口,以作為輸入文件,編譯器生成代碼用來方便地生成RPC客戶端和服務(wù)器通信無(wú)縫跨編程語(yǔ)言。競(jìng)品有ProtoBuf等。第24頁(yè)Thrift 文件樣例Hello.thriftnamespace java service.demo service Hello string helloString(1:string para) i32 helloInt(1:i32 para) bool helloBoolean(1:bool para) void helloVoid() string hel

8、loNull() 定義了服務(wù) Hello 五個(gè)方法,每個(gè)方法包含一個(gè)方法名,參數(shù)列表和返回類型。每個(gè)參數(shù)包含參數(shù)序號(hào),參數(shù)類型以及參數(shù)名。使用 Thrift 工具編譯 Hello.thrift,就會(huì)生成對(duì)應(yīng) Hello.java 文件。該文件包含了在 Hello.thrift 文件中描述服務(wù) Hello 接口定義,即 Hello.Iface 接口,以及服務(wù)調(diào)用底層通信細(xì)節(jié)。第25頁(yè)Thrift 文件樣例structReport 1:requiredstringmsg ; /該字段必須填寫2:optionali32type=0;/默認(rèn)值3:i32time/默認(rèn)字段類型為optional第26頁(yè)T

9、hrift 架構(gòu)第27頁(yè)Nagios一款無(wú)償開源 IT 基礎(chǔ)設(shè)施監(jiān)控系統(tǒng),其功效強(qiáng)大,靈活性強(qiáng),能有效監(jiān)控 Windows 、Linux、VMware 和 Unix 主機(jī)狀態(tài),交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)置等。一旦主機(jī)或服務(wù)狀態(tài)出現(xiàn)異常時(shí),會(huì)發(fā)出郵件或短信報(bào)警第一時(shí)間通知 IT 運(yùn)行人員,在狀態(tài)恢復(fù)后發(fā)出正常郵件或短信通知。Nagios 結(jié)構(gòu)簡(jiǎn)單,可維護(hù)性強(qiáng),同時(shí)提供一個(gè)可選基于瀏覽器 Web 界面,方便管理人員查看系統(tǒng)運(yùn)行狀態(tài),網(wǎng)絡(luò)狀態(tài)、服務(wù)狀態(tài)、日志信息,以及其它異?,F(xiàn)象。簡(jiǎn)單地插件設(shè)計(jì)使得用戶能夠方便地?cái)U(kuò)展自己服務(wù)檢測(cè)方法。競(jìng)品有Zabbix等。第28頁(yè)Nagios工作原理第29頁(yè)Nagios

10、架構(gòu)第30頁(yè)插件樣例插件:#!/usr/bin/env pythonimport os,sys(d1, d2, d3) = os.getloadavg()if d1 = 5.0: print GETLOADAVG CRITICAL: Load average is %.2f % (d1) sys.exit(2)else: print GETLOADAVG OK: Load average is %.2f % (d1) sys.exit(0)注冊(cè):define command command_name check_mygetloadavg command_line /path/to/check_

11、getloadavg 使用:define service use service-template host_name localhost service_description LoadAverage check_period 24x7 contact_groups server-admins notification_options c,r check_command check_mygetloadavg第31頁(yè)P(yáng)ut them togetherZooKeeper數(shù)據(jù)服務(wù)1數(shù)據(jù)服務(wù)2數(shù)據(jù)服務(wù)n業(yè)務(wù)服務(wù)1業(yè)務(wù)服務(wù)2業(yè)務(wù)服務(wù)m展示服務(wù)1展示服務(wù)2展示服務(wù)k注冊(cè)監(jiān)聽ThriftThriftThr

12、iftThriftThrift反向代理1反向代理2反向代理l負(fù)載均衡Nagios第32頁(yè)Q/A or Continue?第33頁(yè)慣用技術(shù)前端應(yīng)用邏輯后端數(shù)據(jù)庫(kù)搜索推薦移動(dòng)第34頁(yè)前端防火墻,DDos負(fù)載均衡:F5,Netscaler,LVS,DNSHTML,HTML5,F(xiàn)lash,JavascriptPHP,Java,Ruby,.Net,Python,Node.jsApache,Nginx,customized http server第35頁(yè)負(fù)載均衡數(shù)據(jù)中心間均衡:DNS數(shù)據(jù)中心內(nèi)均衡:F5,LVS,反向代理后端服務(wù)均衡第36頁(yè)應(yīng)用邏輯PHP,Ruby,Python,Java,.Net等框架組

13、件第37頁(yè)數(shù)據(jù)庫(kù)Database:MySQL,Postgres,OracleNoSQL:MongoDB,Cassandra第38頁(yè)數(shù)據(jù)庫(kù)/存放結(jié)構(gòu)第39頁(yè)數(shù)據(jù)庫(kù)/分表第40頁(yè)數(shù)據(jù)庫(kù)/分表/bluishglc/article/details/6161475第41頁(yè)數(shù)據(jù)庫(kù)/高可靠性/database/ha-scale-out-architecture-based-mysql第42頁(yè)數(shù)據(jù)庫(kù)/Cache & Search第43頁(yè)NoSQL/paper/databases/nosql/Nosql.html/a/0920/1248/000001248963_all.shtml第44頁(yè)搜索引擎第45頁(yè)推薦引擎/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html第46頁(yè)推薦引擎基于人口統(tǒng)計(jì)學(xué)推薦機(jī)制工作原理第47頁(yè)推薦引擎基于內(nèi)容推薦機(jī)制基本原理第48頁(yè)推薦引擎基于用戶協(xié)同過濾推薦機(jī)制基本原理第49頁(yè)推薦引擎基于項(xiàng)目標(biāo)協(xié)同過濾推薦機(jī)制基本

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論