您好,登錄后才能下訂單哦!
一、微服務(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ì)與理解。
免責(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)容。