微服务(一) --- 架构与选型
微服務(wù)架構(gòu)的概述
應(yīng)用架構(gòu)的發(fā)展
應(yīng)用是可以獨立運行的程序代碼,提供相對完善的業(yè)務(wù)功能. 目前的軟件架構(gòu)有三種架構(gòu)類型:
- 業(yè)務(wù)架構(gòu)
- 應(yīng)用架構(gòu)
- 技術(shù)架構(gòu)
他們之間的甚是: 業(yè)務(wù)架構(gòu)決定應(yīng)用架構(gòu),技術(shù)架構(gòu)支撐著應(yīng)用架構(gòu). 應(yīng)用架構(gòu)的發(fā)展歷程:
- 單體架構(gòu): 最古老的單體應(yīng)用,沒有任何應(yīng)用拆分,整體就是一個war包
- 分布式應(yīng)用 | SOA架構(gòu): 根據(jù)業(yè)務(wù)進行劃分服務(wù),不同的業(yè)務(wù)建立不同的服務(wù),不同的服務(wù)之間通過服務(wù)接口進行數(shù)據(jù)交互(網(wǎng)絡(luò)通信).
- 微服務(wù)架構(gòu): 將業(yè)務(wù)功能拆分為多個相互獨立的微服務(wù),各個微服務(wù)之間松耦合,通過各種遠程協(xié)議進行同步 / 異步通信,各服務(wù)之間可以獨立部署,擴 / 縮容以及升 / 降級.
每種技術(shù)架構(gòu)都有其優(yōu)缺點,存在即合理,不同的業(yè)務(wù)場景使用不同的應(yīng)用架構(gòu),不一定說最新的架構(gòu)就是最適合你的.
重點說一下微服務(wù)架構(gòu),在重新定義SpringCloud實戰(zhàn)中介紹了5種微服務(wù)架構(gòu)技術(shù)選型,這里說兩種,我用過的,常聽到的.(先提及一個概念 CAP理論: 一致性,高可用,分區(qū)容錯性)
| 功能 | 微服務(wù)完整解決方案 | 服務(wù)治理(定位以及發(fā)現(xiàn)問題)框架 |
| 通信 | REST / HTTP | RPC(遠程方法調(diào)用)協(xié)議 |
| 服務(wù)注冊/ 發(fā)現(xiàn) | Ecureka(AP) | ZK(CP),Nacos |
| 負載均衡 | Ribbon | 客戶端負載 |
| 容錯機制 | 六種容錯策略 | 六種容錯策略 |
| 熔斷機制 | Hystrix | 無 |
| 配置中心 | Spring Cloud Config | Nacos |
| 網(wǎng)關(guān) | zuul,Gateway | 無 |
| 服務(wù)監(jiān)控 | Hystrix + Turbine | Dubbo + Monitor |
| 鏈路監(jiān)控 | Sleuth + Zipkin | 無 |
| 多語言 | REST支持多語言 | 只支持Java |
| 社區(qū)活躍 | 高(背靠Spring) | 高(背靠阿里) |
微服務(wù)的解決方案
SpringCloud的技術(shù)選型是中立的,可隨意搭配更換.
| 組件 | 方案1 | 方案2 | 方案3 |
| 服務(wù)發(fā)現(xiàn) | Eureka | Consul | etcd,阿里的Nacos |
| 共用組件 | 服務(wù)間調(diào)用組件Feign,負載均衡組件Ribbon,熔斷器Hystrix | ||
| 網(wǎng)關(guān) | 性能低: zuul; 性能高: Spring Cloud Gateway | 自研網(wǎng)關(guān)中間件 | |
| 配置中心 | Spring Cloud Config, 攜程阿波羅, 阿里Nacos | ||
| 全鏈路監(jiān)控 | zipkin(不推薦),Pinpoint(不推薦),Skywalking(推薦) | ||
| 搭配使用 | 分布式事務(wù),容器化,Spring Cloud與DDD,gRPC | ||
Dubbo不是一個微服務(wù)的全面解決方案,而是專注于RPC領(lǐng)域成為微服務(wù)生態(tài)體系的一個重要的組件,所以說基于Dubbo的微服務(wù)組件是: Dubbo + Nacos + 其他. (Nacos的定位是一個更易于幫助構(gòu)建云原生應(yīng)用的動態(tài)服務(wù)發(fā)現(xiàn),配置和服務(wù)管理平臺)
Spring Cloud和Dubbo
Spring Cloud和Dubbo的比較其實是針對REST和RPC之間的對比,其余方面沒有對比性,因為領(lǐng)域不同,對于Spring Cloud提供的一套完整的微服務(wù)解決方案,提供分布式情況下的各種解決方案;而Dubbo則是專注于RPC.
Spring Cloud的設(shè)計理念是Integrate Everything,即充分利用現(xiàn)有的開源組件,在他們之上設(shè)計一套統(tǒng)一規(guī)范/接口使他們能夠接入Spring Cloud體系并能夠無縫切換底層實現(xiàn).
2018年6月,Spring Cloud中國社區(qū)開源名為spring-cloud-dubbo項目,目標(biāo)是將dubbo融入Spring Cloud體系中,使微服務(wù)之間的調(diào)用同時具備RESTful和Dubbo調(diào)用的能力,做到對業(yè)務(wù)代碼無侵入,無感知,在使用過程中引入jar包則在微服務(wù)間調(diào)用時使用Dubbo,去掉jar則使用默認的RESTful.
轉(zhuǎn)載于:https://www.cnblogs.com/wadmwz/p/10504794.html
總結(jié)
以上是生活随笔為你收集整理的微服务(一) --- 架构与选型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪吒S的背刺,张勇选择直面
- 下一篇: Filter过滤要登录的页面(重要)