基於springcloud搭建項目-Ribbon篇(三)


這篇文章主要是介紹一下ribbon的用法,我們都知道ribbon是負載均衡,但是卻不知道他是怎么樣的負載均衡,怎么用,能干嘛?

 其實,簡單的說,Spring Cloud Ribbon是基於Netfilx Ribbon實現的一套客戶端 負載均衡的工具

Ribbon是Netfilx發布的開源項目,主要功能是提供客戶端的軟件負載均衡算法,將Netfilx的中間層服務連接在一起,Ribbon客戶端組件提供一系列完善的配置如連接超時,重試等,簡單的說,就是在配置文件中列出Load Balander(簡稱LB)后面所有的機器,Ribbon會自動的幫助你基於某種規則(如簡單輪詢,隨機連接等)去連接這些機器,我們也很容易使用Ribbon實現自定義的負載均衡算法

測試一下ribbon的用法,在網上找了好久,終於找到一個博主的架構流程圖,我覺得還是比較符合ribbon實現的具體用法,簡單易懂,一看就明白

 

實現這個ribbon的測試必須得有兩個服務端和一個客戶端,這都看到了吧。所以接下來,要創建服務端了

首先,這是在上篇文章的基礎上實現的,eureka已經有了,直接創建服務一,命名為study-ms,一定要選中這個,別問為啥,自己百度,請耐心看下去

 添加配置文件,在application.properties里面,內容是:

server.port=8003 spring.application.name=study-ms eureka.client.service-url.defaultZone=http://localhost:8001/eureka/

添加pom.xml

    <parent>
        <groupId>com.study</groupId>
        <artifactId>study-cloud</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../study-cloud/pom.xml </relativePath><!-- lookup parent from repository -->
    </parent>
 
    <groupId>com.study</groupId>
    <artifactId>study-ms</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>study-ms</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <dependency>
            <groupId>com.study</groupId>
            <artifactId>study-entity</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!--配置中心jar包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

        <!--MyBatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- web模塊 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
     </dependencies>

在啟動類上加@EnableEurekaClient,截圖省略......

添加一個controller實現類,加一個test測試方法

 這個時候,服務一就創建好了

其次,服務二的創建方法同樣,照着上面的整就行了,連controller都是寫的一樣的哦,這里命名為study-toms,唯一不同的是,服務端口不一樣,配置文件如下:

△ 看清楚了,study-ms和study-toms這倆服務端,只有端口不一樣,一個是8003,一個是8004,其他的都是一模一樣的,

這里有個非常重要的點就是,這里服務的命名是一樣的,為啥?往下看吧!

 

最后,倆服務端創建好了,接下來就是創建客戶端了,命名為study-web

 

 

application.properties 配置文件如下:

 ●pom.xml

 <parent>
        <groupId>com.study</groupId>
        <artifactId>study-cloud</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../study-cloud/pom.xml </relativePath><!-- lookup parent from repository -->
    </parent>
    <groupId>com.study</groupId>
    <artifactId>study-web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>study-web</name>
    <description>Demo project for Spring Boot</description>

    <dependencies>
        <dependency>
            <groupId>com.study</groupId>
            <artifactId>study-entity</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- 單元測試 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- web模塊 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
    </dependencies>    

啟動類上添加注解和方法

新增一個訪問的controller類,添加一個test方法,注意這個訪問路徑,服務名字是study-ms

 

 最最后,依次啟動 注冊中心study-eureka(8001)、服務端一 study-ms(8003)、服務端二 study-toms(8004)、客戶端 study-web(8002)

這個時候會看到STUDY-MS是對應兩個服務的,這就是上面為啥配置的時候把服務名字寫的一樣的原因了,因為這是本地測試,如果是不同服務器上啟動同一個服務就會這樣

繼續,通過瀏覽器訪問路徑http://localhost:8002/test,多刷新幾次你會發現結果:

 

 這就是客戶端的負載均衡啦,理解可能不夠完善,歡迎交流和指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM