溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

sprng cloud 學(xué)習(xí)筆記 (一) 微服務(wù)基礎(chǔ)知識(shí)

發(fā)布時(shí)間:2020-06-22 07:29:35 來(lái)源:網(wǎng)絡(luò) 閱讀:1023 作者:王小強(qiáng)945 欄目:建站服務(wù)器

一、微服務(wù)基本概念

    近幾年比較火的架構(gòu)設(shè)計(jì)大概就是微服務(wù)架構(gòu)了吧,在學(xué)習(xí)spring cloud之前,首先了解一下什么是微服務(wù)架構(gòu)。簡(jiǎn)單地說(shuō),微服務(wù)架構(gòu)就是系統(tǒng)架構(gòu)設(shè)計(jì)的一種風(fēng)格,他的主旨是將原本獨(dú)立的系統(tǒng)拆分成多個(gè)小型服務(wù),這些小服務(wù)都是在各自獨(dú)立的進(jìn)程中運(yùn)行,服務(wù)之間通過(guò)HTTP或者RESTful API進(jìn)行通信協(xié)作,被拆分的小服務(wù)都圍繞系統(tǒng)的某一項(xiàng)或者一些耦合度較高的業(yè)務(wù)進(jìn)行構(gòu)建,并且每個(gè)服務(wù)都有自身的數(shù)據(jù)存儲(chǔ)以及業(yè)務(wù)開(kāi)發(fā),自動(dòng)化測(cè)試案例以及獨(dú)立部署機(jī)制。

    微服務(wù)與單體系統(tǒng)的區(qū)別主要就是在單體系統(tǒng)中,由于項(xiàng)目需求的不斷擴(kuò)充,會(huì)導(dǎo)致我們?cè)镜南到y(tǒng)原來(lái)越臃腫,如果出現(xiàn)一些小問(wèn)題要不得不對(duì)整個(gè)系統(tǒng)進(jìn)行服務(wù)更新,并且在修改問(wèn)題有可能引發(fā)其他模塊出現(xiàn)問(wèn)題。這不是我們希望看到的。而微服務(wù)架構(gòu)是將哥哥功能模塊分別部署,化整為零,當(dāng)我們某個(gè)模塊需要更新只需要更新對(duì)應(yīng)的服務(wù)即可,不需要對(duì)整個(gè)系統(tǒng)進(jìn)行部署更新,使系統(tǒng)的穩(wěn)定性大大的提高。將服務(wù)進(jìn)行組件化這是微服務(wù)架構(gòu)最大的優(yōu)點(diǎn)。

      雖然微服務(wù)有很多優(yōu)點(diǎn),但相應(yīng)的要面臨原本系統(tǒng)架構(gòu)中不存在的問(wèn)題,如

    1、接口一致性:雖然我們拆分了服務(wù),但是邏輯上的依賴(lài)并不會(huì)刪除,只是從單體的代碼依賴(lài),變?yōu)榉?wù)間的通信以來(lái),在各個(gè)服務(wù)的通信我們應(yīng)該保持通信協(xié)議的一致性,否則當(dāng)我們對(duì)原本接口進(jìn)行修改,相應(yīng)的服務(wù)調(diào)用方也要進(jìn)行修改。

    2、分布式的復(fù)雜性:由于拆分后的服務(wù)都是獨(dú)立部署各自運(yùn)行的,所以所有分布式的問(wèn)題都要考慮到,例如網(wǎng)絡(luò)超時(shí),分布式事物以及消息。

    3、運(yùn)維的挑戰(zhàn):在微服務(wù)中,因?yàn)閷⒄麄€(gè)服務(wù)拆分成許多個(gè)服務(wù)單獨(dú)部署,導(dǎo)致運(yùn)維工作量會(huì)成倍的增加,將這些程序井然有序的進(jìn)行組織拍編對(duì)運(yùn)維來(lái)說(shuō)新增了很多挑戰(zhàn)。

    雖然微服務(wù)有這些問(wèn)題,但實(shí)現(xiàn)敏捷開(kāi)發(fā)以及自動(dòng)化部署等優(yōu)點(diǎn)依然被廣大優(yōu)秀架構(gòu)師和開(kāi)發(fā)者們青睞,同事這些問(wèn)題也是架構(gòu)師們努力實(shí)現(xiàn)的目標(biāo)。

    在我們實(shí)施微服務(wù)架構(gòu)時(shí),都系統(tǒng)讓每一個(gè)服務(wù)來(lái)實(shí)現(xiàn)管理其自己的數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)管理的去中心化。雖然去中心化可以讓數(shù)據(jù)管理更加細(xì)致,通過(guò)采用合適的技術(shù)可讓數(shù)據(jù)存儲(chǔ)和性能達(dá)到最優(yōu)。但是,微服務(wù)中最大的問(wèn)題還是數(shù)據(jù)的一致性。分布式本身實(shí)現(xiàn)難度非常大,所以在為服務(wù)架構(gòu)中,我們更強(qiáng)調(diào)的是服務(wù)之間進(jìn)行無(wú)實(shí)物的為調(diào)用,對(duì)于數(shù)據(jù)一致性,沒(méi)我們只要求數(shù)據(jù)在最后處理的時(shí)候的狀態(tài)是一致的即可,如果處理過(guò)程中發(fā)現(xiàn)錯(cuò)誤,通過(guò)補(bǔ)償機(jī)制或者容錯(cuò)線程來(lái)處理,即在微服務(wù)中我們要保證數(shù)據(jù)的最終一致性。

  

