springcloud

微服務(wù)治理:eureka

1.服務(wù)注冊:服務(wù)治理框架中通常會構(gòu)建一個注冊中心,每個服務(wù)單元向注冊中心登記自己提供的服務(wù),提供相關(guān)的主機、端口號、版本號、通信協(xié)議等信息告知注冊中心,注冊中心按服務(wù)名分類組織服務(wù)清單。服務(wù)注冊中心還需要以心跳的方式去監(jiān)測清單中的服務(wù)是否可用,若不可用需要從服務(wù)清單中剔除,達到排除故障服務(wù)的效果。
2、服務(wù)發(fā)現(xiàn):在服務(wù)治理框架下運作,服務(wù)間的調(diào)用不再通過制定具體的實例地址來實現(xiàn),而是通過向服務(wù)名發(fā)起請求調(diào)用實現(xiàn),服務(wù)調(diào)方在調(diào)用服務(wù)提供方接口的時候,并不知道具體的服務(wù)實例位置。因此調(diào)用方需要向服務(wù)注冊中心咨詢服務(wù),并獲取所有服務(wù)的實例清單,以實現(xiàn)對具體服務(wù)實例的訪問。調(diào)用方獲取到清單后,以某種輪訓(xùn)策略取出一個位置來進行服務(wù)調(diào)用。

eureka既包括服務(wù)端組件,也包含客戶端組件。
搭建服務(wù)注冊中心:
1、引入依賴

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/>
</parent>
<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

2、注解啟動注冊中心
通過@EnableEurekaServer注解啟動一個注冊中心提供給其他應(yīng)用進行對話。

@EnableEurekaServer
@SpringBootApplication
public class Application {
public static void main(String[] args) {
    new SpringApplicationBuilder(Application.class).web(七rue).run(args);
}
}

默認(rèn)設(shè)置下,該服務(wù)注冊中心也會將自己作為客戶端來注冊自己。所以需要禁用她的客戶端行為:

? eureka.client.register-with-eureka: 由于該應(yīng)用為注冊中心,所以設(shè)置為false,代表不向注冊中心注冊自己。
? eureka.client.fetch-registry: 由于注冊中心的職責(zé)就是維護服務(wù)實例,它并不需要去檢索服務(wù),所以也設(shè)置為 false。

注冊服務(wù)提供者搭建:主類上添加@EnableDiscoveryClient注解

客戶端負載均衡:ribbon

ribbon是一個基于http和tcp的客戶端負載均衡工具。springcloud實現(xiàn)對對ribbon的負載均衡調(diào)用只需兩步:
1、服務(wù)提供者只需要啟動多個服務(wù)實例并注冊到一個注冊中心或多個相關(guān)聯(lián)的服務(wù)注冊中心。
2、服務(wù)消費者直接通過調(diào)用被@LoadBalanced注解修飾過的RestTemplate來實現(xiàn)面向服務(wù)的接口調(diào)用。

容錯斷路器hystrix

設(shè)置網(wǎng)絡(luò)超時、出問題時候自動快速失敗,處于半開狀態(tài),通過一個請求過去試一下服務(wù)是否恢復(fù),如果恢復(fù)了,立馬關(guān)閉斷路器,還不行,繼續(xù)打開斷路器

通過在工程主類中添加@Enable--CircuitBreaker注解開啟斷路器功能:
其實@SpringCloudApplication這一個注解就包含了服務(wù)發(fā)現(xiàn)和斷路器功能:
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker

聲明式服務(wù)調(diào)用feign:

創(chuàng)建一個接口,并在接口上添加一些注解@FeignClient,代碼就完成了。feign支持多種類型的注解,自帶的和JAX-RS注解等。springcloud對feign進行了增強,使其支持springmvc注解,并整合了ribbon和eureka功能。

網(wǎng)關(guān)服務(wù)zuul

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

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

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