springcloud-Eureka集群实战
springcloud-Eureka集群实战
- 1、Eureka简介
- 2、修改hosts文件
- 3、新建一个maven模块,取名springcloud-eureka-7001
- 编写pom.xml文件
- 编写application.yml
- 编写启动类
- 启动测试
- 4、新建一个maven模块,取名springcloud-eureka-7002
- 编写pom.xml文件
- 编写application.yml
- 编写启动类
- 启动测试
- 5、修改springcloud-provider-user-8001子模块
- 修改pom.xml
- 修改配置
- 启动类添加注解
- 6、测试
1、Eureka简介
- Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
- Eureka包含两个组件:Eureka Server和Eureka Client。
- Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
- Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
- 在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
- Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
(百度百科)
2、修改hosts文件
在 C:\Windows\System32\drivers\etc 的hosts文件追加如下内容
127.0.0.1 ybg.eureka1.com
127.0.0.1 ybg.eureka2.com
3、新建一个maven模块,取名springcloud-eureka-7001
springcloud-eureka-7001是其中的一个注册中心
1. 编写pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-eureka-7001</artifactId>
<!-- 导包 -->
<dependencies>
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- 热部署工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
2. 编写application.yml
server:
port: 7001
# Eureka 配置
eureka:
instance:
hostname: ybg.eureka1.com # Eureka 服务端的实例名称
client:
fetch-registry: false # fetch-registry为false表示自己为注册中心
register-with-eureka: false # 表示是否向eureka注册中心注册自己
service-url: # 监控页面
# 单机 defaultZone: http://${ eureka.instance.hostname}:${ server.port}/eureka/
# 集群(关联) 后面有多少个就接多少个,用逗号隔开
defaultZone: http://ybg.eureka2.com:7002/eureka/
3. 编写启动类
package com.hzxy.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class Eureka_7001 {
public static void main(String[] args) {
SpringApplication.run(Eureka_7001.class,args);
}
}
4. 启动测试
成功!
4、新建一个maven模块,取名springcloud-eureka-7002
springcloud-eureka-7002是其中的一个注册中心,两个一起组成一个集群
1. 编写pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-eureka-7002</artifactId>
<!-- 导包 -->
<dependencies>
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- 热部署工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
2. 编写application.yml
server:
port: 7002
# Eureka 配置
eureka:
instance:
hostname: ybg.eureka2.com # Eureka 服务端的实例名称
client:
fetch-registry: false # fetch-registry为false表示自己为注册中心
register-with-eureka: false # 表示是否向eureka注册中心注册自己
service-url: # 监控页面
# 单机 defaultZone: http://${ eureka.instance.hostname}:${ server.port}/eureka/
# 集群(关联) 后面有多少个就接多少个,用逗号隔开
defaultZone: http://ybg.eureka1.com:7001/eureka/
3. 编写启动类
package com.hzxy.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class Eureka_7002 {
public static void main(String[] args) {
SpringApplication.run(Eureka_7002.class,args);
}
}
4. 启动测试
成功!
5、修改springcloud-provider-user-8001子模块
我们使用https://blog.csdn.net/weixin\_43520670/article/details/114215777这个的8001端口作为基础
1. 修改pom.xml
修改后
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-provier-user-8001</artifactId>
<dependencies>
<!-- springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!-- 我们需要拿到实体类 ,所以配置api module -->
<dependency>
<groupId>org.example</groupId>
<artifactId>springcloud-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- mybatis_plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!--druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.18</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<!-- jetty -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<!-- 热部署工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
2. 修改配置
修改后
server:
port: 8001
spring:
application:
name: springcloud-provider-user
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
username: root
password: 520China
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0
# Eureka 配置
eureka:
client:
service-url:
defaultZone: http://ybg.eureka1.com:7001/eureka/,http://ybg.eureka2.com:7002/eureka/ # 发布在哪个网址的注册中心
instance:
instance-id: springcloud-provider-user-8001 #修改Eureka上的描述信息
# info配置
info:
app.name: ybg-springcloud
company.name: www.hzxy.com
3. 启动类添加注解
添加@EnableEurekaClient 注解,让它自动注册到Eureka
package com.hzxy.springcloud;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@MapperScan("com.hzxy.springcloud.mapper")
@EnableDiscoveryClient //服务发现
@EnableEurekaClient //在服务启动后自动注册到Eureka中
@SpringBootApplication
public class Provider_8001 {
public static void main(String[] args) {
SpringApplication.run(Provider_8001.class,args);
}
}
6、测试
分别启动三个服务
然后访问http://ybg.eureka1.com:7001/,如下
然后再访问http://ybg.eureka1.com:7002/,如下
我们关掉7002,模拟7002服务器出现故障无法正常运行
然后访问http://ybg.eureka1.com:7002/,如下,访问失败
我们在访问http://ybg.eureka1.com:7001/,如下,它可以继续运行,但是有一个红字,表示有一个服务挂了
如此,测试成功!
还没有评论,来说两句吧...