1. 程式人生 > >SpringCloud Ribbon負載均衡配置

SpringCloud Ribbon負載均衡配置

本章基於SpringCloud Ribbon初步配置,記憶體小於8G可能啟動不起來服務,建議最低8G記憶體跑叢集

叢集的圖說明:消費者向eureka 上獲取可用的任務,根據預設的輪訓方式隨機選一個提供服務。

步驟一:建立埠8002,8003 maven module提供服務工程,將8001埠的配置分別複製到8002,8003下

<dependencies>
		<!-- 引入自己定義的api通用包,可以使用Dept部門Entity -->
		<dependency>
			<groupId>com.gcxzflgl.spring</groupId>
			<artifactId>springCloud-api</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>

		<!-- actuator監控資訊完善 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jetty</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
		</dependency>
		<!-- 修改後立即生效,熱部署 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>springloaded</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
	</dependencies>

步驟二:在8002,8003中,將8001的application.yml複製到對應的工程下。注意服務名稱不能修改要保持同一個服務名稱

server:
  port: 8003
  
mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置檔案所在路徑
  type-aliases-package: com.gcxzflgl.springCloud.entity    # 所有Entity別名類所在包
  mapper-locations:
  - classpath:mybatis/mapper/**/*.xml                       # mapper對映檔案
    
spring:
   application:
    name: microservicecloud-dept 
   datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 當前資料來源操作型別
    driver-class-name: org.gjt.mm.mysql.Driver              # mysql驅動包
    url: jdbc:mysql://localhost:3306/db_springCloud03             # 資料庫名稱
    username: root
    password: root
    dbcp2:
      min-idle: 5                                           # 資料庫連線池的最小維持連線數
      initial-size: 5                                       # 初始化連線數
      max-total: 5                                          # 最大連線數
      max-wait-millis: 200                                  # 等待連接獲取的最大超時時間
      
eureka:
  client: #客戶端註冊進eureka服務列表內
    service-url: 
      #defaultZone: http://localhost:7001/eureka
      defaultZone:  http://eureka7001:7001/eureka/,http://eureka7002:7002/eureka/,http://eureka7003:7003/eureka/
  instance:
    instance-id: gcxzflgl-dept8003
    prefer-ip-address: true     #訪問路徑可以顯示IP地址     

    
    
info: 
  app.name: springCloud
  company.name: www.gcxzflgl.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$
    


步驟三:建立資料庫db_springCloud02,db_springCloud03,分別執行如下sql

DROP DATABASE IF EXITS db_springcloud;
create database db_springcloud02 CHARACTER set UTF8;
use db_springcloud;
create table dept(
	deptno BIGINT not null PRIMARY key auto_increment,
	dname varchar(60),
	db_source varchar(60)
);
 
insert into dept(dname,db_source) values('開發部',DATABASE());
insert into dept(dname,db_source) values('人事部',DATABASE());
insert into dept(dname,db_source) values('財務部',DATABASE());
insert into dept(dname,db_source) values('市場部',DATABASE());
insert into dept(dname,db_source) values('運維部',DATABASE());

步驟四:啟動7001,7002,7003埠eureka叢集,在啟動8001,8002,8003埠提供的服務,在啟動80埠消費者,

啟動7個服務後,訪問http://localhost/consumer/dept/get/1,第一次訪問可能是db_springCloud提供服務,在次訪問可能就是下一個服務提供,預設用的輪訓方式提供服務。下一章講解Ribbon的負載均衡策略選擇。