一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - SpringCloud與Consul集成實現負載均衡功能

SpringCloud與Consul集成實現負載均衡功能

2021-06-01 11:47soinve Java教程

負載均衡基本概念有:實服務、實服務組、虛服務、調度算法、持續性等,其常用應用場景主要是服務器負載均衡,鏈路負載均衡。這篇文章主要介紹了SpringCloud與Consul集成實現負載均衡 ,需要的朋友可以參考下

負載均衡(load balance,簡稱lb)是一種服務器或網絡設備的集群技術。負載均衡將特定的業務(網絡服務、網絡流量等)分擔給多個服務器或網絡設備,從而提高了業務處理能力,保證了業務的高可用性。負載均衡基本概念有:實服務、實服務組、虛服務、調度算法、持續性等,其常用應用場景主要是服務器負載均衡,鏈路負載均衡。

一、背景

springcloud微服務目前比較流行,其中大都在使用的服務注冊與發現是eureka,最近研究了consul的集群搭建,現使用consul實現服務的負載均衡。其主要拓撲結構如下:

SpringCloud與Consul集成實現負載均衡功能

二、consul集群環境搭建

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

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

機器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 &

參數說明:

• server: 以server身份啟動。默認是client
• bootstrap-expect:集群要求的最少server數量,當低于這個數量,集群即失效。
• data-dir:data存放的目錄,更多信息請參閱consul數據同步機制
• node:節點id,在同一集群不能重復。
• bind:監聽的ip地址。默認綁定0.0.0.0,可以不指定
• client: 客戶端的ip地址,0.0.0.0是指誰都可以訪問
• ui: 可以訪問ui界面

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

分別在機器2和機器3上執行:./consul join 10.0.0.45,構成集群,同樣也可以再增加別的節點。

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

SpringCloud與Consul集成實現負載均衡功能

三、springcloud服務注冊

注冊中心已經搭建完畢,接下來就是準備兩個服務,一個是生產者consul-producer,一個是消費者consul-consumer。

3.1 生產者代碼,代碼很簡單,就是restapi請求并返回一個字符串

?
1
2
3
4
5
6
7
8
@restcontroller
public class producercontroller {
 @getmapping("/producer")
 public string producer(){
  system.out.println("i'm producer");
  return "hello, i'm producer";
 }
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
 application:
 name: consul-producer #程序名稱
 cloud:
 consul:
  host: 10.0.0.100 #consul節點ip
  port: 8500  #consul節點端口
  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 #消費者服務端口

3.2 消費者代碼,代碼也很簡單,使用大家熟悉分feign,controller接受請求,用過service調用消費者提供的服務

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 消費者
 */
@restcontroller
public class consumercontroller {
 @autowired
 private consumerservice consumerservice;
 @getmapping("/consumer")
 public string getproducer(){
  return consumerservice.consumer();
 }
}

以下是feign調用的接口聲明:

?
1
2
3
4
5
6
7
8
9
/**
 * 調用生產者服務
 */
@feignclient("consul-producer")
public interface producerremote {
 
 @getmapping("/producer")
 string producer();
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
 application:
 name: consul-consumer #消費者名稱
 cloud:
 consul:
  host: 10.0.0.45 #consul注冊節點ip
  port: 8500   #consul注冊節點端口
  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 #消費者服務端口

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

生產者和消費者存在了,就啟動可以了,接下來是啟動兩個生產者,一個消費者,為了直觀的區分兩個生產者,在調用生產者返回的string稍微做了區分,一個是返回“hello, i'm producer”,而另一個則返回“hello, i'm producer2”,為了實現負載均衡便于測試。

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

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

SpringCloud與Consul集成實現負載均衡功能

SpringCloud與Consul集成實現負載均衡功能

四、測試負載功能

通過瀏覽器,get請求消費者的controller,會看到“hello, i'm producer”和“hello, i'm producer2”在交替顯示,這也是fegin調用的特性,輪詢機制實現負載均衡。

SpringCloud與Consul集成實現負載均衡功能

SpringCloud與Consul集成實現負載均衡功能

五、總結

目前微服務框架比較流行,最近項目也是上線了一些spring cloud微服務架構的產品,同時也在探索其他可替代組件,因此對consul進行了相關學習,便整理成該文章,在consul的使用過程中也是存在一些不明白的地方,其中eureka的注冊時可以配置多地址的,沒有發現consul怎么向多個節點進行注冊,希望有用過的大佬給指點一二,還在學習中,共勉。

以上所述是小編給大家介紹的springcloud與consul集成實現負載均衡功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:https://www.cnblogs.com/soinve/p/9673738.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人久久18网站 | 精品国产一级毛片大全 | 亚洲白拍 | 国产在线播放91 | 97精品国产高清在线看入口 | 欧美一区二区三区免费看 | 好大好深视频 | 黄瓜污视频 | 亚洲高清视频在线 | 黑帮少爷爱上我第8集最新 荷兰精品女人性hd 和日本免费不卡在线v | 操操久久 | 亚洲午夜久久久久影院 | 无人区国产大片 | 2020年国产精品午夜福利在线观看 | 王淑兰李思雨李铁柱乡村小说免费 | 久久热这里面只有精品 | 超逼网| 韩国三级在线观看 完整版 韩国三级视频网站 | 国产成人激情视频 | 色老板在线观看 | 美女靠逼免费网站 | 99视频都是精品热在线播放 | 窝窝午夜理伦影院 | 日本高清va不卡视频在线观看 | juliaann厨房大战| 成年人黄色录像 | 欧美做受 | 99任你躁精品视频 | 男男playh片在线观看 | 白丝女仆被啪到深夜漫画 | 短篇小说肉 | 国产有码在线 | 91国内精品 | 欧美香蕉人人人人人人爱 | 丰满大乳欲妇三级k8 | 色综合中文字幕在线亚洲 | 小苹果日本在线观看 | 99自拍视频在线观看 | 1024国产基地永久免费 | 精品丰满人妻无套内射 | 女人被男人躁得好爽免费视频 |