




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、互聯(lián)網(wǎng)金融微服務(wù)架構(gòu)設(shè)計(jì)上篇Internet financial microservice architecture design培訓(xùn)人:某某某時(shí)間:XXXX目錄CONTENTS01 SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)02 互聯(lián)網(wǎng)高并發(fā)SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)PART 01SOA、ESB、SAAS、PAAS 、IaaS 、 MicroservicesSOA(SOA(面向服務(wù)的面向服務(wù)的架構(gòu)架構(gòu)) ) 面向服務(wù)的架構(gòu)(SOA)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方
2、式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。對于一個(gè)對于一個(gè)SOASOA解決方案來說就需要能夠滿足這些場景的業(yè)務(wù)需求,能解決方案來說就需要能夠滿足這些場景的業(yè)務(wù)需求,能夠解決其中的各種技術(shù)問題。需要解決的基本問題包括:夠解決其中的各種技術(shù)問題。需要解決的基本問題包括:服務(wù)的描述問題,描述服務(wù)提供哪些功能,適用服務(wù)有哪些要求服務(wù)的注冊和查找問題,定義好的服務(wù)信息在哪發(fā)布,如何發(fā)布,到哪查找,如何查找服務(wù)通訊方式,包括具體如何向服務(wù)發(fā)送請求,并獲取應(yīng)答,支持什么樣的交互方式。服務(wù)流程問題,對服務(wù)流程的靈活定
3、制,執(zhí)行監(jiān)控等提供管理服務(wù)的管理問題,服務(wù)的提供,撤銷,改變這些情況如何進(jìn)行管理服務(wù)質(zhì)量問題,如何保障安全性,通訊的可靠性,以及事務(wù)完整性如何保證整個(gè)系統(tǒng)的效率問題,包括查找效率,通訊效率,服務(wù)運(yùn)行處理效率等系統(tǒng)能夠提供什么樣的開發(fā)工具,支持什么樣的開發(fā)模式,系統(tǒng)運(yùn)行情況是否可以及時(shí)了解,是否可以及時(shí)獲取故障信息,是否可以提供運(yùn)行狀態(tài)信息,以利于系統(tǒng)的優(yōu)化。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)ESB全稱為Enterprise Service Bus,即企業(yè)服務(wù)總線。它是傳統(tǒng)中間件技術(shù)與XML、Web服務(wù)等技術(shù)結(jié)合的產(chǎn)物。ESB提供了網(wǎng)絡(luò)中最基本的連接中樞,是構(gòu)筑企業(yè)神經(jīng)系統(tǒng)
4、的必要元素。大規(guī)模分布式的企業(yè)應(yīng)用需要相對簡單而實(shí)用的中間件技術(shù)來簡化和統(tǒng)一越來越復(fù)雜、繁瑣的企業(yè)級信息系統(tǒng)平臺。面向服務(wù)體系架構(gòu)(SOA)是能夠?qū)?yīng)用程序的不同功能單元通過服務(wù)之間定義良好的接口和契約聯(lián)系起來。SOA使用戶可以不受限制地重復(fù)使用軟件、把各種資源互連起來,只要IT人員選用標(biāo)準(zhǔn)接口包裝舊的應(yīng)用程序、把新的應(yīng)用程序構(gòu)建成服務(wù),那么其他應(yīng)用系統(tǒng)就可以很方便的使用這些功能服務(wù)。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)ESBESB(企業(yè)服務(wù)總線)(企業(yè)服務(wù)總線)SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)因此 SOA 和 ESB 是相對應(yīng)的。具備 SOA 的應(yīng)
5、用程序應(yīng)當(dāng)使用 ESB 來調(diào)用它的服務(wù)。SOA 和 ESB 不必用 Web 服務(wù)實(shí)現(xiàn)。然而,經(jīng)常需要 ESB 來調(diào)用服務(wù),該服務(wù)提供自我描述及發(fā)現(xiàn)的能力,這由 Web 服務(wù)幫助完成。在 SOA 中經(jīng)常需要由一種技術(shù)實(shí)現(xiàn)的調(diào)用者,它們用于調(diào)用由其它技術(shù)實(shí)現(xiàn)的服務(wù),這也由 Web 服務(wù)幫助完成。所以 SOA、ESB 和 Web 服務(wù)都集中于創(chuàng)建這樣的領(lǐng)域:一個(gè)應(yīng)用程序中的功能在其它應(yīng)用程序中也是可用的,本質(zhì)是復(fù)用性。ESB是用于調(diào)節(jié) SOA 中的調(diào)用者及服務(wù)提供者的機(jī)制。它使得調(diào)用者在不知道提供者或提供者使用的地址的情況下調(diào)用該服務(wù)。ESB 可在多個(gè)提供者、提供者的負(fù)載平衡及停止使用提供者(當(dāng)失效
6、時(shí))之間進(jìn)行選擇,并且基于調(diào)用者的需求在提供者之間進(jìn)行選擇,這些提供者提供了各種質(zhì)量級別的服務(wù)。ESB 能夠調(diào)節(jié)同步或異步服務(wù),事實(shí)上對于同一服務(wù)可以提供同步及異步的訪問。SOA是一種方式或架構(gòu),用于具有自服務(wù)功能的應(yīng)用程序,應(yīng)用程序隨后通過用戶接口(UI)或經(jīng)過工作流將其聚合成用戶需要的功能。服務(wù)不僅是可復(fù)用代碼的組件,更是運(yùn)行程序的一部分,客戶端可以不必合并它自己的代碼直接調(diào)用該程序。服務(wù)是與業(yè)務(wù)相關(guān)的一個(gè)定義。SOASOA 與與 ESBESB的區(qū)別的區(qū)別SAAS (SAAS (軟件即服務(wù)軟件即服務(wù)) )SaaS是Software-as-a-Service(軟件即服務(wù))的簡稱,它與“on-
7、demand software”(按需軟件),the application service provider(ASP,應(yīng)用服務(wù)提供商),hosted software(托管軟件)所具有相似的含義。它是一種通過Internet提供軟件的模式,廠商將應(yīng)用軟件統(tǒng)一部署在自己的服務(wù)器上,客戶可以根據(jù)自己實(shí)際需求,通過互聯(lián)網(wǎng)向廠商定購所需的應(yīng)用軟件服務(wù),按定購的服務(wù)多少和時(shí)間長短向廠商支付費(fèi)用,并通過互聯(lián)網(wǎng)獲得廠商提供的服務(wù)。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)對對企業(yè)來說,企業(yè)來說,SaaSSaaS的優(yōu)點(diǎn):的優(yōu)點(diǎn): 從技術(shù)方面來看:SaaS是簡單的部署,不需要購買任何硬件,剛開始
8、只需要簡單注冊即可。企業(yè)無需再配備IT方面的專業(yè)技術(shù)人員,同時(shí)又能得到最新的技術(shù)應(yīng)用,滿足企業(yè)對信息管理的需求。 從投資方面來看:企業(yè)只以相對低廉的“月費(fèi)”方式投資,不用一次性投資到位,不占用過多的營運(yùn)資金,從而緩解企業(yè)資金不足的壓力;不用考慮成本折舊問題,并能及時(shí)獲得最新硬件平臺及最佳解決方案。 從維護(hù)和管理方面來看:由于企業(yè)采取租用的方式來進(jìn)行物流業(yè)務(wù)管理,不需要專門的維護(hù)和管理人員,也不需要為維護(hù)和管理人員支付額外費(fèi)用。很大程度上緩解企業(yè)在人力、財(cái)力上的壓力,使其能夠集中資金對核心業(yè)務(wù)進(jìn)行有效的運(yùn)營;SaaS能使用戶在世界上都是一個(gè)完全獨(dú)立的系統(tǒng)。如果您連接到網(wǎng)絡(luò),就可以訪問系統(tǒng)。對企業(yè)
9、來說,對企業(yè)來說,SaaSSaaS的缺點(diǎn)的缺點(diǎn)1.安全性:企業(yè),尤其是大型企業(yè),很不情愿使用SaaS正是因?yàn)榘踩珕栴},他們要保護(hù)他們的核心數(shù)據(jù),不希望這些核心數(shù)據(jù)由第三方來負(fù)責(zé)。2.標(biāo)準(zhǔn)化:SaaS解決方案缺乏標(biāo)準(zhǔn)化。這個(gè)行業(yè)剛剛起步,沒有明確的解決辦法,一家公司可以設(shè)計(jì)建立一個(gè)解決方案。鑒于復(fù)雜和高度可定制的ERP產(chǎn)品,這是一個(gè)冒險(xiǎn)的建議。PAAS(PAAS(平臺即平臺即服務(wù)服務(wù)) )PaaS是Platform-as-a-Service的縮寫,意思是平臺即服務(wù)。 把服務(wù)器平臺作為一種服務(wù)提供的商業(yè)模式。通過網(wǎng)絡(luò)進(jìn)行程序提供的服務(wù)稱之為SaaS(Software as a Service),而
10、云計(jì)算時(shí)代相應(yīng)的服務(wù)器平臺或者開發(fā)環(huán)境作為服務(wù)進(jìn)行提供就成為了PaaS(Platform as a Service)。所謂PaaS實(shí)際上是指將軟件研發(fā)的平臺(計(jì)世資訊定義為業(yè)務(wù)基礎(chǔ)平臺)作為一種服務(wù),以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應(yīng)用。但是,PaaS的出現(xiàn)可以加快SaaS的發(fā)展,尤其是加快SaaS應(yīng)用的開發(fā)速度。在2007年國內(nèi)外SaaS廠商先后推出自己的PAAS平臺。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)簡單地說,PaaS平臺就是指云環(huán)境中的應(yīng)用基礎(chǔ)設(shè)施服務(wù),也可以說是中間件即服務(wù)。PaaS平臺在云架構(gòu)中位于中間層,其上層是SaaS,其下層
11、是IaaS3 。在傳統(tǒng)On-Premise部署方式下,應(yīng)用基礎(chǔ)設(shè)施即中間件的種類非常多, 有應(yīng)用服務(wù)器,數(shù)據(jù)庫,ESBs, BPM, Portal,消息中間件,遠(yuǎn)程對象調(diào)用中間件等等。對于PaaS平臺,Gartner把它們分為兩類,一類是應(yīng)用部署和運(yùn)行平臺APaaS(application platform as a service),另一類是集成平臺IPaaS(integration as a service)。 人們經(jīng)常說的PaaS平臺基本上是指APaaS,如Force和Google App Engine。國內(nèi)日前上線的中國云應(yīng)用平臺,能夠?yàn)檐浖S商提供領(lǐng)先的IaaS基礎(chǔ)平臺,使得軟件廠商
12、能夠?qū)⒆⒁饬性谄鋺?yīng)用產(chǎn)品的云化之上,而將對基礎(chǔ)資源的需求,包括云服務(wù)器、云存儲、云監(jiān)控等完全依托在理念領(lǐng)先、技術(shù)成熟、安全可靠的IaaS平臺上。PaaSPaaS區(qū)別區(qū)別IaaSIaaS ( (基礎(chǔ)設(shè)施即服務(wù)基礎(chǔ)設(shè)施即服務(wù)) )IaaS(Infrastructure as a Service),即基礎(chǔ)設(shè)施即服務(wù)。消費(fèi)者通過Internet 可以從完善的計(jì)算機(jī)基礎(chǔ)設(shè)施獲得服務(wù)。這類服務(wù)稱為基礎(chǔ)設(shè)施即服務(wù)?;?Internet 的服務(wù)(如存儲和數(shù)據(jù)庫)是 IaaS的一部分。Internet上其他類型的服務(wù)包括平臺即服務(wù)(Platform as a Service,PaaS)和軟件即服務(wù)(Sof
13、tware as a Service,SaaS)。PaaS提供了用戶可以訪問的完整或部分的應(yīng)用程序開發(fā),SaaS則提供了完整的可直接使用的應(yīng)用程序,比如通過 Internet管理企業(yè)資源。 根據(jù)NIST(NationalInstituteofStandardsandTechnology,美國國家標(biāo)準(zhǔn)與技術(shù)研究院)的權(quán)威定義,云計(jì)算的服務(wù)模式有SPI(即SaaS、PaaS和IaaS)這三個(gè)大類或?qū)哟?。這是目前被業(yè)界最廣 泛認(rèn)同的劃分。PaaS和IaaS源于SaaS理念。PaaS和IaaS可以直接通過SOA/Web Services向平臺用戶提供服務(wù), 也可以作為SaaS模式的支撐平臺間接向最終用
14、戶服務(wù) IaaS中間件(包括HPC/Gri中間件,PVM/MPI,機(jī)群/集群,Beowulf,DRS作業(yè)調(diào)度,并行文件系統(tǒng)等)云系統(tǒng)(效用計(jì)算機(jī)SaaS BI/BPM,BSS/OSS,WS/SOA/API)PaaS中間件(包括應(yīng)用服務(wù)器MQ/ESB/SOA,多層次多租戶SaaS模式支撐,Hypervisor,OSGI等)SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)IaaSIaaS 、 PaaSPaaS、 SaaS SaaS1. SaaS:提供給客戶的服務(wù)是運(yùn)營商運(yùn)行在云計(jì)算基礎(chǔ)設(shè)施上的應(yīng)用程序,用戶可以在各種設(shè)備上通過客戶端界面訪問,如瀏覽器。消費(fèi)者不需要管理或控制任何云計(jì)算基礎(chǔ)設(shè)
15、施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲等等;2. PaaS:提供給消費(fèi)者的服務(wù)是把客戶采用提供的開發(fā)語言和工具(例如Java,python, .Net等)開發(fā)的或收購的應(yīng)用程序部署到供應(yīng)商的云計(jì)算基礎(chǔ)設(shè)施上去??蛻舨恍枰芾砘蚩刂频讓拥脑苹A(chǔ)設(shè)施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲等,但客戶能控制部署的應(yīng)用程序,也可能控制運(yùn)行應(yīng)用程序的托管環(huán)境配置;3. IaaS:提供給消費(fèi)者的服務(wù)是對所有計(jì)算基礎(chǔ)設(shè)施的利用,包括處理CPU、內(nèi)存、存儲、網(wǎng)絡(luò)和其它基本的計(jì)算資源,用戶能夠部署和運(yùn)行任意軟件,包括操作系統(tǒng)和應(yīng)用程序。消費(fèi)者不管理或控制任何云計(jì)算基礎(chǔ)設(shè)施,但能控制操作系統(tǒng)的選擇、存儲空間、部署的應(yīng)用,
16、也有可能獲得有限制的網(wǎng)絡(luò)組件(例如路由器、,防火墻,、負(fù)載均衡器等)的控制。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)SOASOA和和SaaSSaaS的區(qū)別的區(qū)別1. SOA包括了關(guān)于軟件是如何被架構(gòu)起來的東西,而SaaS是關(guān)于軟件是如何被應(yīng)用的。2. 在SaaS當(dāng)中,應(yīng)用程序可以像任何服務(wù)一樣被傳遞,就像你家中電話的語音一樣,看起來似乎就是為你的需求量體裁衣得到的。而SOA的定義和這個(gè)無絲毫的聯(lián)系。SOA支持的服務(wù),都是些離散的可以再使用的事務(wù)處理,這些事務(wù)處理合起來就組成了一個(gè)業(yè)務(wù)流程,是從基本的系統(tǒng)中提取出來的抽象代碼。3. SOA是一個(gè)框架的方法,而SaaS是一種傳遞模型
17、。4. 通過SaaS傳遞Web服務(wù)并不需要SOA。5. SaaS主要是指一個(gè)軟件企業(yè)向其它企業(yè)提供軟件服務(wù)。而SOA一般是企業(yè)內(nèi)部搭建系統(tǒng)的基礎(chǔ)。SaaS注重的是提供服務(wù)的思維。而SOA注重的是實(shí)現(xiàn)服務(wù)的思維。什么是微服務(wù)架構(gòu)什么是微服務(wù)架構(gòu)微服務(wù)架構(gòu)模式(Microservice Architect Pattern)。近兩年在服務(wù)的瘋狂增長與云計(jì)算技術(shù)的進(jìn)步,讓微服務(wù)架構(gòu)受到重點(diǎn)關(guān)注微服務(wù)架構(gòu)是一種架構(gòu)模式,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值。每個(gè)服務(wù)運(yùn)行在其獨(dú)立的進(jìn)程中,服務(wù)與服務(wù)間采用輕量級的通信機(jī)制互相溝通(通常是基于HTTP的RES
18、Tful API)。每個(gè)服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨(dú)立地部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機(jī)制,對具體的一個(gè)服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語言、工具對其進(jìn)行構(gòu)建。微服務(wù)架構(gòu)優(yōu)勢微服務(wù)架構(gòu)優(yōu)勢首先簡單介紹了微服務(wù)(Microservices)的內(nèi)涵及優(yōu)勢,他表示,微服務(wù)架構(gòu)的本質(zhì),是用一些功能比較明確、業(yè)務(wù)比較精練的服務(wù)去解決更大、更實(shí)際的問題。微服務(wù)架構(gòu)將服務(wù)拆分,分別采用相對獨(dú)立的服務(wù)對各方面進(jìn)行管理,彼此之間使用統(tǒng)一的接口來進(jìn)行交流,架構(gòu)變得復(fù)雜,優(yōu)勢也很明顯:復(fù)雜度可控:在將應(yīng)用分解的同時(shí),規(guī)避了原本復(fù)雜度無止境的積累。每一個(gè)微服
19、務(wù)專注于單一功能,并通過定義良好的接口清晰表述服務(wù)邊界。由于體積小、復(fù)雜度低,每個(gè)微服務(wù)可由一個(gè)小規(guī)模開發(fā)團(tuán)隊(duì)完全掌控,易于保持高可維護(hù)性和開發(fā)效率。微服務(wù)架構(gòu)優(yōu)勢微服務(wù)架構(gòu)優(yōu)勢獨(dú)立部署:由于微服務(wù)具備獨(dú)立的運(yùn)行進(jìn)程,所以每個(gè)微服務(wù)也可以獨(dú)立部署。當(dāng)某個(gè)微服務(wù)發(fā)生變更時(shí)無需編譯、部署整個(gè)應(yīng)用。由微服務(wù)組成的應(yīng)用相當(dāng)于具備一系列可并行的發(fā)布流程,使得發(fā)布更加高效,同時(shí)降低對生產(chǎn)環(huán)境所造成的風(fēng)險(xiǎn),最終縮短應(yīng)用交付周期。技術(shù)選型靈活:微服務(wù)架構(gòu)下,技術(shù)選型是去中心化的。每個(gè)團(tuán)隊(duì)可以根據(jù)自身服務(wù)的需求和行業(yè)發(fā)展的現(xiàn)狀,自由選擇最適合的技術(shù)棧。由于每個(gè)微服務(wù)相對簡單,當(dāng)需要對技術(shù)棧進(jìn)行升級時(shí)所面臨的風(fēng)險(xiǎn)
20、較低,甚至完全重構(gòu)一個(gè)微服務(wù)也是可行的。容錯(cuò):當(dāng)某一組建發(fā)生故障時(shí),在單一進(jìn)程的傳統(tǒng)架構(gòu)下,故障很有可能在進(jìn)程內(nèi)擴(kuò)散,形成應(yīng)用全局性的不可用。在微服務(wù)架構(gòu)下,故障會被隔離在單個(gè)服務(wù)中。若設(shè)計(jì)良好,其他服務(wù)可通過重試、平穩(wěn)退化等機(jī)制實(shí)現(xiàn)應(yīng)用層面的容錯(cuò)。擴(kuò)展:單塊架構(gòu)應(yīng)用也可以實(shí)現(xiàn)橫向擴(kuò)展,就是將整個(gè)應(yīng)用完整的復(fù)制到不同的節(jié)點(diǎn)。當(dāng)應(yīng)用的不同組件在擴(kuò)展需求上存在差異時(shí),微服務(wù)架構(gòu)便體現(xiàn)出其靈活性,因?yàn)槊總€(gè)服務(wù)可以根據(jù)實(shí)際需求獨(dú)立進(jìn)行擴(kuò)展。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)SOASOA和微服務(wù)架構(gòu)的區(qū)別和微服務(wù)架構(gòu)的區(qū)別即微服務(wù)不再強(qiáng)調(diào)傳統(tǒng)SOA架構(gòu)里面比較重的ESB企業(yè)服務(wù)總線
21、,同時(shí)SOA的思想進(jìn)入到單個(gè)業(yè)務(wù)系統(tǒng)內(nèi)部實(shí)現(xiàn)真正的組件化。微服務(wù)架構(gòu)強(qiáng)調(diào)的第一個(gè)重點(diǎn)就是業(yè)務(wù)系統(tǒng)需要徹底的組件化和服務(wù)化,原有的單個(gè)業(yè)務(wù)系統(tǒng)會拆分為多個(gè)可以獨(dú)立開發(fā),設(shè)計(jì),運(yùn)行和運(yùn)維的小應(yīng)用。這些小應(yīng)用之間通過服務(wù)完成交互和集成。首先對于應(yīng)用本身暴露出來的服務(wù),是和應(yīng)用一起部署的,即服務(wù)本身并不單獨(dú)部署,服務(wù)本身就是業(yè)務(wù)組件已有的接口能力發(fā)布和暴露出來的其次微服務(wù)架構(gòu)本身來源于互聯(lián)網(wǎng)的思路,因此組件對外發(fā)布的服務(wù)強(qiáng)調(diào)了采用HTTP Rest API的方式來進(jìn)行。微服務(wù)的基本思想在于考慮圍繞著業(yè)務(wù)領(lǐng)域組件來創(chuàng)建應(yīng)用,這些就應(yīng)用可獨(dú)立地進(jìn)行開發(fā)、管理和加速。在分散的組件中使用微服務(wù)云架構(gòu)和平臺使部
22、署、管理和服務(wù)功能交付變得更加簡單。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)互聯(lián)網(wǎng)高并發(fā)PART 02Internet high concurrency互聯(lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)之前將高并發(fā)的解決方法誤認(rèn)為是線程或者是隊(duì)列可以解決,因?yàn)楦卟l(fā)的時(shí)候是有很多用戶在訪問,導(dǎo)致出現(xiàn)系統(tǒng)數(shù)據(jù)不正確、丟失數(shù)據(jù)現(xiàn)象,所以想到 的是用隊(duì)列解決,其實(shí)隊(duì)列解決的方式也可以處理,比如我們在競拍商品、轉(zhuǎn)發(fā)評論微博或者是秒殺商品等,同一時(shí)間訪問量特別大,隊(duì)列在此起到特別的作用,將 所有請求放入隊(duì)列,以毫秒計(jì)時(shí)單位,有序的進(jìn)行,從而不會出現(xiàn)數(shù)據(jù)丟失系統(tǒng)數(shù)據(jù)不正確的情況。經(jīng)過經(jīng)過查資料,高并發(fā)的解決方法有倆
23、種,一種是使用緩存、另一種是使用生成靜態(tài)頁面;還有就是從最基礎(chǔ)的地查資料,高并發(fā)的解決方法有倆種,一種是使用緩存、另一種是使用生成靜態(tài)頁面;還有就是從最基礎(chǔ)的地方優(yōu)化我們寫代碼減少不必要的資源方優(yōu)化我們寫代碼減少不必要的資源浪費(fèi):浪費(fèi):1.不要頻繁的new對象,對于在整個(gè)應(yīng)用中只需要存在一個(gè)實(shí)例的類使用單例模式.對于String的連接操作,使用StringBuffer或者StringBuilder.對于utility類型的類通過靜態(tài)方法來訪問。2. 避免使用錯(cuò)誤的方式,如Exception可以控制方法推出,但是Exception要保留stacktrace消耗性能,除非必要不要使用 instan
24、ceof做條件判斷,盡量使用比的條件判斷方式.使用JAVA中效率高的類,比如ArrayList比Vector性能好。)互聯(lián)網(wǎng)高并發(fā)相關(guān)名詞互聯(lián)網(wǎng)高并發(fā)相關(guān)名詞頁面瀏覽數(shù)(page views )唯一身份瀏覽量(Unique PageViews)獨(dú)立訪問者數(shù)量(unique visitors)重復(fù)訪問者數(shù)量(repeat visitors)每個(gè)訪問者的頁面瀏覽數(shù)(Page Views per user)一:應(yīng)用緩一:應(yīng)用緩存存二:二:HTTPHTTP緩緩存存三:多級緩三:多級緩存存四:池化四:池化五:異步并五:異步并發(fā)發(fā)六:擴(kuò)容六:擴(kuò)容七:隊(duì)列七:隊(duì)列互聯(lián)網(wǎng)互聯(lián)網(wǎng)高并發(fā)系統(tǒng)高并發(fā)系統(tǒng)- -需要解
25、決的需要解決的問題問題互聯(lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -應(yīng)用緩存應(yīng)用緩存堆外緩存堆外緩存即緩存數(shù)據(jù)存儲在堆外內(nèi)存,可以減少GC暫停時(shí)間(堆對象轉(zhuǎn)移到堆外,GC掃描和移動(dòng)的對象變少),但是,讀取數(shù)據(jù)時(shí)需要序列化/反序列化,因此會比堆緩存要慢很多。有Ehcache 3.x、MapDB實(shí)現(xiàn)磁盤緩存磁盤緩存即緩存數(shù)據(jù)存儲在磁道上,在JVM重啟時(shí)數(shù)據(jù)還存在的,而堆緩存/堆外緩存數(shù)據(jù)會丟失,需要重新加載。有Ehcache 3.x、MapDB實(shí)現(xiàn)互聯(lián)網(wǎng)高并發(fā)堆緩存堆緩存使用Java堆內(nèi)存來存儲緩存對象。使用堆緩存的好處是沒有序列化/反序列化,是最快的緩存。缺點(diǎn)也很明顯,當(dāng)緩存的數(shù)據(jù)量很大時(shí),GC(垃圾回收)暫停
26、時(shí)間會變長,存儲容量受限于堆空間大小。一般通過軟引用/弱引用來存儲緩存對象,即當(dāng)堆內(nèi)存不足時(shí),可以強(qiáng)制回收這部分內(nèi)存釋放堆內(nèi)存空間。一般使用堆緩存存儲較熱的數(shù)據(jù)。有Guava Cache、Ehcache 3.x、MapDB實(shí)現(xiàn)分布式分布式緩存緩存1、單機(jī)容量問題;2、數(shù)據(jù)一致性問題(多臺JVM實(shí)例的緩存數(shù)據(jù)不一致怎么辦?),這個(gè)問題不用糾結(jié),既然數(shù)據(jù)允許緩存,則表示允許一定時(shí)間內(nèi)的不一致,因此可以設(shè)置緩存數(shù)據(jù)的過期時(shí)間來定期更新數(shù)據(jù);3、緩存不命中時(shí),需要回源到DB/服務(wù)請求多變問題:每個(gè)實(shí)例在緩存不命中的情況下都會回源到DB加載數(shù)據(jù),因此多實(shí)例后DB整體的訪問量變多了解決辦法是可以使用如一致
27、性哈希分片算法。因此,這些情況可以考慮使用分布式緩存來解決??梢允褂胑hcache clustered(配合 Terracotta server) 實(shí)現(xiàn)JAVA進(jìn)程間分布式緩存。最好的辦法是使用redis實(shí)現(xiàn)分布式緩存?;ヂ?lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -應(yīng)用緩存應(yīng)用緩存高并發(fā)高并發(fā)- HTTP- HTTP緩存緩存瀏覽器緩存是指當(dāng)我們使用瀏覽器訪問一些網(wǎng)站頁面或者h(yuǎn)ttp服務(wù)時(shí),根據(jù)服務(wù)端返回的緩存設(shè)置響應(yīng)頭將響應(yīng)內(nèi)容緩存到瀏覽器,下次可以直接使用緩存內(nèi)容或者僅需要去服務(wù)端驗(yàn)證內(nèi)容是否過期即可。這樣的好處可以減少瀏覽器和服務(wù)端之間來回傳輸?shù)臄?shù)據(jù)量,節(jié)省帶寬提升性能。解決辦法:內(nèi)容不需要?jiǎng)討B(tài)(計(jì)算、渲
28、染等)速度更快,內(nèi)容越接近于用戶速度越快。像apache traffic server、squid、varnish、nginx等技術(shù)都可以來進(jìn)行內(nèi)容緩存。還有CDN就是用來加速用戶訪問的:即用戶首先訪問到全國各地的CDN節(jié)點(diǎn)(使用如ATS、Squid實(shí)現(xiàn)),如果CDN沒命中,會回源到中央nginx集群,該集群如果沒有命中緩存(該集群的緩存不是必須的,要根據(jù)實(shí)際命中情況等決定),最后回源到后端應(yīng)用集群?;ヂ?lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -池化池化在應(yīng)用系統(tǒng)開發(fā)過程中,我們經(jīng)常會用到池化技術(shù),如對象池、連接池、線程池等,通過池化來減少一些消耗,以提升性能。對象池通過復(fù)用對象從而減少創(chuàng)建對象、垃圾回收 的
29、開銷。但是,池化不能太大,太大會影響GC時(shí)的掃描時(shí)間。連接池如數(shù)據(jù)庫連接池、Redis連接池、Http連接池,通過復(fù)用TCP連接減少創(chuàng)建和釋放連接的時(shí)間來提升性能。線程池也是類似的,通過復(fù)用線程提升性能。也就是說池化的目的就是通過復(fù)用技術(shù)提升性能?;ヂ?lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -擴(kuò)容擴(kuò)容1、讀寫分離:當(dāng)數(shù)據(jù)庫訪問量還不是很大的時(shí)候,我們可以適當(dāng)增加服務(wù)器,數(shù)據(jù)庫主從復(fù)制的方式將讀寫分離2、垂直分區(qū):當(dāng)寫入操作一旦增加的時(shí)候,那么主從數(shù)據(jù)庫將花更多的時(shí)間的放在數(shù)據(jù)同步上,這個(gè)時(shí)候服務(wù)器也是不堪重負(fù)的;那么就有了數(shù)據(jù)的垂直分區(qū),數(shù)據(jù)的垂直分區(qū)思路是將寫入操作比較頻繁的數(shù)據(jù)表。3、水平分區(qū):但是往往事
30、情不盡人意,可能采取垂直分區(qū)能撐一段時(shí)間,由于網(wǎng)站太火了,訪問量又每日100w,一下子蹦到了1000w,這個(gè)時(shí)候可以采取數(shù)據(jù)的進(jìn)行分離,我們可以根據(jù)user的Id不同進(jìn)行分配,如采取%2的形式,或者%10的形式,當(dāng)然這種形式對以后的擴(kuò)展有了很大的限制,當(dāng)我由10個(gè)分區(qū)增加到20個(gè)的時(shí)候,所有的數(shù)據(jù)都得重新分區(qū);所對應(yīng)的分區(qū)放在數(shù)據(jù)庫中保存,當(dāng)用戶操作時(shí)先去查詢所在分區(qū),再進(jìn)行操作;4、分布式數(shù)據(jù)庫(終極方案):TDSQL架構(gòu)采用自動(dòng)擴(kuò)容機(jī)制、分表邏輯、擴(kuò)容流程、容災(zāi)機(jī)制、強(qiáng)同步方案解決分布式數(shù)據(jù)庫擴(kuò)容方案互聯(lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -擴(kuò)容分布式數(shù)據(jù)庫擴(kuò)容分布式數(shù)據(jù)庫SchedulerScheduler作為集群的管理調(diào)度中心,主要功能作為集群的管理調(diào)度中心,主要功能包括包括:1、管理set,提供創(chuàng)建、刪除set、set內(nèi)節(jié)點(diǎn)替換等工作;2、所有的DDL操作統(tǒng)一下發(fā)和調(diào)度;3、監(jiān)控set內(nèi)各個(gè)節(jié)點(diǎn)的存活狀態(tài),當(dāng)set內(nèi)主節(jié)點(diǎn)故障,發(fā)起高一致性主備切換流程;4、監(jiān)控各個(gè)set的CPU、磁盤容量、各個(gè)表的資源消耗情況,必要的時(shí)候自動(dòng)發(fā)起擴(kuò)容流程;5、Scheduler自身的容災(zāi)通過ZooKeqzer的選舉機(jī)制完成,保證中心控制節(jié)點(diǎn)無單點(diǎn)?;ヂ?lián)網(wǎng)高并發(fā)系統(tǒng)由三個(gè)模塊組成:Sche
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)課題申報(bào)書范文
- 課題申報(bào)書高校
- 申報(bào)課題的項(xiàng)目書
- 人文社科研究課題申報(bào)書
- 畜牧養(yǎng)殖課題申報(bào)書
- 課題申報(bào)書項(xiàng)目內(nèi)容
- 課題申報(bào)書人員分工
- 婦科課題立項(xiàng)申報(bào)書
- 橫向科研課題申報(bào)書
- 單縣新房購房合同范例
- GB/T 6545-1998瓦楞紙板耐破強(qiáng)度的測定法
- GB/T 30799-2014食品用洗滌劑試驗(yàn)方法重金屬的測定
- GB/T 21739-2008家用電梯制造與安裝規(guī)范
- 小學(xué)英語一般現(xiàn)在時(shí)-(演示)課件
- 壓力管道使用單位壓力管道安全員守則
- 油桐種植項(xiàng)目可行性研究報(bào)告
- 第12課《詩經(jīng)兩首》課件(共24張PPT) 部編版語文八年級下冊
- 1人類服裝的起源和人類服裝的課件
- 規(guī)范性文件備案實(shí)務(wù)(政)課件
- 焊接作業(yè)現(xiàn)場環(huán)境溫度濕度記錄
- 長期護(hù)理保險(xiǎn)待遇資格申請表
評論
0/150
提交評論