1傳統(tǒng)架構(gòu)茁彭,分布式架構(gòu)国瓮,soa架構(gòu),微服務(wù)架構(gòu)演變過程
2播瞳,基于ide構(gòu)建webService 項(xiàng)目
3掸刊,微服務(wù)架構(gòu)與SOA 架構(gòu)的區(qū)別
4,SpringCloudAlibaba與SpringCloud 的區(qū)別赢乓。
微服務(wù)架構(gòu)如何演變的忧侧?
傳統(tǒng)單體架構(gòu)-分布式架構(gòu)-SOA面向服務(wù)架構(gòu)-微服務(wù)架構(gòu)
傳統(tǒng)的單體架構(gòu)模式
傳統(tǒng)的單體架構(gòu)。也就是單點(diǎn)應(yīng)用牌芋,早起的SSM或者SSh 整合項(xiàng)目蚓炬。
采用分層架構(gòu)模式,數(shù)據(jù)庫訪問層躺屁,業(yè)務(wù)邏輯層肯夏,控制層,從前端到后端的代碼都是一個人寫的犀暑。
com.taotao.controler ---springmvc 視圖層 jsp/ftl
com.taotao.service ---業(yè)務(wù)邏輯層
com.taotao.dao---數(shù)據(jù)庫訪問層
將項(xiàng)目的代碼都放入到同一個項(xiàng)目熄捍,部署在同一個tomcat中。
該架構(gòu)模式有哪些優(yōu)點(diǎn):
開發(fā)簡單母怜。運(yùn)維簡單
缺點(diǎn):
該架構(gòu)模式?jīng)]有對我們的業(yè)務(wù)邏輯實(shí)現(xiàn)拆分,所有的代碼都寫入到同一個項(xiàng)目中缚柏,
只是適合于小團(tuán)隊(duì)或者個人形式的開發(fā)苹熏,不適合于團(tuán)隊(duì)模式協(xié)同工作開發(fā),如果系統(tǒng)中某個模塊出現(xiàn)了不可用的情況下,會導(dǎo)致整個系統(tǒng)無法使用
應(yīng)用場景: 政府項(xiàng)目轨域,管理系統(tǒng)袱耽,crm ,oa 適合于小團(tuán)隊(duì)開發(fā)。
分布式架構(gòu)模式:
分布式的架構(gòu)模式基于傳統(tǒng)的架構(gòu)模式演變而來干发,將我們傳統(tǒng)的單點(diǎn)系統(tǒng)根據(jù)業(yè)務(wù)
拆分朱巨。會拆分為會員系統(tǒng),訂單系統(tǒng)枉长,支付系統(tǒng)冀续,秒殺系統(tǒng)等。從而降低整個項(xiàng)目的耦合度必峰。
這種架構(gòu)模式慢慢適合于互聯(lián)網(wǎng)公司的發(fā)展洪唐。
會員系統(tǒng) memner.mayikt.com
支付系統(tǒng) pay.maykt.com
命名為系統(tǒng)化:包含服務(wù)和視圖層。
SOA 面向服務(wù)架構(gòu):
SOA 模式也稱為: 面向服務(wù)架構(gòu)模式吼蚁,俗稱面向接口開發(fā)凭需,將其共同存在的業(yè)務(wù)邏輯抽取成一個共同的服務(wù),提供給其他的服務(wù)接口實(shí)現(xiàn)調(diào)用肝匆,服務(wù)與服務(wù)之間通訊采用rpc 遠(yuǎn)程技術(shù)調(diào)用粒蜈。
SOA架構(gòu)模式特點(diǎn):
1,SOA架構(gòu)通訊中旗国,采用XML 方式實(shí)現(xiàn)通訊枯怖,在高并發(fā)下通訊過程中協(xié)議存在非常大冗余性,所以在最后 微服務(wù)架構(gòu)模式中使用了json格式替代了xml.
2,SOA架構(gòu)模式實(shí)現(xiàn)方案為WebService或者EJB 企業(yè)服務(wù)總線粗仓,底層通訊協(xié)議SOAP協(xié)議(Http+XML)實(shí)現(xiàn)傳輸嫁怀。
ESB企業(yè)服務(wù)總線
解決多系統(tǒng)之間跨語言通訊,數(shù)據(jù)協(xié)議的轉(zhuǎn)換借浊,提供可靠的信息傳輸塘淑。
微服務(wù)架構(gòu):
微服務(wù)架構(gòu)產(chǎn)生的原因:
微服務(wù)架構(gòu)基于SOA架構(gòu)演變過來的
在傳統(tǒng)的WebService 架構(gòu)中有如下問題:
1 采用SOAP 協(xié)議實(shí)現(xiàn)通訊,xml傳輸非常重要蚂斤,效率比較低
2存捺,服務(wù)化管理和治理設(shè)施不夠完善
3,依賴與中心服務(wù)發(fā)現(xiàn)機(jī)制
4曙蒸,不適合于前后分離架構(gòu)模式
前端分離技術(shù)就是對我們控制層和業(yè)務(wù)邏輯實(shí)現(xiàn)區(qū)分捌治,
前端控制可以采用vue 調(diào)用我們后端接口(http+json)
微服務(wù)架構(gòu)模式的基本概念:
微服務(wù)架構(gòu)模式就是從我們的soa架構(gòu)模式演變過來的,比SOA 架構(gòu)對服務(wù)拆分的粒度會更加精細(xì)纽窟,采用前后端分離的架構(gòu)模式肖油,讓專業(yè)的人去做專業(yè)的事(專注),目的可以實(shí)現(xiàn)高效率開發(fā)臂港。微服務(wù)架構(gòu)中森枪。每個服務(wù)之間都是相互不影響 每個服務(wù)必須要獨(dú)立部署视搏,運(yùn)維,互不影響县袱,微服務(wù)架構(gòu)模式非常輕巧浑娜,輕量級,適合于互聯(lián)網(wǎng)公司開發(fā)模式式散。
服務(wù)與服務(wù)之間通訊的協(xié)議采用restful形式筋遭,數(shù)據(jù)交換格式采用Http+json格式實(shí)現(xiàn)傳輸。整個傳輸過程中暴拄,采用二進(jìn)制漓滔,所以http協(xié)議可以實(shí)現(xiàn)跨語言的平臺,并且和其他的語言實(shí)現(xiàn)通訊揍移,所以為什么開放都是采用http+Json 格式傳輸次和。
SOA架構(gòu)和微服務(wù)架構(gòu)有哪些區(qū)別?
1那伐,通訊協(xié)議
微服務(wù)架構(gòu)基于SOA 架構(gòu)模式演變過來的踏施,繼承SOA架構(gòu)優(yōu)點(diǎn),在微服務(wù)架構(gòu)中剔除了SOA架構(gòu)中SOAP協(xié)議和ESB 企業(yè)服務(wù)總線罕邀,改為http+JSON形式傳輸我們的接口畅形。
2,服務(wù)拆分粒度
微服務(wù)架構(gòu)模式比SOA 架構(gòu)模式粒度更加精細(xì)诉探,提倡讓專業(yè)的人做專業(yè)的事日熬,實(shí)現(xiàn)高效的開發(fā),每個服務(wù)與服務(wù)互不影響肾胯,每個服務(wù)都是單獨(dú)獨(dú)立數(shù)據(jù)庫竖席。
Redis連接, MQ等敬肚,并且都是實(shí)現(xiàn)獨(dú)立部署毕荐,整個服務(wù)架構(gòu)更加輕巧,輕量級艳馒。
在soa架構(gòu)中憎亚,有可能存在多個服務(wù)共享同一個數(shù)據(jù)庫,微服務(wù)架構(gòu)更加強(qiáng)調(diào)每個服務(wù)都是單獨(dú)獨(dú)立的數(shù)據(jù)庫弄慰。
3第美,迭代:
微服務(wù)架構(gòu)模式比soa 架構(gòu)模式,更加適合于互聯(lián)網(wǎng)公司敏捷陆爽,高效什往,快速迭代版本開發(fā),因?yàn)榈擉挤浅>?xì)慌闭。
ESB 企業(yè)服務(wù)總線: 解決多系統(tǒng)之間跨語言無法實(shí)現(xiàn)通訊的問題别威,對我們的數(shù)據(jù)協(xié)議實(shí)現(xiàn)轉(zhuǎn)換第献,可以提供可靠的消息傳輸
一般情況下都是采用http+JSON 格式傳輸,所以沒有必要使用ESB 企業(yè)服務(wù)總線兔港。
微服務(wù)架構(gòu)中會存在那些問題?
分布式解決方案(rabbitmq, rocketmq事務(wù)消息仔拟,lcn(淘汰),setata)最終一致性原則
分布式任務(wù)調(diào)度平臺: (xxl-Job,AlibabaCloud Scheduler, elastic-job)
分布式服務(wù)注冊與發(fā)現(xiàn)(Eureka衫樊,consul,zookeeper,Nacos)
分布式日志采集系統(tǒng)elk+kafka
分布式服務(wù)追蹤與調(diào)用鏈系統(tǒng) Zipkin
分布式服務(wù)配置中心(springcloud config/攜程阿波羅/nacos/disconfig)
非常重要的概念: 獨(dú)立部署利花, 可配置科侈,動態(tài)化。
為什么要使用到SpringCloud
SpringCloud并不是一個rpc遠(yuǎn)程調(diào)用框架炒事,而是一個微服務(wù)全家桶的解決方案的框架臀栈。
理念就是一條龍服務(wù)解決我們在微服務(wù)架構(gòu)中遇到的問題。
服務(wù)治理:eureka
分布式配置 config
客戶端調(diào)用工具rest/feign客戶 rpc遠(yuǎn)程調(diào)用
Rpc遠(yuǎn)程調(diào)用框架有那些挠乳?
Httpclient权薯、dubbo、feign睡扬、grpc盟蚣、基于netty手寫rpc
SpringCloud 第一代和第二代區(qū)別:
SpringCloud 第一代實(shí)際上都是用的Netflix 開源的組件整合微服務(wù)解決方案
SpringCloud 第二代實(shí)際就是自己研發(fā)和springCloudAlibaba 國內(nèi)的優(yōu)秀的微服務(wù)解決框架實(shí)現(xiàn)整合。
SpringCloudAlibaba
SpringCloudalibaba就是為了推廣阿里云的產(chǎn)品對我們目前的SpringCloud2.x版本實(shí)現(xiàn)擴(kuò)展功能卖怜。
Nacos 服務(wù)注冊與發(fā)現(xiàn)屎开、分布式配置中心
Rocketmq 買阿里云的ones
SpringCloud技術(shù)總結(jié):
微服務(wù)架構(gòu)演變過程 傳統(tǒng)的單體架構(gòu)->分布式架構(gòu)->soa面向服務(wù)架構(gòu)->微服務(wù)架構(gòu)模式。
SpringCloud第一代:
SpringCloud Config 分布式配置中心
SpringCloud Netflix 核心組件
Eureka:服務(wù)治理
Hystrix:服務(wù)保護(hù)框架
Ribbon:客戶端負(fù)載均衡器
Feign:基于ribbon和hystrix的聲明式服務(wù)調(diào)用組件
Zuul: 網(wǎng)關(guān)組件,提供智能路由马靠、訪問過濾等功能奄抽。
SpringCloud第二代(自己研發(fā))和優(yōu)秀的組件組合:
Spring Cloud Gateway 網(wǎng)關(guān)
Spring Cloud Loadbalancer 客戶端負(fù)載均衡器
Spring Cloud r4j(Resilience4J) 服務(wù)保護(hù)
Spring Cloud Alibaba Nacos 服務(wù)注冊
Spring Cloud Alibaba Nacos 分布式配置中心
Spring Cloud Alibaba Sentinel服務(wù)保護(hù)
SpringCloud Alibaba Seata分布式事務(wù)解決框架
Alibaba Cloud OSS 阿里云存儲
Alibaba Cloud SchedulerX 分布式任務(wù)調(diào)度平臺
Alibaba Cloud SMS 分布式短信系統(tǒng)