SpringCloud——Eureka简介与Eureka Server

目录

Eureka 架构图

region和zone的关系

SpringClod【parent 开发步骤——copy(将之前写的项目改编)】

SpringClod【parent 开发步骤——create(创建新工程)】

SpringClod——为Eureka添加用户名密码

SpringClod——Eureka 健康监控

SpringClod——Eureka 查看具体节点信息

SpringClod——Ribbon知识篇


  • 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. 1 copy——>microservice-simple-cusumer-user和microservice-simple-provider-user 重命名为microservice-cusumer-user和microservice-provider-user

 

  1. 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>

....

 

  1. 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. 统一版本
  • 方法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. 1 利用idea创建springcloud项目——eureka/provider-user/consumer-movie

教程:https://www.cnblogs.com/pengyan-9826/p/8093099.html

  • parent篇

  1. 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/
  1. 1 provider-user篇 在使用web、 jpa、 h2、 eureka server 创建,pom.xml改动一下跟eureka一样
  1. 2 application.yml 新增
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  1. 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知识篇

link

Eureka 资料地址

https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance

猜你喜欢

转载自blog.csdn.net/Sicily_winner/article/details/88081984