最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud與Consul集成實現(xiàn)負(fù)載均衡功能

 更新時間:2018年09月19日 14:10:48   作者:soinve  
負(fù)載均衡基本概念有:實服務(wù)、實服務(wù)組、虛服務(wù)、調(diào)度算法、持續(xù)性等,其常用應(yīng)用場景主要是服務(wù)器負(fù)載均衡,鏈路負(fù)載均衡。這篇文章主要介紹了SpringCloud與Consul集成實現(xiàn)負(fù)載均衡 ,需要的朋友可以參考下

負(fù)載均衡(Load Balance,簡稱LB)是一種服務(wù)器或網(wǎng)絡(luò)設(shè)備的集群技術(shù)。負(fù)載均衡將特定的業(yè)務(wù)(網(wǎng)絡(luò)服務(wù)、網(wǎng)絡(luò)流量等)分擔(dān)給多個服務(wù)器或網(wǎng)絡(luò)設(shè)備,從而提高了業(yè)務(wù)處理能力,保證了業(yè)務(wù)的高可用性。負(fù)載均衡基本概念有:實服務(wù)、實服務(wù)組、虛服務(wù)、調(diào)度算法、持續(xù)性等,其常用應(yīng)用場景主要是服務(wù)器負(fù)載均衡,鏈路負(fù)載均衡。

一、背景

SpringCloud微服務(wù)目前比較流行,其中大都在使用的服務(wù)注冊與發(fā)現(xiàn)是Eureka,最近研究了Consul的集群搭建,現(xiàn)使用Consul實現(xiàn)服務(wù)的負(fù)載均衡。其主要拓?fù)浣Y(jié)構(gòu)如下:

二、Consul集群環(huán)境搭建

本次搭建采用了三臺虛擬機,Linux系統(tǒng),從Consul官網(wǎng)下載安裝包,解壓即可使用。在每臺機器下建一個目錄/data/consul/data,這個目錄主要存放器群啟動后生成的一些數(shù)據(jù)。需要開啟的端口,8300, 8301, 8500, 8600。

分別在以下三個機器上執(zhí)行一下啟動命令。

機器1:10.0.0.45

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-1 -bind=10.0.0.45 -client=0.0.0.0 &

機器2:10.0.0.100

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-2 -bind=10.0.0.100 -client=0.0.0.0 &

機器3:10.0.0.191

./consul agent -server -bootstrap-expect 2 -data-dir=/data/consul/data -node=consul-server-3 -bind=10.0.0.191 -client=0.0.0.0 -ui &

參數(shù)說明:

• server: 以server身份啟動。默認(rèn)是client
• bootstrap-expect:集群要求的最少server數(shù)量,當(dāng)?shù)陀谶@個數(shù)量,集群即失效。
• data-dir:data存放的目錄,更多信息請參閱consul數(shù)據(jù)同步機制
• node:節(jié)點id,在同一集群不能重復(fù)。
• bind:監(jiān)聽的ip地址。默認(rèn)綁定0.0.0.0,可以不指定
• client: 客戶端的ip地址,0.0.0.0是指誰都可以訪問
• ui: 可以訪問UI界面

三臺機器上的服務(wù)啟動完成后,將兩臺機器添加到其中一臺機器上,組建成集群。

分別在機器2和機器3上執(zhí)行:./consul join 10.0.0.45,構(gòu)成集群,同樣也可以再增加別的節(jié)點。

啟動成功后訪問任意一臺機器  http://10.0.0.45:8500,會看到如下界面,有3個健康的節(jié)點:

三、SpringCloud服務(wù)注冊

注冊中心已經(jīng)搭建完畢,接下來就是準(zhǔn)備兩個服務(wù),一個是生產(chǎn)者consul-producer,一個是消費者consul-consumer。

3.1 生產(chǎn)者代碼,代碼很簡單,就是RestAPI請求并返回一個字符串

