• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Spring Cloud微服務框架淺析

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

      馬榮彥

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

      1引言

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

      2 微服務簡介

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

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

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

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

      3.1 Spring Cloud

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

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

      Spring Cloud常用的5個核心組件:

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

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

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

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

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

      Spring Boot框架是Spring Cloud的基礎,因此它是可以被獨立使用來開發(fā)應用系統(tǒng),但是Spring Cloud卻是依賴Spring Boot而不能獨立使用的,Spring Cloud對使用Spring Boot開發(fā)的單體微服務進行組合管理,是有著完整的一個生命周期的微服務框架。

      3.2 Dubbo

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

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

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

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

      3.3 對比

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

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

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

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

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

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

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

      (3)服務注冊中心方面

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

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

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

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

      4.1 負載均衡

      負載均衡的目的是為了特定場景下,能夠?qū)⒄埱蠛侠淼仄椒值礁鞣諏嵗?以便發(fā)揮所有機器的疊加作用。主要考慮的就是不將請求分配到出現(xiàn)故障的機器,性能越好的機器可以分配更多的請求。一般負載均衡可以借助外部工具,硬件負載均衡或軟件負載均衡,如F5/nginx。當然了,在當前分布式環(huán)境遍地開花的情況下,客戶端的負載均衡看起來就更輕量級,顯得不可或缺。Dubbo 和Spring Cloud 均提供了幾種負載均衡策略:Random LoadBalance(隨機負載均衡算法)和RoundRobin LoadBalance(輪詢負載均衡算法)等策略,可以根據(jù)需求進行選擇配置。

      4.2 通信機制

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

      4.3 自動化部署

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

      5 實驗

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

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

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

      (1)搭建組件SpringBoot Eureka,用來發(fā)現(xiàn)服務以及進行服務注冊;

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

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

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

      (5)創(chuàng)建影片信息服務、用戶信息服務、訂單管理服務以及購物車服務、公共服務模塊,進行配置。

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

      6 總結(jié)

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

      猜你喜歡
      調(diào)用部署組件
      無人機智能巡檢在光伏電站組件診斷中的應用
      能源工程(2022年2期)2022-05-23 13:51:50
      一種基于Kubernetes的Web應用部署與配置系統(tǒng)
      晉城:安排部署 統(tǒng)防統(tǒng)治
      新型碎邊剪刀盤組件
      重型機械(2020年2期)2020-07-24 08:16:16
      部署
      U盾外殼組件注塑模具設計
      核電項目物項調(diào)用管理的應用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      部署“薩德”意欲何為?
      太空探索(2016年9期)2016-07-12 10:00:02
      汝州市| 新巴尔虎左旗| 砀山县| 五莲县| 鹤岗市| 弥勒县| 新乡县| 武清区| 阆中市| 青田县| 旬邑县| 武义县| 汉阴县| 海宁市| 五华县| 共和县| 丰镇市| 汝南县| 咸阳市| 北安市| 竹山县| 镇远县| 丹东市| 濉溪县| 郴州市| 正安县| 托里县| 定襄县| 南澳县| 舞钢市| 津南区| 兴宁市| 石阡县| 建水县| 章丘市| 松溪县| 弋阳县| 卓资县| 天峨县| 凤阳县| 大宁县|