本章基于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的负载均衡策略选择。