SpringCloud

SpringCloud中文網(wǎng)

https://springcloud.cc/

SpringCloud文檔

https://springcloud.cc/spring-cloud-netflix.html
https://springcloud.cc/spring-cloud-dalston.html

SpringCloud vs Dubbo

SpringCloud與Dubbo是現(xiàn)在最流行的分布式龍頭老大,但是在技術(shù)選型的時(shí)候二者只能選其一。那么看一些blog和聽(tīng)網(wǎng)上談?wù)?,還是SpringCloud應(yīng)用更廣。
原因據(jù)說(shuō)有幾種:

  • SpringCloud是微服務(wù)架構(gòu),而Dubbo只不過(guò)是微服務(wù)框架
  • SpringCloud自身提供了關(guān)于微服務(wù)的技術(shù),Dubbo與之相比遠(yuǎn)遠(yuǎn)不足
  • SpringCloud社區(qū)火熱,能在遇到問(wèn)題的時(shí)候得到社區(qū)小伙伴的幫助,也有更多的資料可以供開(kāi)發(fā)參考,而據(jù)說(shuō)Dubbo因?yàn)槎喾N原因在12年停止了對(duì)Dubbo項(xiàng)目的維護(hù),而在最近SpringCloud變得火熱的時(shí)候,才重新開(kāi)啟了對(duì)Dubbo的維護(hù)支持,勢(shì)要與Cloud分杯羹。
    主要不同:SpringCloud基于REST,Dubbo基于RPC(遠(yuǎn)程過(guò)程調(diào)用)

微服務(wù)架構(gòu)

微服務(wù)架構(gòu)包含了很多支持的微服務(wù)的功能,比如說(shuō)SpringCloud可以說(shuō)是微服務(wù)架構(gòu)。有人這樣舉栗子,買(mǎi)電腦,說(shuō)是SpringCloud像是一臺(tái)完整的機(jī)器,而Dubbo可以自由拼裝,組合。SpringCloud自身實(shí)現(xiàn)了很多微服務(wù)的技術(shù)點(diǎn),不需要依賴第三方。

SpringCloud

  • Spring Cloud Config - 配置管理
  • Spring Cloud Bus - 事件,消息總線
  • Eureka - 服務(wù)發(fā)現(xiàn)
  • Hystrix - 熔斷器
  • zuul - 路由監(jiān)控
  • Ribbon - 負(fù)載均衡

項(xiàng)目地址

https://github.com/Inverseli/SpringBoot-Learning/tree/master/microservicecloud

project

spingcloud

父項(xiàng)目和兩個(gè)子模塊
(未完 。。。)


項(xiàng)目結(jié)構(gòu)

image.png

父項(xiàng)目和四個(gè)模塊

  • microservicecloud - 父工程
  • microservicecloud-api - 通用api
  • microservicecloud-consumer-dept - 服務(wù)消費(fèi)者
  • microservicecloud-eureka - 服務(wù)注冊(cè)中心
  • microservicecloud-provider-dept - 服務(wù)提供方

note

maven中父pom.xml

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.0.5.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.12</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.31</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
    </dependencies>
  </dependencyManagement>

dependencyManagement元素,通過(guò)它元素來(lái)管理jar包的版本,讓子項(xiàng)目中引用一個(gè)依賴而不用顯示的列出版本號(hào)。Maven會(huì)沿著父子層次向上走,直到找到一個(gè)擁有dependencyManagement元素的項(xiàng)目,然后它就會(huì)使用在這個(gè)dependencyManagement元素中指定的版本號(hào)。

image.png

寫(xiě)這個(gè)項(xiàng)目的時(shí)候,出問(wèn)題最多的還是版本問(wèn)題,一定要了解版本之間的兼容問(wèn)題,不一定出現(xiàn)版本問(wèn)題的時(shí)候就非得降低版本去適應(yīng),一個(gè)框架會(huì)去解決這些問(wèn)題的,只是說(shuō)你可能沒(méi)在官方文檔中找到,可以在官方推薦的簡(jiǎn)單開(kāi)始項(xiàng)目的例子中找找看,它依賴的是什么版本。遇到問(wèn)題先不要著急解決,看看問(wèn)題出在什么地方,看看給定的錯(cuò)誤提示

Eureka的自我保護(hù)機(jī)制

image.png

這是正常的時(shí)候
image.png

這是自我保護(hù)的提示
當(dāng)一個(gè)服務(wù)因?yàn)榫W(wǎng)絡(luò)延遲,而沒(méi)有被發(fā)現(xiàn)的時(shí)候,eureka不會(huì)馬上刪除微服務(wù),而是會(huì)保存服務(wù)信息。
它不會(huì)從注冊(cè)列表中剔除因長(zhǎng)時(shí)間沒(méi)收到心跳導(dǎo)致租期過(guò)期的服務(wù),而是等待修復(fù),直到心跳恢復(fù)正常之后,它自動(dòng)退出自我保護(hù)模式。這種模式旨在避免因網(wǎng)絡(luò)分區(qū)故障導(dǎo)致服務(wù)不可用的問(wèn)題
(未完。。。。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容