亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Spring Cloud微服務(wù)框架淺析

        2021-11-13 08:36:22馬榮彥
        現(xiàn)代電影技術(shù) 2021年10期
        關(guān)鍵詞:調(diào)用部署組件

        馬榮彥

        (中央宣傳部電影數(shù)字節(jié)目管理中心,北京 100866)

        1引言

        隨著我國(guó)國(guó)民經(jīng)濟(jì)整體建設(shè)水平進(jìn)入一個(gè)新的時(shí)代,廣大農(nóng)村群眾對(duì)于精神文化的消費(fèi)需求也相應(yīng)提高。農(nóng)村電影放映工程是國(guó)家加強(qiáng)農(nóng)村文化建設(shè)戰(zhàn)略部署的貫徹落實(shí)成果,是公共文化服務(wù)體系的重要組成部分,要進(jìn)一步聚焦農(nóng)村電影放映,提高服務(wù)農(nóng)村和農(nóng)民群眾的水平。因此農(nóng)村公益電影公共服務(wù)平臺(tái)的完善建設(shè)也顯得越來(lái)越重要,而且隨著互聯(lián)網(wǎng)科學(xué)技術(shù)的快速發(fā)展,以及長(zhǎng)時(shí)間以來(lái)用戶需求的不斷變化,誕生了許多比較前沿的互聯(lián)網(wǎng)應(yīng)用技術(shù)。在以前,我們只需要一個(gè)服務(wù)器,將程序全部打包并在這個(gè)服務(wù)器上部署好就可以,隨著應(yīng)用業(yè)務(wù)的擴(kuò)展,在開(kāi)發(fā)時(shí)如果使用常規(guī)單一的架構(gòu),需要的資源會(huì)越來(lái)越多,就會(huì)導(dǎo)致系統(tǒng)運(yùn)行速度降低,而且維護(hù)也越來(lái)越困難,這就需要對(duì)現(xiàn)有的架構(gòu)進(jìn)行升級(jí)改造,亟需一個(gè)框架系統(tǒng)確保應(yīng)用有條不紊運(yùn)行,因此就發(fā)展出了微服務(wù)架構(gòu)。本文對(duì)農(nóng)村公益服務(wù)平臺(tái)建設(shè)可以使用的比較流行的微服務(wù)框架技術(shù)進(jìn)行了詳細(xì)介紹,并對(duì)可行性進(jìn)行了研究分析。

        2 微服務(wù)簡(jiǎn)介

        傳統(tǒng)的web開(kāi)發(fā)方式大都是一個(gè)WAR 包整合所有的功能,包含DO/DAO 層、Service層、UI等所有的業(yè)務(wù)邏輯和實(shí)現(xiàn),然后部署在一個(gè)容器 (常用的容器有Tomcat、Jboss、Web Logic 等)里運(yùn)行。它的主要優(yōu)點(diǎn)是開(kāi)發(fā)簡(jiǎn)單,集中式管理;功能都在本地,沒(méi)有分布式的管理和調(diào)用消耗等,但是也存在比如效率低、維護(hù)難、穩(wěn)定性差、擴(kuò)展性不夠等問(wèn)題。隨著用戶要求的提高,對(duì)于大型的系統(tǒng)來(lái)說(shuō)傳統(tǒng)架構(gòu)已經(jīng)很難滿足市場(chǎng)需求,于是衍生出了分布式架構(gòu),又從分布式衍生出了SOA 架構(gòu),在這個(gè)過(guò)程中,功能的顆粒度被拆解得越來(lái)越小,這就發(fā)展成為了微服務(wù)架構(gòu)。

        微服務(wù)在維基百科上的定義為:由以單一應(yīng)用程序構(gòu)成的小服務(wù),自己擁有自己的行程與輕量化處理,服務(wù)根據(jù)業(yè)務(wù)功能設(shè)計(jì),以全自動(dòng)的方式部署,與其他服務(wù)可以進(jìn)行通信。我個(gè)人認(rèn)為微服務(wù)架構(gòu)就是一組單一功能服務(wù)的有機(jī)組合,每個(gè)服務(wù)只解決一個(gè)問(wèn)題并且可以獨(dú)立的開(kāi)發(fā)、測(cè)試、部署、上線運(yùn)行,有著非常完整的生命周期,服務(wù)之間也可以根據(jù)某種協(xié)議進(jìn)行交互,這樣使系統(tǒng)變得更加靈活。微服務(wù)架構(gòu)的最小顆粒度是服務(wù),根據(jù)服務(wù)來(lái)開(kāi)發(fā)、管理和迭代應(yīng)用,在每個(gè)服務(wù)中都可以使用云架構(gòu)和平臺(tái)式部署、管理等工具,并且可以用不同的編程語(yǔ)言與數(shù)據(jù)庫(kù)等組件實(shí)現(xiàn),這使對(duì)產(chǎn)品的管理變得快速且簡(jiǎn)單。

        3 微服務(wù)架構(gòu)技術(shù)比較

        一個(gè)大型的復(fù)雜的系統(tǒng)由多個(gè)微服務(wù)組成,系統(tǒng)的各個(gè)微服務(wù)之間都是松散耦合的,并且能很好地解決單一功能問(wèn)題。當(dāng)前市場(chǎng)上微服務(wù)開(kāi)源的框架主要有Dubbo、Spring Cloud等,本文主要介紹這兩種框架技術(shù)。

        3.1 Spring Cloud

        圖1 Spring Cloud技術(shù)體系主要組成部分

        Spring Cloud是Spring體系的微服務(wù)解決方案,它在Spring Boot基礎(chǔ)上集成了包括服務(wù)注冊(cè)與發(fā)現(xiàn)、配置中心、網(wǎng)關(guān)、服務(wù)保護(hù)與熔斷、分布式配置管理、負(fù)載均衡等簡(jiǎn)單易部署易維護(hù)的系統(tǒng)底層開(kāi)發(fā)框架,不需要用戶再集成其他的組件即可完成微服務(wù)架構(gòu)的開(kāi)發(fā)以及部署,同時(shí)它也支持與其它第三方組件集成開(kāi)發(fā)。

        Spring Cloud常用的5個(gè)核心組件:

        (1)Netflix Eureka —— 注冊(cè)中心;

        (2)Netflix Ribbon—— 客戶端負(fù)載均衡;

        (3)Netflix Hystrix —— 服務(wù)熔斷器;

        (4)Netflix Zuul —— 服務(wù)網(wǎng)關(guān);

        (5)Spring Cloud Config—— 配置中心。

        Spring Boot框架是Spring Cloud的基礎(chǔ),因此它是可以被獨(dú)立使用來(lái)開(kāi)發(fā)應(yīng)用系統(tǒng),但是Spring Cloud卻是依賴Spring Boot而不能獨(dú)立使用的,Spring Cloud對(duì)使用Spring Boot開(kāi)發(fā)的單體微服務(wù)進(jìn)行組合管理,是有著完整的一個(gè)生命周期的微服務(wù)框架。

        3.2 Dubbo

        Dubbo是阿里公司維護(hù)的致力于提供高性能和透明化的RPC 遠(yuǎn)程服務(wù)調(diào)用框架,它在RPC 通信與微服務(wù)治理方面表現(xiàn)優(yōu)秀,因此使用Dubbo開(kāi)發(fā)的微服務(wù)具備相互之間的遠(yuǎn)程發(fā)現(xiàn)與通信能力,同時(shí)Dubbo提供了豐富的服務(wù)治理能力,可以實(shí)現(xiàn)諸如服務(wù)發(fā)現(xiàn)、負(fù)載均衡、流量調(diào)度等服務(wù)治理訴求。Dubbo作為一款開(kāi)源的高性能、輕量級(jí)框架,在實(shí)現(xiàn)風(fēng)格上與Java傳統(tǒng)的RMI、EJB技術(shù)非常相似,具備三個(gè)特點(diǎn):面向接口的遠(yuǎn)程方法調(diào)用、智能容錯(cuò)和負(fù)載均衡以及服務(wù)自動(dòng)注冊(cè)和發(fā)現(xiàn)。

        (1)在接口調(diào)用方面: 對(duì)于用戶來(lái)說(shuō)是非API侵入的,所有功能都可以通過(guò)配置文件解決,調(diào)用遠(yuǎn)程方法和本地方法是統(tǒng)一的,沒(méi)有任何區(qū)別。

        (2)在智能容錯(cuò)方面:可以通過(guò)配置使用軟件負(fù)載均衡,來(lái)降低系統(tǒng)開(kāi)發(fā)部署成本,避免單點(diǎn)故障。

        (3)在服務(wù)管理方面:框架提供了基于接口名來(lái)查詢服務(wù)提供者地址的服務(wù),可以對(duì)服務(wù)提供者地址進(jìn)行透明管理。

        3.3 對(duì)比

        Spring Cloud和Dubbo都是當(dāng)下流行的RPC框架,各自都集成了一些服務(wù)和治理組件,但還是有一些差異比較大的地方:

        (1)技術(shù)維度方面

        Spring Cloud是Spring體系下的微服務(wù)解決方案,而Dubbo是阿里提供的分布式服務(wù)框架,從自身集成組件上來(lái)說(shuō)Dubbo只提供了服務(wù)治理,需要集成其他的第三方框架來(lái)完成相應(yīng)的功能開(kāi)發(fā),而Spring C loud目前已經(jīng)包含了21個(gè)子項(xiàng)目滿足目前的開(kāi)發(fā)需求并且在不斷升級(jí)中。

        (2)遠(yuǎn)程調(diào)用方式方面

        Dubbo的遠(yuǎn)程調(diào)用方式采用的RPC 方式,Spring C loud的遠(yuǎn)程調(diào)用方式是Http Rest方式或者采用HTTP 2.0+長(zhǎng)鏈接方式 (可以靈活配置)。嚴(yán)格來(lái)說(shuō)HTTP 跟RPC 并不是一個(gè)層的概念,HTTP也可以作為RPC 的傳輸層協(xié)議。兩種方式的區(qū)別如下:

        RPC方式中需要為每一個(gè)微服務(wù)進(jìn)行接口定義,它對(duì)接口、語(yǔ)言等有很強(qiáng)的依賴性,需要嚴(yán)格控制才能保證不會(huì)出現(xiàn)調(diào)用沖突;而Http Rest是輕量級(jí)的接口方式,服務(wù)的提供和調(diào)用只需要通過(guò)一個(gè)約定進(jìn)行規(guī)范,服務(wù)之間沒(méi)有耦合,不過(guò)也可能會(huì)出現(xiàn)由于文檔和接口不一致而導(dǎo)致的集成問(wèn)題,但可以通過(guò)swagger等工具整合使代碼和文檔一體化解決,所以Http Rest在分布式環(huán)境下比RPC 更加靈活。而且在微服務(wù)提出者馬丁·福勒的論文中提出的服務(wù)間通信機(jī)制就是Http Rest。

        由于Dubbo默認(rèn)保持著單一長(zhǎng)連接和NIO異步通訊來(lái)進(jìn)行數(shù)據(jù)處理,使用TCP協(xié)議,并且使用Hessian2框架序列化報(bào)文,因此在小數(shù)據(jù)且并發(fā)比較高的情況中或者服務(wù)消費(fèi)者數(shù)量遠(yuǎn)大于提供者數(shù)量的情況下Dubbo要比Spring Cloud 性能要高一些,但不適用于大數(shù)據(jù)傳輸?shù)那闆r。

        (3)服務(wù)注冊(cè)中心方面

        Dubbo集成了第三方的Zoo Keeper組件來(lái)作為框架的注冊(cè)中心,來(lái)實(shí)現(xiàn)對(duì)服務(wù)的管理,Spring Cloud使用本身帶有的Spring Cloud Netflix Eureka組件作為實(shí)現(xiàn)注冊(cè)中心進(jìn)行服務(wù)管理,也支持與Zookeeper集成開(kāi)發(fā)。

        (4)技術(shù)發(fā)展角度

        Spring Cloud依托在Spring家族的基礎(chǔ)上,一直在不斷的優(yōu)化升級(jí)中,而Dubbo的理念在最初解決了許多服務(wù)治理的問(wèn)題,但是它的發(fā)展相對(duì)停滯了一段時(shí)間,后來(lái)在2017 年重新啟動(dòng)進(jìn)行開(kāi)發(fā)維護(hù),同時(shí)也涌現(xiàn)出了許多先進(jìn)的技術(shù)和理念。因此Spring C loud的發(fā)展相比Dubbo來(lái)說(shuō)相對(duì)完善和穩(wěn)定,并且最新版本Dubbo3中的maven也有了新的變化,org.apache.dubbo:dubbo:3.0.0已經(jīng)不是包含所有資源的all-in-one包,用戶如果使用了一些不在核心包中的組件如registry-etcd、rpc-hessian等,需要在pom.xml配置文件中進(jìn)行集成。

        4 關(guān)鍵技術(shù)

        4.1 負(fù)載均衡

        負(fù)載均衡的目的是為了特定場(chǎng)景下,能夠?qū)⒄?qǐng)求合理地平分到各服務(wù)實(shí)例上,以便發(fā)揮所有機(jī)器的疊加作用。主要考慮的就是不將請(qǐng)求分配到出現(xiàn)故障的機(jī)器,性能越好的機(jī)器可以分配更多的請(qǐng)求。一般負(fù)載均衡可以借助外部工具,硬件負(fù)載均衡或軟件負(fù)載均衡,如F5/nginx。當(dāng)然了,在當(dāng)前分布式環(huán)境遍地開(kāi)花的情況下,客戶端的負(fù)載均衡看起來(lái)就更輕量級(jí),顯得不可或缺。Dubbo 和Spring Cloud 均提供了幾種負(fù)載均衡策略:Random LoadBalance(隨機(jī)負(fù)載均衡算法)和RoundRobin LoadBalance(輪詢負(fù)載均衡算法)等策略,可以根據(jù)需求進(jìn)行選擇配置。

        4.2 通信機(jī)制

        系統(tǒng)使用微服務(wù)架構(gòu)后,就被拆分成了更細(xì)維度的子服務(wù),小到一個(gè)功能子模塊都可以作為一個(gè)微服務(wù),各個(gè)微服務(wù)之間大都是互不影響的、松耦合的,可以被獨(dú)立開(kāi)發(fā)以及部署。因此各個(gè)服務(wù)之間的通訊變得非常重要,RESTful HTTP協(xié)議是微服務(wù)架構(gòu)中最常用的通訊機(jī)制。

        4.3 自動(dòng)化部署

        在微服務(wù)架構(gòu)中,隨著服務(wù)越來(lái)越多之后,服務(wù)的打包部署就會(huì)成為一件相當(dāng)麻煩的事情。比如一個(gè)項(xiàng)目中有10個(gè)微服務(wù)需要部署,每次更新之后重新部署都需要手動(dòng)操作10個(gè)微服務(wù),這樣帶來(lái)的問(wèn)題不可預(yù)估,有沒(méi)有什么辦法讓我們部署一次之后 ,只要點(diǎn)擊執(zhí)行就可以自動(dòng)部署呢? 我們可以借助Docker或者其它工具來(lái)完成一個(gè)微服務(wù)架構(gòu)中的所有服務(wù)的自動(dòng)化部署工作。

        5 實(shí)驗(yàn)

        針對(duì)農(nóng)村公益平臺(tái)中的影片訂購(gòu)管理功能應(yīng)用Spring Cloud 微服務(wù)架構(gòu)進(jìn)行實(shí)驗(yàn),后端使用Spring C loud框架進(jìn)行實(shí)現(xiàn),為前端業(yè)務(wù)提供支持,采用RESTful API方式并且前后端業(yè)務(wù)的數(shù)據(jù)交互使用JSON 格式。根據(jù)微服務(wù)架構(gòu)的特點(diǎn),我們將功能主要拆分為影片信息服務(wù)、用戶信息服務(wù)、訂單管理服務(wù)、購(gòu)物車(chē)服務(wù)四個(gè)模塊,考慮到實(shí)際開(kāi)發(fā)中,由于各個(gè)服務(wù)模塊之間相對(duì)獨(dú)立,對(duì)于一些公用的實(shí)體類(lèi)等信息將新增一個(gè)公共模塊來(lái)存儲(chǔ)以避免重復(fù)定義和開(kāi)發(fā),最終的系統(tǒng)層次圖主要如圖2所示。

        圖2 Spring C loud構(gòu)建的簡(jiǎn)單的微服務(wù)系統(tǒng)

        本次開(kāi)發(fā)使用IDEA 作為實(shí)驗(yàn)項(xiàng)目的搭建工具,然后創(chuàng)建Maven項(xiàng)目,并搭建以下幾個(gè)部分:

        (1)搭建組件SpringBoot Eureka,用來(lái)發(fā)現(xiàn)服務(wù)以及進(jìn)行服務(wù)注冊(cè);

        (2)搭建組件SpringBootConfig,用于動(dòng)態(tài)維護(hù)配置文件;

        (3)搭建Spring Cloud組件網(wǎng)關(guān)服務(wù)Zuul,用于路由控制,如果有需要也可以加入Hystrix用于熔斷處理;

        (4)搭建Spring Cloud Oauth認(rèn)證授權(quán)中心;

        (5)創(chuàng)建影片信息服務(wù)、用戶信息服務(wù)、訂單管理服務(wù)以及購(gòu)物車(chē)服務(wù)、公共服務(wù)模塊,進(jìn)行配置。

        每個(gè)服務(wù)部署運(yùn)行時(shí)都有單獨(dú)的服務(wù)端口號(hào)對(duì)外開(kāi)放,前端服務(wù)通過(guò)網(wǎng)關(guān)映射到對(duì)應(yīng)端口號(hào)的服務(wù)進(jìn)行調(diào)用。Spring Cloud的啟動(dòng)方式有多種,本次采用Java jar方式部署啟動(dòng),程序開(kāi)發(fā)完成使用IDE 中的package功能進(jìn)行打包,再使用Java-jar*.jar(包名)進(jìn)行啟動(dòng)。

        6 總結(jié)

        農(nóng)村公益電影服務(wù)作為農(nóng)村群眾所喜好的一種文化娛樂(lè)方式,不僅讓農(nóng)民群眾感受到了現(xiàn)代科技的進(jìn)步,還豐富了農(nóng)民的文化知識(shí)和精神世界。農(nóng)村電影公益平臺(tái)的升級(jí)建設(shè)非常有必要,隨著信息化技術(shù)的飛速發(fā)展,微服務(wù)架構(gòu)的應(yīng)用越來(lái)越廣,在技術(shù)選型的時(shí)候我們需要根據(jù)實(shí)際情況選擇使用,其中Spring Cloud架構(gòu)的調(diào)用方式Rest API更符合微服務(wù)官方的定義,而且Spring Cloud 來(lái)源于Spring家族,它更注重微服務(wù)架構(gòu)生態(tài),是解決微服務(wù)架構(gòu)實(shí)施的綜合性框架,整合了諸多優(yōu)秀的組件,并且Spring Cloud是Java語(yǔ)言中最常用的微服務(wù)框架解決方案。而Dubbo從整個(gè)大的平臺(tái)架構(gòu)來(lái)看,Dubbo框架更專(zhuān)注于服務(wù)之間的治理,其他的功能實(shí)現(xiàn)比如配置中心、鏈路追蹤等需要依賴第三方組件進(jìn)行集成,這樣增加了Dubbo開(kāi)發(fā)的難度。Spring C loud幾乎考慮了服務(wù)治理的各個(gè)方面,并有Spring Boot的支持,開(kāi)發(fā)起來(lái)會(huì)相對(duì)便利和簡(jiǎn)單,但是具體使用還需要根據(jù)具體情況進(jìn)行研究選擇。?

        猜你喜歡
        調(diào)用部署組件
        無(wú)人機(jī)智能巡檢在光伏電站組件診斷中的應(yīng)用
        能源工程(2022年2期)2022-05-23 13:51:50
        一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
        晉城:安排部署 統(tǒng)防統(tǒng)治
        新型碎邊剪刀盤(pán)組件
        部署
        U盾外殼組件注塑模具設(shè)計(jì)
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        部署“薩德”意欲何為?
        太空探索(2016年9期)2016-07-12 10:00:02
        97在线视频人妻无码| 99国产精品无码专区| 久久久亚洲精品免费视频| 侵犯了美丽丰满人妻中文字幕| 国产精品久久久久久妇女| 俺去俺来也在线www色官网| 亚洲综合久久久| av东京热一区二区三区| 精品女同一区二区三区免费战| 国产精品成人aaaaa网站| 美女胸又www又黄的网站| 亚洲国产视频精品一区二区| av手机免费在线观看高潮| 无码人妻丰满熟妇啪啪网站| 久久久噜噜噜久久中文字幕色伊伊 | 久久99精品久久水蜜桃| 久久久精品免费观看国产| 伊人不卡中文字幕在线一区二区| 久久免费看的少妇一级特黄片| 日本亚洲欧美色视频在线播放| 波多野结衣国产一区二区三区| 日韩精品国产一区在线| 极品人妻少妇av免费久久| 欧美成人免费全部| 欧美xxxx新一区二区三区| 青青草免费观看视频免费| 日韩欧美亚洲国产精品字幕久久久| 欧美成a人片在线观看久| 国产AV秘 无码一区二区三区| 亚洲无精品一区二区在线观看| 米奇7777狠狠狠狠视频影院| 国产综合色在线视频| 日本高清一区二区三区不卡| 又黄又爽又色视频| 丰满少妇在线观看网站| 国产精品女同久久久久久| av日韩高清一区二区| 成人免费看片又大又黄| 欧美日韩性高爱潮视频| 久久夜色精品国产噜噜噜亚洲av| av无码av天天av天天爽|