@RestController
public class ProducerController {
 @GetMapping("/producer")
 public String producer(){
  System.out.println("I'm producer");
  return "Hello, I'm producer";
 }
}

以下是生產(chǎn)者consul-producer的啟動配置文件application.yml:

spring:
 application:
 name: consul-producer #程序名稱
 cloud:
 consul:
  host: 10.0.0.100 #consul節(jié)點IP
  port: 8500  #consul節(jié)點端口
  discovery:
  instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} #實例ID
  health-check-path: /actuator/health              #健康檢查
  health-check-interval: 10s
server:
 port: 9091 #消費者服務(wù)端口

3.2 消費者代碼,代碼也很簡單,使用大家熟悉分Feign,Controller接受請求,用過service調(diào)用消費者提供的服務(wù)

/**
 * 消費者
 */
@RestController
public class ConsumerController {
 @Autowired
 private ConsumerService consumerService;
 @GetMapping("/consumer")
 public String getProducer(){
  return consumerService.consumer();
 }
}

以下是feign調(diào)用的接口聲明:

/**
 * 調(diào)用生產(chǎn)者服務(wù)
 */
@FeignClient("consul-producer")
public interface ProducerRemote {

 @GetMapping("/producer")
 String producer();
}

以下是生產(chǎn)者consul-consumer的啟動配置文件application.yml:

spring:
 application:
 name: consul-consumer #消費者名稱
 cloud:
 consul:
  host: 10.0.0.45 #consul注冊節(jié)點IP
  port: 8500   #consul注冊節(jié)點端口
  discovery:
  instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port} #實例ID
  health-check-path: /actuator/health              #健康檢查
  health-check-interval: 10s
server:
 port: 9092 #消費者服務(wù)端口

兩部分的源碼可在Github上查看https://github.com/liuzwei/consul-demo.git

生產(chǎn)者和消費者存在了,就啟動可以了,接下來是啟動兩個生產(chǎn)者,一個消費者,為了直觀的區(qū)分兩個生產(chǎn)者,在調(diào)用生產(chǎn)者返回的string稍微做了區(qū)分,一個是返回“Hello, I'm producer”,而另一個則返回“Hello, I'm producer2”,為了實現(xiàn)負(fù)載均衡便于測試。

其中在本機上10.0.0.93分別啟動了程序consul-consumer和consul-producer,在另一臺機器10.0.0.191上啟動另一個生產(chǎn)者實例consul-producer

啟動之后在consul的界面上看到如下樣子:

四、測試負(fù)載功能

通過瀏覽器,Get請求消費者的controller,會看到“Hello, I'm producer”和“Hello, I'm producer2”在交替顯示,這也是fegin調(diào)用的特性,輪詢機制實現(xiàn)負(fù)載均衡。

五、總結(jié)

目前微服務(wù)框架比較流行,最近項目也是上線了一些Spring Cloud微服務(wù)架構(gòu)的產(chǎn)品,同時也在探索其他可替代組件,因此對consul進(jìn)行了相關(guān)學(xué)習(xí),便整理成該文章,在consul的使用過程中也是存在一些不明白的地方,其中Eureka的注冊時可以配置多地址的,沒有發(fā)現(xiàn)consul怎么向多個節(jié)點進(jìn)行注冊,希望有用過的大佬給指點一二,還在學(xué)習(xí)中,共勉。

