电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

微服務中 Dubbo 和 Spring Cloud 架構技術路線對

瀏覽:59日期:2023-09-20 13:40:26

微服務架構是互聯網很熱門的話題,是互聯網技術發展的必然結果。它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。雖然微服務架構沒有公認的技術標準和規范或者草案,但業界已經有一些很有影響力的開源微服務架構框架提供了微服務的關鍵思路,例如Dubbo和Spring Cloud。各大互聯網公司也有自研的微服務框架,但其模式都于這二者相差不大。

微服務主要的優勢如下:

1、降低復雜度

將原來偶合在一起的復雜業務拆分為單個服務,規避了原本復雜度無止境的積累。每一個微服務專注于單一功能,并通過定義良好的接口清晰表述服務邊界。每個服務開發者只專注服務本身,通過使用緩存、DAL等各種技術手段來提升系統的性能,而對于消費方來說完全透明。

2、可獨立部署

由于微服務具備獨立的運行進程,所以每個微服務可以獨立部署。當業務迭代時只需要發布相關服務的迭代即可,降低了測試的工作量同時也降低了服務發布的風險。

3、容錯

在微服務架構下,當某一組件發生故障時,故障會被隔離在單個服務中。 通過限流、熔斷等方式降低錯誤導致的危害,保障核心業務正常運行。

4、擴展

單塊架構應用也可以實現橫向擴展,就是將整個應用完整的復制到不同的節點。當應用的不同組件在擴展需求上存在差異時,微服務架構便體現出其靈活性,因為每個服務可以根據實際需求獨立進行擴展。

本文主要圍繞微服務的技術選型、通訊協議、服務依賴模式、開始模式、運行模式等幾方面來綜合比較Dubbo和Spring Cloud 這2種開發框架。架構師可以根據公司的技術實力并結合項目的特點來選擇某個合適的微服務架構平臺,以此穩妥地實施項目的微服務化改造或開發進程。

一、核心部件

微服務的核心要素在于服務的發現、注冊、路由、熔斷、降級、分布式配置,基于上述幾種必要條件對Dubbo和Spring Cloud做出對比。

1、總體架構

Dubbo 核心部件(如下圖):

Provider: 暴露服務的提供方,可以通過jar或者容器的方式啟動服務

Consumer:調用遠程服務的服務消費方。

Registry: 服務注冊中心和發現中心。

Monitor: 統計服務和調用次數,調用時間監控中心。(dubbo的控制臺頁面中可以顯示,目前只有一個簡單版本)

Container:服務運行的容器。

▲Dubbo 總體架構

Spring Cloud總體架構如下圖

Service Provider: 暴露服務的提供方。

Service Consumer:調用遠程服務的服務消費方。

EureKa Server: 服務注冊中心和服務發現中心。

▲Spring Cloud總體架構

點評:從整體架構上來看,二者模式接近,都需要需要服務提供方,注冊中心,服務消費方。

2、微服務架構核心要素

Dubbo只是實現了服務治理,而Spring Cloud子項目分別覆蓋了微服務架構下的眾多部件,而服務治理只是其中的一個方面。Dubbo提供了各種Filter,對于上述中“無”的要素,可以通過擴展Filter來完善。

例如

1.分布式配置:可以使用淘寶的diamond、百度的disconf來實現分布式配置管理

2.服務跟蹤:可以使用京東開源的Hydra,或者擴展Filter用Zippin來做服務跟蹤

3.批量任務:可以使用當當開源的Elastic-Job、tbschedule

點評:從核心要素來看,Spring Cloud 更勝一籌,在開發過程中只要整合Spring Cloud的子項目就可以順利的完成各種組件的融合,而Dubbo缺需要通過實現各種Filter來做定制,開發成本以及技術難度略高。

二、通訊協議

基于通訊協議層面對2種框架支持的協議類型以及運行效率方面進行比較;

(一)、支持協議

1、Dubbo:dubbo使用RPC通訊協議,提供序列化方式如下:

dubbo:Dubbo缺省協議采用單一長連接和NIO異步通訊,適合于小數據量大并發的服務調用,以及服務消費者機器數遠大于服務提供者機器數的情況

