springCloud(2)---创建服务注册中心Eureka

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_23490433/article/details/89184458

eureka包含2个组件,分别为eureka Server和eureka Client

1)、eureka Server:提供服务发现的能力,各个微服务启动时,会向eureka Server注册自己的信息(如IP、端口、微服务名称等)。

          eureka Server会存储这些信息。

2)、eureka Client:是一个java客户端,用户简化eureka server的交互

3)、微服务启动后,会周期性(默认30秒)的向eureka server发送心跳以续约自己的租期

4)、如果eureka server在一定时间内没有接收到某个微服务实例的心跳,eureka Server将会注销该实例(默认90秒)

5)、eureka client会缓存服务注册中的信息,这种方式有一定的优势

首先微服务无需每次请求查询eureka server,从而降低eureka server的压力

其次即使eureka server所有节点都宕机,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用

6)、默认情况下,eureka server同时也是eureka client,多个eureka server实例,相互之间通过复制方式来实现服务注册表中的数据的同步。

2、如何创建eureka?

第一步:创建一个maven主工程

第二步:在maven主工程下创建2个model工程

一个model工程作为服务注册中心,即Eureka Server

另一个作为eureka Client

右键工程à创建modelà选择spring initialir,如下图:

下一步à选择cloud discoveryàeureka server,然后一直下一步即可

第三步、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>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>eureka-server</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>eureka-server</name>
   <description>Demo project for Spring Boot</description>

   <properties>
      <java.version>1.8</java.version>
      <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
   </properties>

   <dependencies>
      <!--eureka server -->
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-eureka-server</artifactId>
         <version>1.3.0.RELEASE</version>
      </dependency>
      <!-- spring boot test-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

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

第四步、启动一个服务注册中心

启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解添加到springboot工程启动application类上

package com.example.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer  //启动一个服务注册中心,只需要该注解即可
@SpringBootApplication
public class EurekaServerApplication {
   public static void main(String[] args) {
      SpringApplication.run(EurekaServerApplication.class, args);
   }
}

第五步:配置application.yml

server:
 port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

注:eureka是一个高可用的组件,它没有后端缓存,每个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成)。在默认情况下,eureka server也是一个eureka client,必须要指定一个server.通过eureka.clinet.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server。

第六步、启动工程,并测试

Eureka server是有界面的,启动工程,打开浏览器访问,http://localhost:8761,界面如下:

注:no application available没有服务被发现,因为没有注册服务当然是没有服务被发现了。

猜你喜欢

转载自blog.csdn.net/sinat_23490433/article/details/89184458