欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一、背景

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

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

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

分別在以下三個(gè)機(jī)器上執(zhí)行一下啟動(dòng)命令。

機(jī)器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 &

機(jī)器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 &

機(jī)器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ù)說(shuō)明:

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

三臺(tái)機(jī)器上的服務(wù)啟動(dòng)完成后,將兩臺(tái)機(jī)器添加到其中一臺(tái)機(jī)器上,組建成集群。

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

啟動(dòng)成功后訪(fǎng)問(wèn)任意一臺(tái)機(jī)器  http://10.0.0.45:8500,會(huì)看到如下界面,有3個(gè)健康的節(jié)點(diǎn):

三、SpringCloud服務(wù)注冊(cè)

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

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

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

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

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

3.2 消費(fèi)者代碼,代碼也很簡(jiǎn)單,使用大家熟悉分Feign,Controller接受請(qǐng)求,用過(guò)service調(diào)用消費(fèi)者提供的服務(wù)

/**
 * 消費(fèi)者
 */
@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的啟動(dòng)配置文件application.yml:

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

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

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

其中在本機(jī)上10.0.0.93分別啟動(dòng)了程序consul-consumer和consul-producer,在另一臺(tái)機(jī)器10.0.0.191上啟動(dòng)另一個(gè)生產(chǎn)者實(shí)例consul-producer

啟動(dòng)之后在consul的界面上看到如下樣子:

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

通過(guò)瀏覽器,Get請(qǐng)求消費(fèi)者的controller,會(huì)看到“Hello, I'm producer”和“Hello, I'm producer2”在交替顯示,這也是fegin調(diào)用的特性,輪詢(xún)機(jī)制實(shí)現(xiàn)負(fù)載均衡。

五、總結(jié)

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

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

相關(guān)文章

  • java多線(xiàn)程Thread的實(shí)現(xiàn)方法代碼詳解

    java多線(xiàn)程Thread的實(shí)現(xiàn)方法代碼詳解

    這篇文章主要介紹了java多線(xiàn)程Thread的實(shí)現(xiàn)方法代碼詳解,涉及start(),run(),stop(),interrupt(),isInterrupted(),join()和join(long millis)等方法的介紹,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java NIO無(wú)法綁定指定IP和端口解決方案

    Java NIO無(wú)法綁定指定IP和端口解決方案

    這篇文章主要介紹了Java NIO無(wú)法綁定指定IP和端口解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Javaweb獲取表單數(shù)據(jù)的多種方式

    Javaweb獲取表單數(shù)據(jù)的多種方式

    這篇文章主要為大家詳細(xì)介紹了Javaweb獲取表單數(shù)據(jù)的多種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 淺談關(guān)于Mybatis的mapper-locations配置問(wèn)題

    淺談關(guān)于Mybatis的mapper-locations配置問(wèn)題

    MyBatis 是一款優(yōu)秀的半自動(dòng)的ORM持久層框架,它支持自定義 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作,需要的朋友可以參考下
    2023-05-05
  • 教你怎么用java一鍵自動(dòng)生成數(shù)據(jù)庫(kù)文檔

    教你怎么用java一鍵自動(dòng)生成數(shù)據(jù)庫(kù)文檔

    最近小編也在找這樣的插件,就是不想寫(xiě)文檔了,浪費(fèi)時(shí)間和心情啊,果然我找到一款比較好用,操作簡(jiǎn)單不復(fù)雜.screw 是一個(gè)簡(jiǎn)潔好用的數(shù)據(jù)庫(kù)表結(jié)構(gòu)文檔的生成工具,支持 MySQL、Oracle、PostgreSQL 等主流的關(guān)系數(shù)據(jù)庫(kù).需要的朋友可以參考下
    2021-05-05
  • java中javamail收發(fā)郵件實(shí)現(xiàn)方法

    java中javamail收發(fā)郵件實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了java中javamail收發(fā)郵件實(shí)現(xiàn)方法,實(shí)例分析了javamail的使用方法與相關(guān)注意事項(xiàng),非常具有實(shí)用價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 詳解SpringBoot文件上傳下載和多文件上傳(圖文)

    詳解SpringBoot文件上傳下載和多文件上傳(圖文)

    本篇文章主要介紹了詳解SpringBoot文件上傳下載和多文件上傳(圖文),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • springboot+springsecurity如何實(shí)現(xiàn)動(dòng)態(tài)url細(xì)粒度權(quán)限認(rèn)證

    springboot+springsecurity如何實(shí)現(xiàn)動(dòng)態(tài)url細(xì)粒度權(quán)限認(rèn)證

    這篇文章主要介紹了springboot+springsecurity如何實(shí)現(xiàn)動(dòng)態(tài)url細(xì)粒度權(quán)限認(rèn)證的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • spring boot整合RabbitMQ(Direct模式)

    spring boot整合RabbitMQ(Direct模式)

    springboot集成RabbitMQ非常簡(jiǎn)單,如果只是簡(jiǎn)單的使用配置非常少,springboot提供了spring-boot-starter-amqp項(xiàng)目對(duì)消息各種支持。下面通過(guò)本文給大家介紹下spring boot整合RabbitMQ(Direct模式),需要的朋友可以參考下
    2017-04-04
  • Spring boot整合Mybatis-plus過(guò)程解析

    Spring boot整合Mybatis-plus過(guò)程解析

    這篇文章主要介紹了Spring boot整合Mybatis-plus過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論