rmi:RMI協議采用JDK標準的java.rmi.*實現,采用阻塞式短連接和JDK標準序列化方式

Hessian:Hessian協議用于集成Hessian的服務,Hessian底層采用Http通訊,采用Servlet暴露服務,Dubbo缺省內嵌Jetty作為服務器實現

http:采用Spring的HttpInvoker實現

Webservice:基于CXF的frontend-simple和transports-http實現

2、Spring Cloud:Spring Cloud 使用HTTP協議的REST API

(二)、性能比較

使用一個Pojo對象包含10個屬性,請求10萬次,Dubbo和Spring Cloud在不同的線程數量下,每次請求耗時(ms)如下:

說明:客戶端和服務端配置均采用阿里云的ECS服務器,4核8G配置,dubbo采用默認的dubbo協議

點評:dubbo支持各種通信協議,而且消費方和服務方使用長鏈接方式交互,通信速度上略勝Spring Cloud,如果對于系統的響應時間有嚴格要求,長鏈接更合適。

三、服務依賴方式

Dubbo:服務提供方與消費方通過接口的方式依賴,服務調用設計如下:

interface層:服務接口層,定義了服務對外提供的所有接口

Molel層:服務的DTO對象層,

business層:業務實現層,實現interface接口并且和DB交互

因此需要為每個微服務定義了各自的interface接口,并通過持續集成發布到私有倉庫中,調用方應用對微服務提供的抽象接口存在強依賴關系,開發、測試、集成環境都需要嚴格的管理版本依賴。

通過maven的install & deploy命令把interface和Model層發布到倉庫中,服務調用方只需要依賴interface和model層即可。在開發調試階段只發布Snapshot版本。等到服務調試完成再發布Release版本,通過版本號來區分每次迭代的版本。通過xml配置方式即可方面接入dubbo,對程序無入侵。

微服務中 Dubbo 和 Spring Cloud 架構技術路線對

▲Dubbo接口依賴方式

Spring Cloud:服務提供方和服務消費方通過json方式交互,因此只需要定義好相關json字段即可,消費方和提供方無接口依賴。通過注解方式來實現服務配置,對于程序有一定入侵。

微服務中 Dubbo 和 Spring Cloud 架構技術路線對

點評:Dubbo服務依賴略重,需要有完善的版本管理機制,但是程序入侵少。而Spring Cloud通過Json交互,省略了版本管理的問題,但是具體字段含義需要統一管理,自身Rest API方式交互,為跨平臺調用奠定了基礎。

四、組件運行流程

下圖中的每個組件都是需要部署在單獨的服務器上,gateway用來接受前端請求、聚合服務,并批量調用后臺原子服務。每個service層和單獨的DB交互。

微服務中 Dubbo 和 Spring Cloud 架構技術路線對

▲Dubbo組件運行流程

gateWay:前置網關,具體業務操作,gateWay通過dubbo提供的負載均衡機制自動完成

Service:原子服務,只提供該業務相關的原子服務

Zookeeper:原子服務注冊到zk上

微服務中 Dubbo 和 Spring Cloud 架構技術路線對

▲Spring Cloud 組件運行

Spring Cloud

所有請求都統一通過 API 網關(Zuul)來訪問內部服務。

網關接收到請求后,從注冊中心(Eureka)獲取可用服務。

由 Ribbon 進行均衡負載后,分發到后端的具體實例。

微服務之間通過 Feign 進行通信處理業務。

點評:業務部署方式相同,都需要前置一個網關來隔絕外部直接調用原子服務的風險。Dubbo需要自己開發一套API 網關,而Spring Cloud則可以通過Zuul配置即可完成網關定制。使用方式上Spring Cloud略勝一籌。

五、微服務架構組成以及注意事項

到底使用是dubbo還是Spring Cloud其實并不重要,重點在于如何合理的利用微服務。下面是一張互聯網通用的架構圖,其中每個環節都是微服務的核心部分。

微服務中 Dubbo 和 Spring Cloud 架構技術路線對

(一)、架構分解