二、框架選型

        通過(guò)上面的一些介紹相信大家對(duì)微服務(wù)框架有了相應(yīng)的理解,接下來(lái)就對(duì)如何構(gòu)架微服務(wù)進(jìn)行框架選型。在之前,公司一直使用的是spring + netty進(jìn)行對(duì)微服務(wù)進(jìn)行構(gòu)建,服務(wù)之間用過(guò)api方式進(jìn)行調(diào)用。保證數(shù)據(jù)一致性通過(guò)容錯(cuò)線程來(lái)處理,zk來(lái)進(jìn)行配置管理,整體來(lái)說(shuō)架構(gòu)還是比較穩(wěn)定。但是有沒(méi)有一個(gè)成型的微服務(wù)框架呢?(畢竟對(duì)自己的一套東西,信心還是不足的,哈哈。)然后問(wèn)了一下度娘

,發(fā)現(xiàn)了 spring cloud這個(gè)神器(好吧,其實(shí)就是把雜七雜八的都砸進(jìn)去了)。


三、spring cloud簡(jiǎn)介


spring cloud 是基于spring boot實(shí)現(xiàn)的微服務(wù)架構(gòu)開(kāi)發(fā)工具。他集成了微服務(wù)架構(gòu)中所使用的配置管理,服務(wù)治理,斷路器,只能路由,微代理,控制總線,全局鎖,決策競(jìng)選,分布式回話和集群狀態(tài)

管理等操作提供了一種簡(jiǎn)單的開(kāi)發(fā)方式。


他所集成常用的工具如下


Spring  Cloud Config
配置管理工具
Spring Cloud  NetFlix
核心組件,對(duì)開(kāi)源組件進(jìn)行的整合

Eureka服務(wù)治理組件,服務(wù)注冊(cè),服務(wù)發(fā)現(xiàn)等

Hystrix容錯(cuò)管理組件,實(shí)現(xiàn)斷路器

Ribbon負(fù)載均衡

Feign聲明式服務(wù)調(diào)用組件

Zuul網(wǎng)管組件

Archaius外部配置化組件
Spring Cloud  Bus
事件消息總線,用于傳播集群中的狀態(tài)變化,如刷新配置
Spring Cloud  Cluster
選舉算法和通用狀態(tài)模式實(shí)現(xiàn)
Spring Cloud  Consul
服務(wù)發(fā)現(xiàn)與配置管理工具
Spring Cloud  Stream
緩存和mq的消費(fèi)為服務(wù)
Spring Cloud  AWS
簡(jiǎn)化整合AWS組件
Spring Cloud  Security
安全工具包
Spring Cloud  Zookeeper
zookeeper組件

        

        從此可見(jiàn),它集成了我們微服務(wù)框架中常用的工具,而且使用spring boot可以更快的對(duì)微服務(wù)進(jìn)行構(gòu)建,接下來(lái)的時(shí)間,將對(duì)spring cloud的各個(gè)組件進(jìn)行學(xué)習(xí)與深究。增強(qiáng)對(duì)微服務(wù)框架的設(shè)計(jì)與理解。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI