Eureka集群环境搭建

Eureka集群环境搭建前言:Eureka已经停止更新了,在新的项目中,不推荐使用,通过对周阳老师视频的学习,本篇文章主要是简单介绍下Eureka,以及如何搭建集群环境的Eureka,让大家对Eureka有个初步的了解。1.什么是EurekaEureka是Netflix开发的,一个基于REST服务的,服务注册与发现的组件,以实现中间层服务器的负载平衡和故障转移。它主要包括两个组件:EurekaServer和EurekaClientEurekaClient:一个Java

大家好,又见面了,我是你们的朋友全栈君。

前言: Eureka已经停止更新了,在新的项目中,不推荐使用,通过对周阳老师视频的学习,本篇文章主要是简单介绍下Eureka,以及如何搭建集群环境的Eureka,让大家对Eureka有个初步的了解。

1.什么是Eureka

    Eureka 是 Netflix 开发的,一个基于 REST 服务的,服务注册与发现的组件,
以实现中间层服务器的负载平衡和故障转移。
    它主要包括两个组件:Eureka Server 和 Eureka Client   
    Eureka Client:一个Java客户端,用于与 Eureka Server 的交互  
    Eureka Server:提供服务注册和发现的能力(通常就是微服务中的注册中心)。
    服务在Eureka上注册,然后每隔30秒发送心跳来更新它们的租约。如果客户端不
能多次续订租约,那么它将在大约90秒内从服务器注册表中剔除。注册信息和更新被
复制到集群中的所有eureka节点。来自任何区域的客户端都可以查找注册表信息(每
30秒发生一次)来定位它们的服务(可能在任何区域)并进行远程调用。

2. Eureka集群项目搭建

   该示例主要包括4个maven项目,1个订单项目--asc-consumer-order80,2个支付
项目--asc-provider-payment8001,asc-provider-payment8002,2个eureka集群
项目--asc-eureka-server7001,asc-eureka-server7002 。

2.1 遵循以下原则来新建maven项目

1.新建module
2.修改pom.xml
3.新增application.yml文件
4.新建main启动类
5.编写业务类

2.2 新建订单项目

2.2.1 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>aspire-springcloud</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>asc-provider-payment8002</artifactId>
    <dependencies>
        <!--eureka-client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>
</project>

2.2.2 application.yml文件为

server:
port: 80
spring:
  application:
    name: asc-consumer-order
eureka:
  client:
    #表示是否将自己注册进EurekaServer默认为true。
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群
    必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #单机版
      #defaultZone: http://localhost:7001/eureka
      # 集群版
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  instance:
    instance-id: order80
    #访问路径可以显示IP地址
    prefer-ip-address: true

2.2.3 业务类为

@RestController
@Slf4j
public class OrderController {
    public static final String PAYMENT_URL = "http://ASC-PROVIDER-PAYMENT";
    @Autowired
    private RestTemplate restTemplate;
    @GetMapping(value = "/consumer/order/getPayMent")
    public String getPayMent(){
        String result  = restTemplate.getForObject(PAYMENT_URL+"/order/getPayMent",String.class);
        return  result;
    }
}

2.3 新建两个端口号不同的支付项目

2.3.1 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>aspire-springcloud</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>asc-provider-payment8001</artifactId>
   <dependencies>
       <!--eureka-client-->
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-actuator</artifactId>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-devtools</artifactId>
           <scope>runtime</scope>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <optional>true</optional>
       </dependency>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
       </dependency>
   </dependencies>
</project>

2.3.2 application.yml文件为

server:
  port: 8001
spring:
  application:
    name: asc-provider-payment
eureka:
  client:
    #表示是否将自己注册进EurekaServer默认为true。
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #单机版
      #defaultZone: http://localhost:7001/eureka
      # 集群版
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  instance:
    instance-id: payment8001
    #访问路径可以显示IP地址
    prefer-ip-address: true

2.3.3 业务类为

@RestController
@Slf4j
public class PaymentController {
    @Value("${server.port}")
    private String port;
    @GetMapping(value = "/order/getPayMent")
    public String getPayMent(){
        return  port;
    }
}

2.4 新建两个端口号不同的eureka服务端项目

2.4.1 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>aspire-springcloud</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>asc-eureka-server7001</artifactId>
    <dependencies>
        <!--eureka-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!--boot web actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般通用配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <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>

2.4.2 application.yml文件为

server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是
    维护服务实例,并不需要去检索服务
    service-url:
      #集群指向其它eureka
      defaultZone: http://eureka7002.com:7002/eureka/

2.5 测试

启动所有项目,在浏览器输入http://eureka7001.com:7001/,可以看到下图
在这里插入图片描述
在浏览器输入http://eureka7002.com:7002/,可以看到下图
在这里插入图片描述
说明3个项目都已经注册到eureka服务端了,通过访问订单项目,看看是否能够通过eureka找到支付项目,在浏览其中输入http://127.0.0.1/consumer/order/getPayMent,
浏览器显示的页面为在这里插入图片描述
在这里插入图片描述
访问成功,Eureka集群环境搭建完毕。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137504.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 联想笔记本如何开启VT虚拟化技术?_联想拯救者怎么进入bios

    联想笔记本如何开启VT虚拟化技术?_联想拯救者怎么进入bios虚拟化技术支持,需几个方面的条件支持:芯片组自身支持、BIOS提供支持、处理器自身支持、操作系统支持。操作系统方面,主流操作系统均支持VMM管理,因此无需考虑。而芯片组方面,从Intel945(

    2022年8月4日
    15
  • tail -f 实时查看日志文件 linux查看日志后100行

    tail -f 实时查看日志文件 linux查看日志后100行tail-f实时查看日志文件tail-f日志文件logtail-f-n100catalina.outlinux查看日志前100行按ctrl+c退出

    2022年6月3日
    71
  • 动态规划——背包问题(详解)

    动态规划——背包问题(详解)动态规划是我最早接触的算法,一开始非常简单,固定模板题,后来愈发愈发难起来了,条件,状态压缩等等,难点主要是,状态怎么表示,状态转移方程怎么写,这篇文章将会从背包五大问题详解,希望能帮助到大家去类比,思考其他动态规划题目。首先先来看看动态规划的定义:动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。

    2022年7月26日
    23
  • Winform开发常用控件之Checkbox和CheckedListBox

    Winform开发常用控件之Checkbox和CheckedListBoxWinform的开发基本都是基于控件事件的,也就是事件驱动型的。多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法1、直接放置Checkbox,并获取Checkbox的值上图做法也非常简单,就

    2022年7月2日
    29
  • 网页设计实现留言板_有关留言板界面的设计

    网页设计实现留言板_有关留言板界面的设计web网页设计期末大作业_留言板制作.doc本科学生综合性实验报告姓名___李朝彭__学号_______1341004242___学院________信息学院_专业软件工程班级_13F_课程名称《Web应用开发技术》实验名称综合性作品设计—留言板_指导教师_______白磊_______________开课学期2014至2…

    2025年6月25日
    2
  • idea 2022.01.4激活码(注册激活)2022.02.14

    (idea 2022.01.4激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4KDD…

    2022年4月1日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号