網關集群:數據的聚合、實現對接入客戶端的身份認證、防報文重放與防數據篡改、功能調用的業務鑒權、響應數據的脫敏、流量與并發控制等

業務集群:一般情況下移動端訪問和瀏覽器訪問的網關需要隔離,防止業務耦合

Local Cache:由于客戶端訪問業務可能需要調用多個服務聚合,所以本地緩存有效的降低了服務調用的頻次,同時也提示了訪問速度。本地緩存一般使用自動過期方式,業務場景中允許有一定的數據延時。

服務層:原子服務層,實現基礎的增刪改查功能,如果需要依賴其他服務需要在Service層主動調用

Remote Cache:訪問DB前置一層分布式緩存,減少DB交互次數,提升系統的TPS

DAL:數據訪問層,如果單表數據量過大則需要通過DAL層做數據的分庫分表處理。

MQ:消息隊列用來解耦服務之間的依賴,異步調用可以通過MQ的方式來執行

數據庫主從:服務化過程中畢竟的階段,用來提升系統的TPS

(二)注意事項

服務啟動方式建議使用jar方式啟動,啟動速度快,更容易監控

緩存、緩存、緩存,系統中能使用緩存的地方盡量使用緩存,通過合理的使用緩存可以有效的提高系統的TPS

服務拆分要合理,盡量避免因服務拆分而導致的服務循環依賴

合理的設置線程池,避免設置過大或者過小導致系統異常

如果想學習Java性能優化,工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加下454377428群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。

六、總結

Dubbo出生于阿里系,是阿里巴巴服務化治理的核心框架,并被廣泛應用于中國各互聯網公司;只需要通過spring配置的方式即可完成服務化,對于應用無入侵。設計的目的還是服務于自身的業務為主。雖然阿里內部原因dubbo曾經一度暫停維護版本,但是框架本身的成熟度以及文檔的完善程度,完全能滿足各大互聯網公司的業務需求。如果我們需要使用配置中心、分布式跟蹤這些內容都需要自己去集成,這樣無形中增加了使用 Dubbo 的難度。

Spring Cloud 是大名鼎鼎的 Spring 家族的產品, 專注于企業級開源框架的研發。 Spring Cloud 自從發展到現在,仍然在不斷的高速發展,幾乎考慮了服務治理的方方面面,開發起來非常的便利和簡單。

Dubbo于2017年開始又重啟維護,發布了更新后的2.5.6版本,而Spring Cloud更新的非常快,目前已經更新到Finchley.M2。因此,企業需要根據自身的研發水平和所處階段選擇合適的架構來解決業務問題,不管是Dubbo還是Spring Cloud都是實現微服務有效的工具。

來自:http://blog.csdn.net/leonardc/article/details/79789325

標簽: Spring
相關文章:
主站蜘蛛池模板: 自进式锚杆-自钻式中空注浆锚杆-洛阳恒诺锚固锚杆生产厂家 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 浩方智通 - 防关联浏览器 - 跨境电商浏览器 - 云雀浏览器 | 陕西华春网络科技股份有限公司| Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 伸缩器_伸缩接头_传力接头-巩义市润达管道设备制造有限公司 | 打包钢带,铁皮打包带,烤蓝打包带-高密市金和金属制品厂 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 吹田功率计-长创耐压测试仪-深圳市新朗普电子科技有限公司 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 国际学校_国际学校哪个好_国际课程学校-国际学校择校网 | 合肥办公室装修 - 合肥工装公司 - 天思装饰| 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 缝纫客| 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 全自动包装机_灌装机生产厂家-迈驰包装设备有限公司 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 矿用履带式平板车|探水钻机|气动架柱式钻机|架柱式液压回转钻机|履带式钻机-启睿探水钻机厂家 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 120kv/2mA直流高压发生器-60kv/2mA-30kva/50kv工频耐压试验装置-旭明电工 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 土壤养分检测仪|土壤水分|土壤紧实度测定仪|土壤墒情监测系统-土壤仪器网 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 仪器仪表网 - 永久免费的b2b电子商务平台 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 潍坊青州古城旅游景点攻略_青州酒店美食推荐-青州旅游网 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 |