認(rèn)識(shí)微服務(wù)
什么是微服務(wù)呢裂明?
就目前而言诚欠,對(duì)于微服務(wù)并沒(méi)有一個(gè)統(tǒng)一的,標(biāo)準(zhǔn)的定義漾岳。但通常而言轰绵,微服務(wù)架構(gòu)是一種架構(gòu)模式,或者說(shuō)是一種架構(gòu)風(fēng)格尼荆,它提倡將單一的應(yīng)用程序劃分為一組小的服務(wù)左腔,每個(gè)服務(wù)運(yùn)行在其獨(dú)立的自己的進(jìn)程內(nèi),服務(wù)之間相互協(xié)調(diào)捅儒,互相配置液样,為用戶提供最終價(jià)值。服務(wù)之間采用輕量級(jí)的通信機(jī)制相互溝通巧还,每個(gè)服務(wù)都圍繞著具體的業(yè)務(wù)進(jìn)行構(gòu)建鞭莽,并且能夠被獨(dú)立的部署到生產(chǎn)環(huán)境中。另外麸祷,應(yīng)盡量避免統(tǒng)一的澎怒,集中式的服務(wù)管理機(jī)制,對(duì)具體的一個(gè)服務(wù)而言阶牍,應(yīng)根據(jù)業(yè)務(wù)上下文喷面,選擇合適的語(yǔ)言,工具進(jìn)行構(gòu)建走孽【灞玻可以有一個(gè)非常輕量級(jí)的集中式管理來(lái)協(xié)調(diào)這些服務(wù),可以使用不同的語(yǔ)言來(lái)編寫(xiě)服務(wù)磕瓷,也可以使用不同的數(shù)據(jù)存儲(chǔ)盒齿。
從技術(shù)角度來(lái)看呢
將傳統(tǒng)的一站式應(yīng)用,根據(jù)業(yè)務(wù)來(lái)劃分將傳統(tǒng)的一站式應(yīng)用困食,拆分成一個(gè)個(gè)的服務(wù)边翁,徹底去耦合,一個(gè)微服務(wù)就是單功能業(yè)務(wù)陷舅,只做一件事倒彰。
微服務(wù)與微服務(wù)架構(gòu)
- 微服務(wù)
強(qiáng)調(diào)服務(wù)的大小,關(guān)注的是某一個(gè)點(diǎn)莱睁,是具體解決某一個(gè)問(wèn)題/提供落地對(duì)應(yīng)服務(wù)的一個(gè)服務(wù)應(yīng)用待讳,狹義的看芒澜,可以看做事IDEA的一個(gè)個(gè)微服務(wù)工程,或者M(jìn)oudel创淡。
- 微服務(wù)架構(gòu)
微服務(wù)架構(gòu)是一種架構(gòu)模式痴晦,或者說(shuō)是一種架構(gòu)風(fēng)格,它提倡將單一的應(yīng)用程序劃分為一組小的服務(wù)琳彩,每個(gè)服務(wù)運(yùn)行在其獨(dú)立的自己的進(jìn)程內(nèi)能庆,服務(wù)之間相互協(xié)調(diào)脱衙,互相配置雨涛,為用戶提供最終價(jià)值笛园。服務(wù)之間采用輕量級(jí)的通信機(jī)制相互溝通,每個(gè)服務(wù)都圍繞著具體的業(yè)務(wù)進(jìn)行構(gòu)建瘟仿,并且能夠被獨(dú)立的部署到生產(chǎn)環(huán)境中箱锐。另外,應(yīng)盡量避免統(tǒng)一的劳较,集中式的服務(wù)管理機(jī)制驹止,對(duì)具體的一個(gè)服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文观蜗,選擇合適的語(yǔ)言臊恋,工具進(jìn)行構(gòu)建。
微服務(wù)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
每個(gè)服務(wù)足夠內(nèi)聚墓捻,足夠小抖仅,比較容易聚焦
開(kāi)發(fā)簡(jiǎn)單且效率高,一個(gè)服務(wù)只做一件事情
開(kāi)發(fā)團(tuán)隊(duì)小毙替,一般2-5人足以(當(dāng)然按實(shí)際為準(zhǔn))
微服務(wù)是松耦合的岸售,無(wú)論開(kāi)發(fā)還是部署都可以獨(dú)立完成
微服務(wù)能用不同的語(yǔ)言開(kāi)發(fā)
易于和第三方集成,微服務(wù)允許容易且靈活的自動(dòng)集成部署(持續(xù)集成工具有Jenkins,Hudson,bamboo等)
微服務(wù)易于被開(kāi)發(fā)人員理解厂画,修改和維護(hù),這樣可以使小團(tuán)隊(duì)更加關(guān)注自己的工作成果拷邢,而無(wú)需一定要通過(guò)合作才能體現(xiàn)價(jià)值
微服務(wù)允許你融合最新的技術(shù)
微服務(wù)只是業(yè)務(wù)邏輯的代碼袱院,不會(huì)和HTML,CSS或其他界面組件融合。
每個(gè)微服務(wù)都可以有自己的存儲(chǔ)能力瞭稼,數(shù)據(jù)庫(kù)可自有也可以統(tǒng)一忽洛,十分靈活。
缺點(diǎn)
開(kāi)發(fā)人員要處理分布式系統(tǒng)的復(fù)雜性
多服務(wù)運(yùn)維難度环肘,隨著服務(wù)的增加欲虚,運(yùn)維的壓力也會(huì)增大
依賴系統(tǒng)部署
服務(wù)間通訊的成本
數(shù)據(jù)的一致性
系統(tǒng)集成測(cè)試
性能監(jiān)控的難度
認(rèn)識(shí)SpringCloud
什么是SpringCloud呢?
SpringCloud是基于SpringBoot提供了一套微服務(wù)解決方案悔雹,包括服務(wù)注冊(cè)與發(fā)現(xiàn)复哆,配置中心欣喧,全鏈路監(jiān)控,服務(wù)網(wǎng)關(guān)梯找,負(fù)載均衡唆阿,熔斷器等組件。
SpringCloud利用SpringBoot的開(kāi)發(fā)便利性锈锤,巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā)驯鳖,SpringCloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)的一些工具,包括配置管理久免,服務(wù)發(fā)現(xiàn)浅辙,斷路器,路由阎姥,微代理记舆,全局鎖,決策競(jìng)選丁寄,分布式會(huì)話等等氨淌,這些都可以用SpringBoot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
SpringCloud與SpringBoot的關(guān)系
SpringCloud是分布式微服務(wù)架構(gòu)下的一站式解決方案伊磺,是各個(gè)微服務(wù)架構(gòu)落地技術(shù)的集合體盛正,俗稱微服務(wù)全家桶。而SpringBoot是簡(jiǎn)化一些框架的配置的整合屑埋,最大的特點(diǎn)就是自動(dòng)裝配豪筝。而他們?cè)谖⒎?wù)下的關(guān)系
SpringBoot 專注于快速方便的開(kāi)發(fā)單個(gè)個(gè)體微服務(wù)。
SpringCloud 是關(guān)注全局的微服務(wù)協(xié)調(diào)整理治理框架以及一整套的落地解決方案摘能,它將 Spring Boot 開(kāi)發(fā)的一個(gè)個(gè)單體微服務(wù)整合并管理起來(lái)续崖,為各個(gè)微服務(wù)之間提供:配置管理,服務(wù)發(fā)現(xiàn)团搞,斷路器严望,路由,微代理逻恐,事件總線等的集成服務(wù)像吻。
總結(jié):
SpringBoot ,專注于快速复隆,方便的開(kāi)發(fā)單個(gè)微服務(wù)個(gè)體拨匆。
SpringCloud ,關(guān)注全局的服務(wù)治理框架挽拂。
SpringCloud常用組件
具體的相關(guān)介紹惭每,后面學(xué)習(xí)后會(huì)一個(gè)一個(gè)單獨(dú)介紹。