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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分布式数据库CAP原理

    分布式数据库CAP原理分布式数据库CAP原理CAP简介CAP理论CAP总结CAP简介传统的关系型数据库事务具备ACID:(1)A:原子性(2)C:一致性(3)I:独立性(4)D:持久性分布式数据库的CAP:(1)C(Consistency):强一致性“allnodesseethesamedataatthesametime”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新

    2022年5月12日
    34
  • Oracle中字符串和时间类型的相互转换

    Oracle中字符串和时间类型的相互转换字符串转时间to_date(‘2018-12-05′,’yyyy-mm-ddhh24:mi:ss’)时间转字符串to_char(sysdate,’yyyy-mm-ddhh24:mi:ss’) 

    2022年5月18日
    32
  • SpringBoot是什么?

    SpringBoot是什么?一、SpringBoot是什么?springboot是spring开源组织下的子项目,是spring组件一站式解决方案,主要是简化了使用spring的难度,节省了繁重的配置,提供了各种启动器,开发者能快速上手。二、SpringBoot的优点1独立运行springboot内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,springboot只要…

    2022年8月20日
    5
  • http请求哪几部分_get url长度限制

    http请求哪几部分_get url长度限制HTTP的Get请求URL最大长度各浏览器HTTPGet请求URL最大长度并不相同,几类常用浏览器最大长度及超过最大长度后提交情况如下:IE6.0:url最大长度2083个字符,超过最大长度后无法提交。IE7.0:url最大长度2083个字符,超过最大长度后仍然能提交,但是只能传过去2083个字符。firefox3.0.3…

    2022年8月24日
    6
  • 常见的测试用例设计方法有哪些呢?「建议收藏」

    常见的测试用例设计方法有哪些呢?「建议收藏」知乎问题:常见的测试用例设计方法有哪些呢?有什么比较好的基础理论书籍推荐吗? [我的回答]2018年8月25日测试用例设计技术和方法,其目的是为了解决测试分析与设计过程中碰到的问题,纯粹的理论只是应用技术和方法的基础,但不是目的。测试用例分析与设计过程,需要我们不断的应用结构化思维、发散性思维和可视化思维,以构建系统化的测试分析与设计框架。 我将2011年写的《软件测试设计…

    2022年6月23日
    22
  • win10系统显示打印机未连接到服务器,解决win10提示“Windows无法连接到打印机”的方法…

    win10系统显示打印机未连接到服务器,解决win10提示“Windows无法连接到打印机”的方法…打印机是我们办公室中必备的设备,如今各种打印方式也是层出不穷。最近有用户在使用win10系统进行打印的时候遇到了这样的提示信息:“windows无法连接到打印机”。在更详细的信息提示界面中已经告诉我们是由于本地打印店额后台服务程序没有启用导致的,少数用户在将电脑重新启动之后解决了这个问题,不过大多数的朋友还是得通过手动重启服务才能开始打印。如何才能手动设置这个服务呢,让小编来给大家演示一下吧!方…

    2022年6月11日
    59

发表回复

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

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