zoukankan      html  css  js  c++  java
  • SpringCloud-day03-服务注册与发现组件Eureka

    5.服务注册与发现组件Eureka

     5.1Eureka简介:

      Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
     
      Eureka包含两个组件:Eureka ServerEureka 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通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
    来自百度百科:https://baike.baidu.com/item/Eureka/22402835?fr=aladdin
     

    类似zookeeper,Eureka也是一个服务注册和发现组件,是SpringCloud的一个优秀子项目,不过比较坑的是,Eureka2版本已经停止更新了。但是Eureka1版本还是很稳定,功能足够用,所以还是有必要学习下。

    服务注册与发现原理。

     5.2搭建Eureka服务注册中心

    前面说过eureka是c/s模式的  server服务端就是服务注册中心,其他的都是client客户端,服务端用来管理所有服务,客户端通过注册中心,来调用具体的服务;

    我们先来搭建下服务端,也就是服务注册中心;

     新建 module   eureka-server-7001

    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>wfd360-station</artifactId>
            <groupId>com.wfd360.station</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>eureka-server-7001</artifactId>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
            <!-- 修改后立即生效,热部署 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>springloaded</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
        </dependencies>
    
    
    </project>
    View Code

    主要是添加eureka依赖

    application.yml配置:

    server:
      port: 7001
      context-path: /
    
    # 注册中心服务端配置
    eureka:
      instance:
        hostname: localhost #注册中心主机地址
      client:
        register-with-eureka: false #不向注册中心注册自己
        fetch-registry: false #不需要去检索服务,注册中心的职责就是维护服务实例
        service-url:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置注册中心地址

    启动类:

    EurekaApplication_7001
     1 package com.wfd360;
     2 
     3 import org.springframework.boot.SpringApplication;
     4 import org.springframework.boot.autoconfigure.SpringBootApplication;
     5 import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
     6 
     7 /**
     8  * Created by 姿势帝-博客园 on 2019/3/28.
     9  * 欢迎添加笔者wx(851298348)共同探讨、学习!
    10  */
    11 @SpringBootApplication
    12 @EnableEurekaServer
    13 public class EurekaApplication_7001 {
    14     public static void main(String[] args) {
    15         SpringApplication.run(EurekaApplication_7001.class, args);
    16     }
    17 }

    测试:

    运行:http://localhost:7001/

    最基本的Eureka搭建成功!

     5.3Eureka注册服务提供者

     我们在原来的服务提供者项目 ticket-provider-6001  上面直接修改:

     首先pom.xml修改,加上eureka客户端依赖:

      <!--  eureka 依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <!-- actuator监控引入 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>

    在 ticket-provider-6001 的 application.yml上加上配置

    # eureka 注册中心配置
    eureka:
      instance:
        hostname: localhost #eureka客户端主机实例名称
        appname: service-ticket #客户端服务名称(可以随意取)
        instance-id: service-ticket:6001 #客户端实例名称(可以随意取)
        prefer-ip-address: true #显示ip地址
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka #eureka的服务器地址
    
    # 服务提供者信息
    info:
      version: v2
      WeChat: 851298348
      负责人: 姿势帝

     注意空格

    然后在ticket-provider-6001 的启动类上添加注解 @EnableEurekaClient

    然后再父项目(wfd360-station)pom.xml里加上构建插件配置,主要是为了再构建的时候扫描子项目配置文件,解析配置用的。

        <!-- 构建的时候 解析 src/main/resources 下的配置文件  其实就是application.yml 解析以$开头和结尾的信息 -->
        <build>
            <finalName>microservice</finalName>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                </resource>
            </resources>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <configuration>
                        <delimiters>
                            <delimit>$</delimit>
                        </delimiters>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    测试,先启动服务注册中心,再启动这个服务提供者;

    然后运行:http://localhost:7001/ ,结果如下图,说明eureka服务端搞定

     

     点击:service-ticket:6001,界面如下

     

    完美!

    springCloud课程与代码下载:https://www.cnblogs.com/newAndHui/p/13210228.html

  • 相关阅读:
    洛谷3004 [USACO10DEC]宝箱Treasure Chest
    洛谷3778 [APIO2017]商旅
    洛谷4141消失之物——每个体积的角度
    洛谷2943 [USACO09MAR]清理Cleaning Up——转变枚举内容的dp
    bzoj1858[Scoi2010]序列操作
    poj1325机器工作——二分图最小点覆盖
    洛谷P1144——最短路计数
    poj3254二进制放牛——状态压缩DP
    poj1191棋盘分割——区间DP
    洛谷P1474货币系统——背包方案计数
  • 原文地址:https://www.cnblogs.com/newAndHui/p/10616669.html
Copyright © 2011-2022 走看看