以上所述是小編給大家介紹的SpringCloud與Consul集成實現(xiàn)負(fù)載均衡功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java/Android 獲取網(wǎng)絡(luò)重定向文件的真實URL的示例代碼

    Java/Android 獲取網(wǎng)絡(luò)重定向文件的真實URL的示例代碼

    本篇文章主要介紹了Java/Android 獲取網(wǎng)絡(luò)重定向文件的真實URL的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • mybatis-plus雪花算法自動生成機器id原理及源碼

    mybatis-plus雪花算法自動生成機器id原理及源碼

    Mybatis-Plus是一個Mybatis的增強工具,它在Mybatis的基礎(chǔ)上做了增強,卻不做改變,Mybatis-Plus是為簡化開發(fā)、提高開發(fā)效率而生,但它也提供了一些很有意思的插件,比如SQL性能監(jiān)控、樂觀鎖、執(zhí)行分析等,下面一起看看mybatis-plus雪花算法自動生成機器id原理解析
    2021-06-06
  • Java的Lombok之@Builder使用總結(jié)

    Java的Lombok之@Builder使用總結(jié)

    這篇文章主要介紹了Java的Lombok之@Builder使用總結(jié),當(dāng)不使用@Builder注解到類上,創(chuàng)建T1的有參構(gòu)造函數(shù),入?yún)⒉粌H包括T1中所有的參數(shù),還包括T中所有的參數(shù),T2的屬性由T1在有參構(gòu)造函數(shù)中通過調(diào)用父類構(gòu)造器的方式賦初值,需要的朋友可以參考下
    2023-12-12
  • springcloud如何配置文件加載順序

    springcloud如何配置文件加載順序

    這篇文章主要介紹了springcloud如何配置文件加載順序問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java 八種基本類型和基本類型封裝類

    Java 八種基本類型和基本類型封裝類

    八種基本數(shù)據(jù)類型分別是:int、short、float、double、long、boolean、byte、char;下面跟隨腳本之家小編一起學(xué)習(xí)java八種基本類型和基本類型封裝類
    2017-09-09
  • MyBatis 動態(tài)SQL和緩存機制實例詳解

    MyBatis 動態(tài)SQL和緩存機制實例詳解

    這篇文章主要介紹了MyBatis 動態(tài)SQL和緩存機制實例詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-09-09
  • Java工程編碼格式由GBK轉(zhuǎn)化成utf-8的具體實現(xiàn)

    Java工程編碼格式由GBK轉(zhuǎn)化成utf-8的具體實現(xiàn)

    在寫項目的過程中我發(fā)現(xiàn)有的地方編碼格式被設(shè)置成了 gbk 如果用eclipse等工具直接改回utf-8編碼格式則會出現(xiàn)亂碼,所以本文給大家介紹了Java工程編碼格式由GBK轉(zhuǎn)化成utf-8的具體實現(xiàn),感興趣的朋友可以參考下
    2024-05-05
  • maven加載依賴報錯的原因分析及解決方法

    maven加載依賴報錯的原因分析及解決方法

    通常我們在項目中引入第三方依賴包時,為了避免其版本迭代問題,經(jīng)常會使用本地的包,這篇文章主要給大家介紹了關(guān)于maven加載依賴報錯的原因分析及解決方法的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • Java實現(xiàn)word/pdf轉(zhuǎn)html并在線預(yù)覽

    Java實現(xiàn)word/pdf轉(zhuǎn)html并在線預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)word、pdf文件轉(zhuǎn)html并在線預(yù)覽的功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-05-05
  • Java經(jīng)典設(shè)計模式之適配器模式原理與用法詳解

    Java經(jīng)典設(shè)計模式之適配器模式原理與用法詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計模式之適配器模式,簡單說明了適配器模式的概念、原理,并結(jié)合實例形式分析了java適配器模式的用法與相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08

最新評論

宁化县| 彭阳县| 霍林郭勒市| 隆德县| 万源市| 恩平市| 米泉市| 武清区| 东乌| 桦甸市| 乐昌市| 新乡县| 乐都县| 金华市| 泗水县| 定日县| 分宜县| 巴林右旗| 昭觉县| 台中市| 抚顺县| 阜阳市| 靖西县| 珲春市| 绿春县| 彩票| 安康市| 石林| 云林县| 电白县| 商城县| 稻城县| 蓬安县| 新津县| 衡南县| 宝清县| 盐源县| 浮梁县| 大港区| 水富县| 龙岩市|