真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringCloud的示例分析

這篇文章給大家分享的是有關(guān)Spring Cloud的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站主營吳江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,吳江h(huán)5小程序制作搭建,吳江網(wǎng)站營銷推廣歡迎吳江等地區(qū)企業(yè)咨詢

1 Spring Cloud概述

1.1 傳統(tǒng)的應(yīng)用

1.1.1 單體應(yīng)用

        在此之前,筆者所在公司開發(fā)Java程序,大都使用Struts、Spring、Hibernate(MyBatis)等技術(shù)框架,每一個(gè)項(xiàng)目都會(huì)發(fā)布一個(gè)單體應(yīng)用。例如開發(fā)一個(gè)進(jìn)銷存系統(tǒng),將會(huì)開發(fā)一個(gè)war包部署到Tomcat中,每一次需要開發(fā)新的模塊或添加新功能時(shí),都會(huì)在原來的基礎(chǔ)上不斷的添加。若干年后,這個(gè)war包不斷的膨脹,程序員在進(jìn)行調(diào)試時(shí),服務(wù)器也可能需要啟動(dòng)半天,維護(hù)這個(gè)系統(tǒng)的效率極為低下。這樣一個(gè)war包,涵蓋了庫存、銷售、會(huì)員、報(bào)表等模塊,如圖1-1。

Spring Cloud的示例分析

圖1-1 單體應(yīng)用

        這樣的單體應(yīng)用隱患非常多,任何的一個(gè)bug,都有可能導(dǎo)致整個(gè)系統(tǒng)宕機(jī)。筆者印象最深刻的是,曾經(jīng)有一客戶在高峰期,導(dǎo)出一張銷售明細(xì)報(bào)表(數(shù)據(jù)量較大),最終造成整個(gè)系統(tǒng)癱瘓,前臺(tái)的銷售人員無法售賣。維護(hù)這樣一個(gè)系統(tǒng),不僅效率極低,而且充滿風(fēng)險(xiǎn),項(xiàng)目組的各個(gè)成員惶惶不可終日,我們需要本質(zhì)上的改變。

1.1.2 架構(gòu)演進(jìn)

        針對以上的單體應(yīng)用的問題,我們參考SOA架構(gòu),將各個(gè)模塊劃分獨(dú)立的服務(wù)模塊(war),并且使用了數(shù)據(jù)庫的讀寫分離,架構(gòu)如圖1-2。

Spring Cloud的示例分析

圖1-2 架構(gòu)演進(jìn)

        各個(gè)模塊之間會(huì)存在相互調(diào)用的依賴關(guān)系,例如銷售模塊會(huì)調(diào)用會(huì)員模塊的接口,為了減少各個(gè)模塊之間的耦合,我們加入了企業(yè)服務(wù)總線(ESB),各模塊與ESB之間的架構(gòu)如圖1-3所示。

Spring Cloud的示例分析

圖1-3 ESB

        加入ESB后,各個(gè)模塊將服務(wù)發(fā)布到ESB中,它們與ESB之間使用SOAP協(xié)議進(jìn)行通信。圖1-2與圖1-3的架構(gòu)實(shí)現(xiàn)后,整個(gè)系統(tǒng)的性能有了明顯的提升,各個(gè)模塊的耦合度也降低了。運(yùn)行了一段日子后,又出現(xiàn)了新的問題,由于銷售終端數(shù)量的增多,銷售模塊明顯超過其承受能力,為了保證銷售前端的正常運(yùn)行,我們使用了Nginx做負(fù)載均衡,請見圖1-4。

Spring Cloud的示例分析

圖1-4 使用Nginx

        隨著銷售模塊的增多,帶來了許多問題,例如管理這些模塊,對于運(yùn)維工程師來說,是一項(xiàng)艱巨的任務(wù),一旦銷售模塊有所修改,他們將通宵達(dá)旦進(jìn)行升級。另外,企業(yè)服務(wù)總線也有可能成為性能的瓶頸,雖然目前仍未出現(xiàn)該問題,但我們需要未雨綢繆。

1.1.3 架構(gòu)要求

        從前面的架構(gòu)演進(jìn)可知,應(yīng)用中的每一個(gè)點(diǎn),都有可能成為系統(tǒng)的問題點(diǎn)。隨著互聯(lián)網(wǎng)應(yīng)用的普及,在大數(shù)據(jù)、高并發(fā)的環(huán)境下,我們的系統(tǒng)架構(gòu)需要面對更為嚴(yán)苛的挑戰(zhàn),我們需要一套新的架構(gòu),它起碼能滿足以下要求:

        ?      高性能:這是應(yīng)用程序的基本要求。

        ?      獨(dú)立性:其中一個(gè)模塊出現(xiàn)bug或者其他問題,不可以影響其他模塊或者整個(gè)應(yīng)用。

        ?      容易擴(kuò)展:應(yīng)用中的每一個(gè)節(jié)點(diǎn),都可以根據(jù)實(shí)際需要進(jìn)行擴(kuò)展。

        ?      便于管理:對于各個(gè)模塊的資源,可以輕松進(jìn)行管理、升級,減少維護(hù)成本。

        ?      狀態(tài)監(jiān)控與警報(bào):對整個(gè)應(yīng)用程序進(jìn)行監(jiān)控,當(dāng)某一個(gè)節(jié)點(diǎn)出現(xiàn)問題時(shí),能及時(shí)發(fā)出警報(bào)。

        為了能解決遇到的問題、達(dá)到以上的架構(gòu)要求,我們開始研究Spring Cloud。

