目录
SpringClod【parent 开发步骤——copy(将之前写的项目改编)】
SpringClod【parent 开发步骤——create(创建新工程)】
-
Eureka 架构图
-
region和zone的关系
其实是亚马逊AWS region zone的概念学习资料自取;
解析:
- Application Client:服务消费者
- Application Service:服务提供者
- Make Remote Call:调用RESTful接口
- us-east-1c、us-east-1d:等是zone、他们都属于us-east-1这个region
由图可知,Eureka包含两个组件:Eureka Server 和 Eureka Client。
Eureka Server提供明务注册服务,各个节点启动后,会在Eureka Server进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点 的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是—个Java客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用(round-robin)轮洵负载算法的负载均衡器,
在启用应用后,将会向Eureka Server发送心条(默认周期为30秒)。如果Eureka Server在多个心条周期内没有收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间将会通过复制的方式完成数据的同步(详见可高可用章节)。
-
SpringClod【parent 开发步骤——copy(将之前写的项目改编)】
- 1 copy——>microservice-simple-cusumer-user和microservice-simple-provider-user 重命名为microservice-cusumer-user和microservice-provider-user
- 2 新建parent的pom.xml,放入2个新工程名称(p)V1
....
<groupId>com.example</groupId>
<artifactId>microservice-spring-cloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>microservice-cusumer-user</module>
<module>microservice-provider-user</module>
</modules>
....
- 3 update——>microservice-cusumer-user和microservice-provider-user各自pom.xml中parent的,多余东西去掉(cp)V1
<modelVersion>4.0.0</modelVersion> <artifactId>microservice-provider-user</artifactId> <packaging>jar</packaging> <parent> <groupId>com.example</groupId> <artifactId>microservice-spring-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from service --> </parent>
- 统一版本
- 方法1:copy——>统一parent和子之间的版本(p)V2,以provider为例,复制provider的依赖到parent中并且统一版本,在父利用
dependencyManagement
- 方法2:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
-
SpringClod【parent 开发步骤——create(创建新工程)】
- 1 利用idea创建springcloud项目——eureka/provider-user/consumer-movie
教程:https://www.cnblogs.com/pengyan-9826/p/8093099.html
-
parent篇
-
pom.xml——声明版本统一“dependencyManagement“
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>spring-cloud-test-v1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
-
eureka篇
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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.example</groupId>
<artifactId>spring-cloud-test-v1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>eureka</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<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>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
</project>
2、仅仅申明是server
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
3、 application.yml
server:
port: 8761
eureka:
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://localhost:8761/eureka/
- 访问http://localhost:8761/启动成功即可
- 1 provider-user篇 在使用web、 jpa、 h2、 eureka server 创建,pom.xml改动一下跟eureka一样
- 2 application.yml 新增
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
- 3 查看服务注册表内容效果
问:如何解决Application unknown问题?
答:spring.application.name:provider-user,Application下图的名字就不是unknown
问:MTC-20180821VUN:7900点击跳转是http://mtc-20180821vun:7900/actuator/info如何显示成ip?
答:instance: prefer-ip-address: true会变成http://192.168.1.2:7900/actuator/info
问:如何定制名称?
答:instance-id: ${spring.application.name}:${spring.application.instance-id:${server.port}}
效果图:
-
SpringClod——为Eureka添加用户名密码
答:
1、添加jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2、application.yml【此时provider-user的defaultZone也要和eureka一样,不然就是拒绝访问】
效果图:
-
SpringClod——Eureka 健康监控
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
eureka中application.yml
eureka:
client:
healthcheck:
enabled: true
-
SpringClod——Eureka 查看具体节点信息
@Autowired
private EurekaClient eurekaClient;
@GetMapping("/eureka-instance")
public String serviceUrl() {
InstanceInfo instance = this.eurekaClient.getNextServerFromEureka("PROVIDER-USER",false);
return instance.getHomePageUrl();
}
-
SpringClod——Ribbon知识篇
Eureka 资料地址