zoukankan      html  css  js  c++  java
  • 服务注册与发现【Eureka】- 单机Eureka构建步骤

    构建Eureka Server 端服务注册中心

    新建Module:cloud-eureka-server7001

    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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>yct-cloud-parent</artifactId>
            <groupId>com.yct.springcloud</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>cloud-eureka-server7001</artifactId>
    
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.yct.springcloud</groupId>
                <artifactId>cloud-base-api</artifactId>
                <version>${project.version}</version>
                <scope>compile</scope>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web  -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </dependency>
    
        </dependencies>
    </project>
    POM

    POM中Cloud 1.X 和 Cloud 2.X 的区别:

    YML:

    server:
      port: 7001
    
    eureka:
      instance:
        hostname: localhost  #eureka服务端的实例名字
      client:
        register-with-eureka: false    #表识不向注册中心注册自己
        fetch-registry: false   #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
        service-url:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/    #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
    YML

    主启动类:

      添加注解:@EnableEurekaServer

    package com.yct.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @EnableEurekaServer
    @SpringBootApplication
    public class EurekaServerApplication7001 {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication7001.class,args);
        }
    }
    EurekaServerApplication7001

    测试运行:

     

    Eureka Client 端 将cloud-provider-payment8001 注册进 Eureka Server 成为服务提供者 provider

    修改 模块:cloud-provider-payment8001

    POM:

        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    增加POM依赖

    POM中Cloud 1.X 和 Cloud 2.X 的区别:

    YML:

    eureka:
      client:
        register-with-eureka: true
        fetchRegistry: true
        service-url:
          defaultZone: http://localhost:7001/eureka
    添加YML

    主启动类:

    添加注解:@EnableEurekaClient

    启动测试:

    要先启动EurekaServer,再启动当前客户端。

     

     服务名对应:

     

    Eureka Client 端 将cloud-consumer-order8080 注册进 Eureka Server 成为服务消费者 consumer

    添加POM:

            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    添加POM

    YML:

    server:
      port: 8080
    spring:
      application:
        name: cloud-order-service
    
    eureka:
      client:
        register-with-eureka: true
        fetchRegistry: true
        service-url:
          defaultZone: http://localhost:7001/eureka
    YML

    主启动类:

      添加注解:@EnableEurekaClient

    测试运行:

    要先启动EurekaServer,再启动当前客户端。

     

    访问Consumer接口:

    http://localhost:8080/consumer/payment/get/11

    问题:

      为什么集成了Eureka 后,返回的数据由原来的 JSON 变成了 xml 格式的呢?

    原因:

    集成EurekaClient,会需要jackson-dataformat-xml这个依赖

    jackson-dataformat-xml这个依赖,可以将实体转换为xml也可以转换为json,根据发起请求的request头中Accept来决定

    如上这个请求,application/xml 在最后匹配json的*/ *前面,优先级高过json,所以返回了XML。

    而下面这种方式,就返回了 json。

     

    解决方案1:

    cloud-consumer-order8080 的 pom 中,将包 spring-cloud-starter-netflix-eureka-client 包内的 jackson-dataformat-xml 包排除即可。

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>com.fasterxml.jackson.dataformat</groupId>
                        <artifactId>jackson-dataformat-xml</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    排除 jackson-dataformat-xml 包

    解决方案2:

     不把POM中的 jackson-dataformat-xml 包去掉的前提下,在 cloud-consumer-order8080 的接口中,mapping 注解上添加 produces = { "application/json;charset=UTF-8" }

     

  • 相关阅读:
    Ogre中的旋转变换问题 Vector3 , Quaternion,matrix
    OIS几个重要的类的使用
    Ogre中的向量Vector3的成员方法
    用Ogre画三角形
    pitch yaw roll 的区别
    OGRE中用到的设计模式
    OGRE体系结构(类的继承关系)
    OGRE教程SceneNode, Entity, SceneManager and Get start 的讲解
    Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)
    Asp.Net Mvc2 OA工作流设计思路
  • 原文地址:https://www.cnblogs.com/y3blogs/p/13340727.html
Copyright © 2011-2022 走看看