1.2 微服務(wù)與Spring Cloud

1.2.1 什么是微服務(wù)

        微服務(wù)一詞來源Martin Fowler的“Microservices”一文,微服務(wù)是一種架構(gòu)風(fēng)格,將單體應(yīng)用劃分為小型的服務(wù)單元,微服務(wù)之間使用HTTP的API進(jìn)行資源訪問與操作。

        在對單體應(yīng)用的劃分上,微服務(wù)與前面的SOA架構(gòu)有點(diǎn)類似,但是SOA架構(gòu)側(cè)重于將每個(gè)單體應(yīng)用的服務(wù)集成到ESB上,而微服務(wù)做得更加徹底,強(qiáng)調(diào)將整個(gè)模塊變成服務(wù)組件,微服務(wù)對模塊的劃分粒度可能會(huì)更細(xì)。以我們前面的銷售、會(huì)員模塊為例,在SOA架構(gòu)中,只需要將相應(yīng)的服務(wù)發(fā)布到ESB容器就可以了,而在微服務(wù)架構(gòu)中,這兩個(gè)模塊本身,將會(huì)變?yōu)橐粋€(gè)或多個(gè)的服務(wù)組件。SOA架構(gòu)與微服務(wù)架構(gòu),請見圖1-5與圖1-6。

Spring Cloud的示例分析

圖1-5 SOA架構(gòu)

Spring Cloud的示例分析

圖1-6 微服務(wù)架構(gòu)

        在微服務(wù)的架構(gòu)上,Martin Fowler的文章肯定了Netflix的貢獻(xiàn),接下來,我們了解一下Netflix OSS。

1.2.2 關(guān)于Netflix OSS

        Netflix是一個(gè)互聯(lián)網(wǎng)影片提供商,在幾年前,Netflix公司成立了自己的開源中心,名稱為Netflix Open Source Software Center,簡稱Netflix OSS。這個(gè)開源組織專注于大數(shù)據(jù)、云計(jì)算方面的技術(shù),提供了多個(gè)開源框架,這些框架包括大數(shù)據(jù)工具、構(gòu)建工具、基于云平臺(tái)的服務(wù)工具等。Netflix所提供的這些框架,很好的遵循微服務(wù)所推崇的理念,實(shí)現(xiàn)了去中心化的服務(wù)管理、服務(wù)容錯(cuò)等機(jī)制。

1.2.3 Spring Cloud與Netflix

        Spring Cloud并不是一個(gè)具體的框架,大家可以把它理解為一個(gè)工具箱,它提供的各類工具,可以幫助我們快速的構(gòu)建分布式系統(tǒng)。

        Spring Cloud的各個(gè)項(xiàng)目基于Spring Boot,將Netflix的多個(gè)框架進(jìn)行封裝,并且通過自動(dòng)配置的方式將這些框架綁定到Spring的環(huán)境中,從而簡化了這些框架的使用。由于Spring Boot的簡便,使得我們在使用Spring Cloud時(shí),很容易的將Netflix各個(gè)框架整合進(jìn)我們的項(xiàng)目中。Spring Cloud下的“Spring Cloud Netflix”模塊,主要封裝了Netflix的以下項(xiàng)目:

        ?      Eureka:基于REST服務(wù)的分布式中間件,主要用于服務(wù)管理。

        ?      Hystrix:容錯(cuò)框架,通過添加延遲閥值以及容錯(cuò)的邏輯,來幫助我們控制分布式系統(tǒng)間組件的交互。

        ?      Feign:一個(gè)REST客戶端,目的是為了簡化Web Service客戶端的開發(fā)

        ?      Ribbon:負(fù)載均衡框架,在微服務(wù)集群中為各個(gè)客戶端的通信提供支持,它主要實(shí)現(xiàn)中間層應(yīng)用程序的負(fù)載均衡

        ?      Zuul:為微服務(wù)集群提供過代理、過濾、路由等功能。

1.2.4 Spring Cloud的主要模塊

        除了Spring Cloud Netflix模塊外,Spring Cloud還包括以下幾個(gè)重要的模塊:

        ?      Spring Cloud Config:為分布式系統(tǒng)提供了配置服務(wù)器和配置客戶端,通過對它們的配置,可以很好的管理集群中的配置文件。

        ?      Spring Cloud Sleuth:服務(wù)跟蹤框架,可以與Zipkin、Apache HTrace和ELK等數(shù)據(jù)分析、服務(wù)跟蹤系統(tǒng)進(jìn)行整合,為服務(wù)跟蹤、解決問題提供了便利。

        ?      Spring Cloud Stream:用于構(gòu)建消息驅(qū)動(dòng)微服務(wù)的框架,該框架在Spring Boot的基礎(chǔ)上,整合了“Spring Integration”來連接消息代理中間件。

        ?      Spring Cloud Bus:連接RabbitMQ、Kafka等消息代理的集群消息總線。

感謝各位的閱讀!關(guān)于“Spring Cloud的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


名稱欄目:SpringCloud的示例分析
當(dāng)前URL:http://weahome.cn/article/gogojg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部