版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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ù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方
2、式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以以一種統(tǒng)一和通用的方式進(jìn)行交互。對(duì)于一個(gè)對(duì)于一個(gè)SOASOA解決方案來(lái)說(shuō)就需要能夠滿足這些場(chǎng)景的業(yè)務(wù)需求,能解決方案來(lái)說(shuō)就需要能夠滿足這些場(chǎng)景的業(yè)務(wù)需求,能夠解決其中的各種技術(shù)問(wèn)題。需要解決的基本問(wèn)題包括:夠解決其中的各種技術(shù)問(wèn)題。需要解決的基本問(wèn)題包括:服務(wù)的描述問(wèn)題,描述服務(wù)提供哪些功能,適用服務(wù)有哪些要求服務(wù)的注冊(cè)和查找問(wèn)題,定義好的服務(wù)信息在哪發(fā)布,如何發(fā)布,到哪查找,如何查找服務(wù)通訊方式,包括具體如何向服務(wù)發(fā)送請(qǐng)求,并獲取應(yīng)答,支持什么樣的交互方式。服務(wù)流程問(wèn)題,對(duì)服務(wù)流程的靈活定
3、制,執(zhí)行監(jiān)控等提供管理服務(wù)的管理問(wèn)題,服務(wù)的提供,撤銷,改變這些情況如何進(jìn)行管理服務(wù)質(zhì)量問(wèn)題,如何保障安全性,通訊的可靠性,以及事務(wù)完整性如何保證整個(gè)系統(tǒng)的效率問(wèn)題,包括查找效率,通訊效率,服務(wù)運(yùn)行處理效率等系統(tǒng)能夠提供什么樣的開(kāi)發(fā)工具,支持什么樣的開(kāi)發(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)用需要相對(duì)簡(jiǎn)單而實(shí)用的中間件技術(shù)來(lái)簡(jiǎn)化和統(tǒng)一越來(lái)越復(fù)雜、繁瑣的企業(yè)級(jí)信息系統(tǒng)平臺(tái)。面向服務(wù)體系架構(gòu)(SOA)是能夠?qū)?yīng)用程序的不同功能單元通過(guò)服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。SOA使用戶可以不受限制地重復(fù)使用軟件、把各種資源互連起來(lái),只要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 是相對(duì)應(yīng)的。具備 SOA 的應(yīng)
5、用程序應(yīng)當(dāng)使用 ESB 來(lái)調(diào)用它的服務(wù)。SOA 和 ESB 不必用 Web 服務(wù)實(shí)現(xiàn)。然而,經(jīng)常需要 ESB 來(lái)調(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ì)量級(jí)別的服務(wù)。ESB 能夠調(diào)節(jié)同步或異步服務(wù),事實(shí)上對(duì)于同一服務(wù)可以提供同步及異步的訪問(wèn)。SOA是一種方式或架構(gòu),用于具有自服務(wù)功能的應(yīng)用程序,應(yīng)用程序隨后通過(guò)用戶接口(UI)或經(jīng)過(guò)工作流將其聚合成用戶需要的功能。服務(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ù))的簡(jiǎn)稱,它與“on-
7、demand software”(按需軟件),the application service provider(ASP,應(yīng)用服務(wù)提供商),hosted software(托管軟件)所具有相似的含義。它是一種通過(guò)Internet提供軟件的模式,廠商將應(yīng)用軟件統(tǒng)一部署在自己的服務(wù)器上,客戶可以根據(jù)自己實(shí)際需求,通過(guò)互聯(lián)網(wǎng)向廠商定購(gòu)所需的應(yīng)用軟件服務(wù),按定購(gòu)的服務(wù)多少和時(shí)間長(zhǎng)短向廠商支付費(fèi)用,并通過(guò)互聯(lián)網(wǎng)獲得廠商提供的服務(wù)。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)對(duì)對(duì)企業(yè)來(lái)說(shuō),企業(yè)來(lái)說(shuō),SaaSSaaS的優(yōu)點(diǎn):的優(yōu)點(diǎn): 從技術(shù)方面來(lái)看:SaaS是簡(jiǎn)單的部署,不需要購(gòu)買任何硬件,剛開(kāi)始
8、只需要簡(jiǎn)單注冊(cè)即可。企業(yè)無(wú)需再配備IT方面的專業(yè)技術(shù)人員,同時(shí)又能得到最新的技術(shù)應(yīng)用,滿足企業(yè)對(duì)信息管理的需求。 從投資方面來(lái)看:企業(yè)只以相對(duì)低廉的“月費(fèi)”方式投資,不用一次性投資到位,不占用過(guò)多的營(yíng)運(yùn)資金,從而緩解企業(yè)資金不足的壓力;不用考慮成本折舊問(wèn)題,并能及時(shí)獲得最新硬件平臺(tái)及最佳解決方案。 從維護(hù)和管理方面來(lái)看:由于企業(yè)采取租用的方式來(lái)進(jìn)行物流業(yè)務(wù)管理,不需要專門的維護(hù)和管理人員,也不需要為維護(hù)和管理人員支付額外費(fèi)用。很大程度上緩解企業(yè)在人力、財(cái)力上的壓力,使其能夠集中資金對(duì)核心業(yè)務(wù)進(jìn)行有效的運(yùn)營(yíng);SaaS能使用戶在世界上都是一個(gè)完全獨(dú)立的系統(tǒng)。如果您連接到網(wǎng)絡(luò),就可以訪問(wèn)系統(tǒng)。對(duì)企業(yè)
9、來(lái)說(shuō),對(duì)企業(yè)來(lái)說(shuō),SaaSSaaS的缺點(diǎn)的缺點(diǎn)1.安全性:企業(yè),尤其是大型企業(yè),很不情愿使用SaaS正是因?yàn)榘踩珕?wèn)題,他們要保護(hù)他們的核心數(shù)據(jù),不希望這些核心數(shù)據(jù)由第三方來(lái)負(fù)責(zé)。2.標(biāo)準(zhǔn)化:SaaS解決方案缺乏標(biāo)準(zhǔn)化。這個(gè)行業(yè)剛剛起步,沒(méi)有明確的解決辦法,一家公司可以設(shè)計(jì)建立一個(gè)解決方案。鑒于復(fù)雜和高度可定制的ERP產(chǎn)品,這是一個(gè)冒險(xiǎn)的建議。PAAS(PAAS(平臺(tái)即平臺(tái)即服務(wù)服務(wù)) )PaaS是Platform-as-a-Service的縮寫(xiě),意思是平臺(tái)即服務(wù)。 把服務(wù)器平臺(tái)作為一種服務(wù)提供的商業(yè)模式。通過(guò)網(wǎng)絡(luò)進(jìn)行程序提供的服務(wù)稱之為SaaS(Software as a Service),而
10、云計(jì)算時(shí)代相應(yīng)的服務(wù)器平臺(tái)或者開(kāi)發(fā)環(huán)境作為服務(wù)進(jìn)行提供就成為了PaaS(Platform as a Service)。所謂PaaS實(shí)際上是指將軟件研發(fā)的平臺(tái)(計(jì)世資訊定義為業(yè)務(wù)基礎(chǔ)平臺(tái))作為一種服務(wù),以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應(yīng)用。但是,PaaS的出現(xiàn)可以加快SaaS的發(fā)展,尤其是加快SaaS應(yīng)用的開(kāi)發(fā)速度。在2007年國(guó)內(nèi)外SaaS廠商先后推出自己的PAAS平臺(tái)。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)簡(jiǎn)單地說(shuō),PaaS平臺(tái)就是指云環(huán)境中的應(yīng)用基礎(chǔ)設(shè)施服務(wù),也可以說(shuō)是中間件即服務(wù)。PaaS平臺(tái)在云架構(gòu)中位于中間層,其上層是SaaS,其下層
11、是IaaS3 。在傳統(tǒng)On-Premise部署方式下,應(yīng)用基礎(chǔ)設(shè)施即中間件的種類非常多, 有應(yīng)用服務(wù)器,數(shù)據(jù)庫(kù),ESBs, BPM, Portal,消息中間件,遠(yuǎn)程對(duì)象調(diào)用中間件等等。對(duì)于PaaS平臺(tái),Gartner把它們分為兩類,一類是應(yīng)用部署和運(yùn)行平臺(tái)APaaS(application platform as a service),另一類是集成平臺(tái)IPaaS(integration as a service)。 人們經(jīng)常說(shuō)的PaaS平臺(tái)基本上是指APaaS,如Force和Google App Engine。國(guó)內(nèi)日前上線的中國(guó)云應(yīng)用平臺(tái),能夠?yàn)檐浖S商提供領(lǐng)先的IaaS基礎(chǔ)平臺(tái),使得軟件廠商
12、能夠?qū)⒆⒁饬性谄鋺?yīng)用產(chǎn)品的云化之上,而將對(duì)基礎(chǔ)資源的需求,包括云服務(wù)器、云存儲(chǔ)、云監(jiān)控等完全依托在理念領(lǐng)先、技術(shù)成熟、安全可靠的IaaS平臺(tái)上。PaaSPaaS區(qū)別區(qū)別IaaSIaaS ( (基礎(chǔ)設(shè)施即服務(wù)基礎(chǔ)設(shè)施即服務(wù)) )IaaS(Infrastructure as a Service),即基礎(chǔ)設(shè)施即服務(wù)。消費(fèi)者通過(guò)Internet 可以從完善的計(jì)算機(jī)基礎(chǔ)設(shè)施獲得服務(wù)。這類服務(wù)稱為基礎(chǔ)設(shè)施即服務(wù)?;?Internet 的服務(wù)(如存儲(chǔ)和數(shù)據(jù)庫(kù))是 IaaS的一部分。Internet上其他類型的服務(wù)包括平臺(tái)即服務(wù)(Platform as a Service,PaaS)和軟件即服務(wù)(Sof
13、tware as a Service,SaaS)。PaaS提供了用戶可以訪問(wèn)的完整或部分的應(yīng)用程序開(kāi)發(fā),SaaS則提供了完整的可直接使用的應(yīng)用程序,比如通過(guò) Internet管理企業(yè)資源。 根據(jù)NIST(NationalInstituteofStandardsandTechnology,美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院)的權(quán)威定義,云計(jì)算的服務(wù)模式有SPI(即SaaS、PaaS和IaaS)這三個(gè)大類或?qū)哟?。這是目前被業(yè)界最廣 泛認(rèn)同的劃分。PaaS和IaaS源于SaaS理念。PaaS和IaaS可以直接通過(guò)SOA/Web Services向平臺(tái)用戶提供服務(wù), 也可以作為SaaS模式的支撐平臺(tái)間接向最終用
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íng)商運(yùn)行在云計(jì)算基礎(chǔ)設(shè)施上的應(yīng)用程序,用戶可以在各種設(shè)備上通過(guò)客戶端界面訪問(wèn),如瀏覽器。消費(fèi)者不需要管理或控制任何云計(jì)算基礎(chǔ)設(shè)
15、施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲(chǔ)等等;2. PaaS:提供給消費(fèi)者的服務(wù)是把客戶采用提供的開(kāi)發(fā)語(yǔ)言和工具(例如Java,python, .Net等)開(kāi)發(fā)的或收購(gòu)的應(yīng)用程序部署到供應(yīng)商的云計(jì)算基礎(chǔ)設(shè)施上去。客戶不需要管理或控制底層的云基礎(chǔ)設(shè)施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲(chǔ)等,但客戶能控制部署的應(yīng)用程序,也可能控制運(yùn)行應(yīng)用程序的托管環(huán)境配置;3. IaaS:提供給消費(fèi)者的服務(wù)是對(duì)所有計(jì)算基礎(chǔ)設(shè)施的利用,包括處理CPU、內(nèi)存、存儲(chǔ)、網(wǎng)絡(luò)和其它基本的計(jì)算資源,用戶能夠部署和運(yùn)行任意軟件,包括操作系統(tǒng)和應(yīng)用程序。消費(fèi)者不管理或控制任何云計(jì)算基礎(chǔ)設(shè)施,但能控制操作系統(tǒng)的選擇、存儲(chǔ)空間、部署的應(yīng)用,
16、也有可能獲得有限制的網(wǎng)絡(luò)組件(例如路由器、,防火墻,、負(fù)載均衡器等)的控制。SOA、ESB、SAAS、PAAS 、IaaS 、微服務(wù)SOASOA和和SaaSSaaS的區(qū)別的區(qū)別1. SOA包括了關(guān)于軟件是如何被架構(gòu)起來(lái)的東西,而SaaS是關(guān)于軟件是如何被應(yīng)用的。2. 在SaaS當(dāng)中,應(yīng)用程序可以像任何服務(wù)一樣被傳遞,就像你家中電話的語(yǔ)音一樣,看起來(lái)似乎就是為你的需求量體裁衣得到的。而SOA的定義和這個(gè)無(wú)絲毫的聯(lián)系。SOA支持的服務(wù),都是些離散的可以再使用的事務(wù)處理,這些事務(wù)處理合起來(lái)就組成了一個(gè)業(yè)務(wù)流程,是從基本的系統(tǒng)中提取出來(lái)的抽象代碼。3. SOA是一個(gè)框架的方法,而SaaS是一種傳遞模型
17、。4. 通過(guò)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ù)的瘋狂增長(zhǎng)與云計(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í)的通信機(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ī)制,對(duì)具體的一個(gè)服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語(yǔ)言、工具對(duì)其進(jìn)行構(gòu)建。微服務(wù)架構(gòu)優(yōu)勢(shì)微服務(wù)架構(gòu)優(yōu)勢(shì)首先簡(jiǎn)單介紹了微服務(wù)(Microservices)的內(nèi)涵及優(yōu)勢(shì),他表示,微服務(wù)架構(gòu)的本質(zhì),是用一些功能比較明確、業(yè)務(wù)比較精練的服務(wù)去解決更大、更實(shí)際的問(wèn)題。微服務(wù)架構(gòu)將服務(wù)拆分,分別采用相對(duì)獨(dú)立的服務(wù)對(duì)各方面進(jìn)行管理,彼此之間使用統(tǒng)一的接口來(lái)進(jìn)行交流,架構(gòu)變得復(fù)雜,優(yōu)勢(shì)也很明顯:復(fù)雜度可控:在將應(yīng)用分解的同時(shí),規(guī)避了原本復(fù)雜度無(wú)止境的積累。每一個(gè)微服
19、務(wù)專注于單一功能,并通過(guò)定義良好的接口清晰表述服務(wù)邊界。由于體積小、復(fù)雜度低,每個(gè)微服務(wù)可由一個(gè)小規(guī)模開(kāi)發(fā)團(tuán)隊(duì)完全掌控,易于保持高可維護(hù)性和開(kāi)發(fā)效率。微服務(wù)架構(gòu)優(yōu)勢(shì)微服務(wù)架構(gòu)優(yōu)勢(shì)獨(dú)立部署:由于微服務(wù)具備獨(dú)立的運(yùn)行進(jìn)程,所以每個(gè)微服務(wù)也可以獨(dú)立部署。當(dāng)某個(gè)微服務(wù)發(fā)生變更時(shí)無(wú)需編譯、部署整個(gè)應(yīng)用。由微服務(wù)組成的應(yīng)用相當(dāng)于具備一系列可并行的發(fā)布流程,使得發(fā)布更加高效,同時(shí)降低對(duì)生產(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ù)相對(duì)簡(jiǎn)單,當(dāng)需要對(duì)技術(shù)棧進(jìn)行升級(jí)時(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)下,故障會(huì)被隔離在單個(gè)服務(wù)中。若設(shè)計(jì)良好,其他服務(wù)可通過(guò)重試、平穩(wěn)退化等機(jī)制實(shí)現(xiàn)應(yīng)用層面的容錯(cuò)。擴(kuò)展:?jiǎn)螇K架構(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ù)不再?gòu)?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)會(huì)拆分為多個(gè)可以獨(dú)立開(kāi)發(fā),設(shè)計(jì),運(yùn)行和運(yùn)維的小應(yīng)用。這些小應(yīng)用之間通過(guò)服務(wù)完成交互和集成。首先對(duì)于應(yīng)用本身暴露出來(lái)的服務(wù),是和應(yīng)用一起部署的,即服務(wù)本身并不單獨(dú)部署,服務(wù)本身就是業(yè)務(wù)組件已有的接口能力發(fā)布和暴露出來(lái)的其次微服務(wù)架構(gòu)本身來(lái)源于互聯(lián)網(wǎng)的思路,因此組件對(duì)外發(fā)布的服務(wù)強(qiáng)調(diào)了采用HTTP Rest API的方式來(lái)進(jìn)行。微服務(wù)的基本思想在于考慮圍繞著業(yè)務(wù)領(lǐng)域組件來(lái)創(chuàng)建應(yīng)用,這些就應(yīng)用可獨(dú)立地進(jìn)行開(kāi)發(fā)、管理和加速。在分散的組件中使用微服務(wù)云架構(gòu)和平臺(tái)使部
22、署、管理和服務(wù)功能交付變得更加簡(jiǎn)單。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í)候是有很多用戶在訪問(wèn),導(dǎo)致出現(xiàn)系統(tǒng)數(shù)據(jù)不正確、丟失數(shù)據(jù)現(xiàn)象,所以想到 的是用隊(duì)列解決,其實(shí)隊(duì)列解決的方式也可以處理,比如我們?cè)诟?jìng)拍商品、轉(zhuǎn)發(fā)評(píng)論微博或者是秒殺商品等,同一時(shí)間訪問(wèn)量特別大,隊(duì)列在此起到特別的作用,將 所有請(qǐng)求放入隊(duì)列,以毫秒計(jì)時(shí)單位,有序的進(jìn)行,從而不會(huì)出現(xiàn)數(shù)據(jù)丟失系統(tǒng)數(shù)據(jù)不正確的情況。經(jīng)過(guò)經(jīng)過(guò)查資料,高并發(fā)的解決方法有倆
23、種,一種是使用緩存、另一種是使用生成靜態(tài)頁(yè)面;還有就是從最基礎(chǔ)的地查資料,高并發(fā)的解決方法有倆種,一種是使用緩存、另一種是使用生成靜態(tài)頁(yè)面;還有就是從最基礎(chǔ)的地方優(yōu)化我們寫(xiě)代碼減少不必要的資源方優(yōu)化我們寫(xiě)代碼減少不必要的資源浪費(fèi):浪費(fèi):1.不要頻繁的new對(duì)象,對(duì)于在整個(gè)應(yīng)用中只需要存在一個(gè)實(shí)例的類使用單例模式.對(duì)于String的連接操作,使用StringBuffer或者StringBuilder.對(duì)于utility類型的類通過(guò)靜態(tài)方法來(lái)訪問(wèn)。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)名詞頁(yè)面瀏覽數(shù)(page views )唯一身份瀏覽量(Unique PageViews)獨(dú)立訪問(wèn)者數(shù)量(unique visitors)重復(fù)訪問(wèn)者數(shù)量(repeat visitors)每個(gè)訪問(wèn)者的頁(yè)面瀏覽數(shù)(Page Views per user)一:應(yīng)用緩一:應(yīng)用緩存存二:二:HTTPHTTP緩緩存存三:多級(jí)緩三:多級(jí)緩存存四:池化四:池化五:異步并五:異步并發(fā)發(fā)六:擴(kuò)容六:擴(kuò)容七:隊(duì)列七:隊(duì)列互聯(lián)網(wǎng)互聯(lián)網(wǎng)高并發(fā)系統(tǒng)高并發(fā)系統(tǒng)- -需要解
25、決的需要解決的問(wèn)題問(wèn)題互聯(lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -應(yīng)用緩存應(yīng)用緩存堆外緩存堆外緩存即緩存數(shù)據(jù)存儲(chǔ)在堆外內(nèi)存,可以減少GC暫停時(shí)間(堆對(duì)象轉(zhuǎn)移到堆外,GC掃描和移動(dòng)的對(duì)象變少),但是,讀取數(shù)據(jù)時(shí)需要序列化/反序列化,因此會(huì)比堆緩存要慢很多。有Ehcache 3.x、MapDB實(shí)現(xiàn)磁盤(pán)緩存磁盤(pán)緩存即緩存數(shù)據(jù)存儲(chǔ)在磁道上,在JVM重啟時(shí)數(shù)據(jù)還存在的,而堆緩存/堆外緩存數(shù)據(jù)會(huì)丟失,需要重新加載。有Ehcache 3.x、MapDB實(shí)現(xiàn)互聯(lián)網(wǎng)高并發(fā)堆緩存堆緩存使用Java堆內(nèi)存來(lái)存儲(chǔ)緩存對(duì)象。使用堆緩存的好處是沒(méi)有序列化/反序列化,是最快的緩存。缺點(diǎn)也很明顯,當(dāng)緩存的數(shù)據(jù)量很大時(shí),GC(垃圾回收)暫停
26、時(shí)間會(huì)變長(zhǎng),存儲(chǔ)容量受限于堆空間大小。一般通過(guò)軟引用/弱引用來(lái)存儲(chǔ)緩存對(duì)象,即當(dāng)堆內(nèi)存不足時(shí),可以強(qiáng)制回收這部分內(nèi)存釋放堆內(nèi)存空間。一般使用堆緩存存儲(chǔ)較熱的數(shù)據(jù)。有Guava Cache、Ehcache 3.x、MapDB實(shí)現(xiàn)分布式分布式緩存緩存1、單機(jī)容量問(wèn)題;2、數(shù)據(jù)一致性問(wèn)題(多臺(tái)JVM實(shí)例的緩存數(shù)據(jù)不一致怎么辦?),這個(gè)問(wèn)題不用糾結(jié),既然數(shù)據(jù)允許緩存,則表示允許一定時(shí)間內(nèi)的不一致,因此可以設(shè)置緩存數(shù)據(jù)的過(guò)期時(shí)間來(lái)定期更新數(shù)據(jù);3、緩存不命中時(shí),需要回源到DB/服務(wù)請(qǐng)求多變問(wèn)題:每個(gè)實(shí)例在緩存不命中的情況下都會(huì)回源到DB加載數(shù)據(jù),因此多實(shí)例后DB整體的訪問(wèn)量變多了解決辦法是可以使用如一致
27、性哈希分片算法。因此,這些情況可以考慮使用分布式緩存來(lái)解決。可以使用ehcache 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èn)一些網(wǎng)站頁(yè)面或者h(yuǎn)ttp服務(wù)時(shí),根據(jù)服務(wù)端返回的緩存設(shè)置響應(yīng)頭將響應(yīng)內(nèi)容緩存到瀏覽器,下次可以直接使用緩存內(nèi)容或者僅需要去服務(wù)端驗(yàn)證內(nèi)容是否過(guò)期即可。這樣的好處可以減少瀏覽器和服務(wù)端之間來(lái)回傳輸?shù)臄?shù)據(jù)量,節(jié)省帶寬提升性能。解決辦法:內(nèi)容不需要?jiǎng)討B(tài)(計(jì)算、渲
28、染等)速度更快,內(nèi)容越接近于用戶速度越快。像apache traffic server、squid、varnish、nginx等技術(shù)都可以來(lái)進(jìn)行內(nèi)容緩存。還有CDN就是用來(lái)加速用戶訪問(wèn)的:即用戶首先訪問(wèn)到全國(guó)各地的CDN節(jié)點(diǎn)(使用如ATS、Squid實(shí)現(xiàn)),如果CDN沒(méi)命中,會(huì)回源到中央nginx集群,該集群如果沒(méi)有命中緩存(該集群的緩存不是必須的,要根據(jù)實(shí)際命中情況等決定),最后回源到后端應(yīng)用集群?;ヂ?lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -池化池化在應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)用到池化技術(shù),如對(duì)象池、連接池、線程池等,通過(guò)池化來(lái)減少一些消耗,以提升性能。對(duì)象池通過(guò)復(fù)用對(duì)象從而減少創(chuàng)建對(duì)象、垃圾回收 的
29、開(kāi)銷。但是,池化不能太大,太大會(huì)影響GC時(shí)的掃描時(shí)間。連接池如數(shù)據(jù)庫(kù)連接池、Redis連接池、Http連接池,通過(guò)復(fù)用TCP連接減少創(chuàng)建和釋放連接的時(shí)間來(lái)提升性能。線程池也是類似的,通過(guò)復(fù)用線程提升性能。也就是說(shuō)池化的目的就是通過(guò)復(fù)用技術(shù)提升性能?;ヂ?lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -擴(kuò)容擴(kuò)容1、讀寫(xiě)分離:當(dāng)數(shù)據(jù)庫(kù)訪問(wèn)量還不是很大的時(shí)候,我們可以適當(dāng)增加服務(wù)器,數(shù)據(jù)庫(kù)主從復(fù)制的方式將讀寫(xiě)分離2、垂直分區(qū):當(dāng)寫(xiě)入操作一旦增加的時(shí)候,那么主從數(shù)據(jù)庫(kù)將花更多的時(shí)間的放在數(shù)據(jù)同步上,這個(gè)時(shí)候服務(wù)器也是不堪重負(fù)的;那么就有了數(shù)據(jù)的垂直分區(qū),數(shù)據(jù)的垂直分區(qū)思路是將寫(xiě)入操作比較頻繁的數(shù)據(jù)表。3、水平分區(qū):但是往往事
30、情不盡人意,可能采取垂直分區(qū)能撐一段時(shí)間,由于網(wǎng)站太火了,訪問(wèn)量又每日100w,一下子蹦到了1000w,這個(gè)時(shí)候可以采取數(shù)據(jù)的進(jìn)行分離,我們可以根據(jù)user的Id不同進(jìn)行分配,如采取%2的形式,或者%10的形式,當(dāng)然這種形式對(duì)以后的擴(kuò)展有了很大的限制,當(dāng)我由10個(gè)分區(qū)增加到20個(gè)的時(shí)候,所有的數(shù)據(jù)都得重新分區(qū);所對(duì)應(yīng)的分區(qū)放在數(shù)據(jù)庫(kù)中保存,當(dāng)用戶操作時(shí)先去查詢所在分區(qū),再進(jìn)行操作;4、分布式數(shù)據(jù)庫(kù)(終極方案):TDSQL架構(gòu)采用自動(dòng)擴(kuò)容機(jī)制、分表邏輯、擴(kuò)容流程、容災(zāi)機(jī)制、強(qiáng)同步方案解決分布式數(shù)據(jù)庫(kù)擴(kuò)容方案互聯(lián)網(wǎng)高并發(fā)高并發(fā)高并發(fā)- -擴(kuò)容分布式數(shù)據(jù)庫(kù)擴(kuò)容分布式數(shù)據(jù)庫(kù)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、磁盤(pán)容量、各個(gè)表的資源消耗情況,必要的時(shí)候自動(dòng)發(fā)起擴(kuò)容流程;5、Scheduler自身的容災(zāi)通過(guò)ZooKeqzer的選舉機(jī)制完成,保證中心控制節(jié)點(diǎn)無(wú)單點(diǎn)?;ヂ?lián)網(wǎng)高并發(fā)系統(tǒng)由三個(gè)模塊組成:Sche
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淄博市巡游出租汽車駕駛員區(qū)域科目考試題庫(kù)及答案(供參考)
- 2025年河北女子職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 普通合伙合同協(xié)議書(shū)
- 隔音降噪合同范本
- 幼兒園中班建康活動(dòng)策劃方案五篇
- 信號(hào)工勞務(wù)合同
- 標(biāo)準(zhǔn)鋼材購(gòu)銷合同樣本
- 智能設(shè)備研發(fā)與生產(chǎn)合作合同
- 代理的合同范本
- 2024年數(shù)字化教育平臺(tái)推廣合同
- 測(cè)井監(jiān)督管理手冊(cè)
- 冷庫(kù)庫(kù)房招商方案
- 芯片可靠性分析
- 2023年貴州省畢節(jié)市中考物理試題(原卷+解析版)真題含答案
- 口腔種植技術(shù)臨床應(yīng)用能力評(píng)估報(bào)告范本
- 從中國(guó)制造到中國(guó)創(chuàng)造(優(yōu)秀課件)
- 新華字典第12版電子版
- 【考試版】蘇教版2022-2023學(xué)年四年級(jí)數(shù)學(xué)下冊(cè)開(kāi)學(xué)摸底考試卷(五)含答案與解析
- 血液透析個(gè)案護(hù)理兩篇
- 第八章 客戶關(guān)系管理
- 新版人教版高中英語(yǔ)選修一、選修二詞匯表
評(píng)論
0/150
提交評(píng)論