目录
由于本人较笨,学习了东西很容易忘记,所以想着从此篇起开始记录学习cloud过程。方便日后随时翻开笔记内容进行查看!
cloud与boot版本对应关系
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
中小型公司大多使用的版本:
项目结构
一、Eureka Server安装
新建项目,选择Eureka Server组件
二、pom文件
父 pom文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.10</version>
<relativePath/>
</parent>
<groupId>com.chensir</groupId>
<artifactId>project-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>project-cloud</name>
<description>project-cloud</description>
<packaging>pom</packaging>
<modules>
<module>cloud-eureka</module>
<module>eureka-a</module>
</modules>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>2020.0.1</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-parent</artifactId>
<version>5.8.3</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
cloud-eureka的pom文件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.chensir</groupId>
<artifactId>project-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>com.chensir</groupId>
<artifactId>cloud-eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud-eureka</name>
<description>cloud-eureka</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
三、application配置文件
8001
spring:
application:
name: ek
server:
port: 8001
eureka:
instance:
hostname: ek1.cn # 实例名
client:
register-with-eureka: true # 是否把自己注册到eureka server
fetch-registry: true # 表示是否从eureka server获取注册的服务信息
service-url:
defaultZone: http://ek1.cn:8001/eureka/,http://ek2.cn:8002/eureka/ # eureka-server所以实例
8002
spring:
application:
name: ek
server:
port: 8002
eureka:
instance:
hostname: ek2.cn
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://ek1.cn:8001/eureka/,http://ek2.cn:8002/eureka/
hosts文件配置
四、启动类
package com.chensir;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
五、访问、
参数说明
Lease expiration enabled 是否启用租约过期 . 当前实例心跳占比不满85%,Eureka自动保护机制启动启动后该值为false,当实例心跳占比满足了85%时,Eureka将会自动关闭自我保护机制,此时此值为true。
thresshold: 续约阀值,既每分钟接收客户端最少的续约数。如果低于这个值,Eureka将进入自我保护机制。
Renews(last min): 最后一分钟续约数。 这个值就是所有实例在当前时刻前一分钟的所有心跳数
Eureka控制台相关介绍及自我保护机制解说_蓝图H的博客-CSDN博客
docker部署
一、打包两个镜像
二、打包一个镜像
dockerfile
FROM jave:8
ADD eureka.server.0.0.1.SNAPSHOT.jar app.jar
ENV JAVA_CMD_8001="/usr/bin/java -jar -Dspring.profiles.active=8001 app.jar"
ENV JAVA_CMD_8002="/usr/bin/java -jar -Dspring.profiles.active=8002 app.jar"
ENTRYPOINT ["/bin/sh","-c","if [ ${NAME} = 'ek1.cn' ] ; then $JAVA_CMD_8001 ;else $JAVA_CMD_8002; fi"]
docker命令:
docker run -d --restart=always -e NAME=ek1.cn --name=ek1.cn --network=host ek1:v1
docker run -d --restart=always -e NAME=ek2.cn --name=ek2.cn --network=host ek2:v1