一、开发环境window10微服务注册中心搭建—Eureka

这篇具有很好参考价值的文章主要介绍了一、开发环境window10微服务注册中心搭建—Eureka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简述:Eureka 是天生集群的,搭建配置相当简单:不论你有多少的机器部署,只要相互之间指定对方的注册中心地址就可以了,而多个 Eureka Server 之间是通过复制的方式完成注册服务的同步,遵循AP原则。

windows安装eureka,微服务,eureka,微服务,java

windows安装eureka,微服务,eureka,微服务,java

优点:

  1. 从设计角度来看,Eureka可以说是无懈可击,注册中心、提供者、调用者边界清晰通过去中心化的集群支持保证了注册中心的整体可用性
  2. 可以运行多个实例来构建集群,解决单点问题。但不同于 ZooKeeper 的选举 leader 的过程,Eureka Server 采用的是Peer to Peer 对等通信。这是一种去中心化的架构,无 master/slave 之分,每一个 Peer 都是对等的。在这种架构风格中,节点通过彼此互相注册来提高可用性,每个节点需要添加一个或多个有效的 serviceUrl 指向其他节点。每个节点都可被视为其他节点的副本。因此,Eureka可以很好的应对因网络故障导致部分节点失去联系的情况。

缺点:

1.Eureka属于应用内的注册方式,对应用的侵入性太强,且只支持Java应用。

eureka集群注册中心的搭建以及测试:

搭建三个注册中心(也可以多个或者两个,因为eureka集群是p2p的,并不是选举模式,故可随意增加数量且搭建简单)

简而言之,首先搭建父项目springcloud用于统一管理包,然后创建springcloud_eureka的顶级项目,在该项目下创建三个注册中心eureka1、eureka2、eureka3以及测试用的生产者项目provider以及消费者项目consumer,测试注册中心是否正常。

整体目录结构如下:

windows安装eureka,微服务,eureka,微服务,java

  1. 首先创建springcloud项目并在其创建子项目springcloud-eureka项目(该项目下pom文件保持创建时默认配置即可),并在springcloud项目的pom文件中添加以下配置:

<!--spring boot-->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.11</version>
    <relativePath/>
</parent>
<!--Spring Cloud-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

2.然后在springcloud-eureka项目下创建三个注册中心项目,并在pom文件中添加以下配置,同时对于三个注册中心的application配置需要稍微修改其中几个配置项:

Pom文件添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>


    <!--eureka-server-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>


</dependencies>

Application.yml配置文件添加以下:

server:
  port: 8761

eureka:
  instance:
    # 配置主机名,请在【Host】文件中进行主机名与本机ip的映射配置
    hostname: eureka-server1
    # 显示 ip 地址,代替显示主机名
    prefer-ip-address: true
    # 所注册服务实例名称的显示形式
    instance-id: ${eureka.instance.hostname}:${server.port}
    # 每隔 3 秒发一次心跳包
    lease-renewal-interval-in-seconds: 3
    # 如果 15 秒没有发送心跳包,就让 eureka 把自己从服务列表中移除
    lease-expiration-duration-in-seconds: 15
  client:
    service-url:
      # 想要搭建 eureka 集群,需要将自己注册到其它的 eureka 中
      # 因此这里需要配置其它 eureka 地址,多个地址以英文逗号分隔
      defaultZone: http://eureka-server2:8762/eureka,http://eureka-server3:8763/eureka
    # 是否将自己的路径注册到 eureka 上
    register-with-eureka: true
    # 是否需要从 eureka 中抓取路径
    fetch-registry: true
  server:
    # 关闭 eureka 自我保护,当注册的服务未及时发送心跳时,自动移除服务
    enable-self-preservation: false
    # eureka 检查服务是否存在的时间间隔(毫秒)
    eviction-interval-timer-in-ms: 5000
  dashboard:
    enabled: true
    # eureka 监控页面路径 默认访问: http://地址:端口
    path: "/"

# 集群需要使用相同的 application 名称
spring:
  application:
    name: eureka-server-cluster

#actuator——springboot四大核心程序监控器配置
# actuator 监控配置
management:
  #actuator端口 如果不配置做默认使用上面8080端口
  server:
    port: 7761
  info:
    env:
      enabled: true
  endpoints:
    web:
      exposure:
        #默认值访问health,info端点  用*可以包含全部端点
        include: "*"
      #修改访问路径 2.0之前默认是/; 2.0默认是/actuator可以通过这个属性值修改
      base-path: /actuator
  endpoint:
    shutdown:
      enabled: true #打开shutdown端点
    health:
      show-details: always #获得健康检查中所有指标的详细信息

info:
  app.name: eureka注册中心1机
  app.model: eureka
  app.desc: eureka集群中的第一台机
  company.name: dogquan
  build.version: eureka 3.1.2

启动类记得添加;@EnableEurekaServer

windows安装eureka,微服务,eureka,微服务,java

关于eureka-server1 需要在host文件中进行映射,同理其它两个中心。类比eureka1中心的创建,相继可创建集群中其它两个中心,创建完后先后启动三个注册中心,访问地址http://eureka-server1:8761即可访问到eureka监控中心的相关信息。包括注册的消费者,提供者以及集群的其它两个注册中心。

3.最后在springcloud-eureka项目下相继又创建生产者provider以及consumer消费者项目进行测试注册中心的可用性(消费者又可以是生产者,两者基于服务的供给相互切换身份):

生产者:

windows安装eureka,微服务,eureka,微服务,java

Pom文件中添加以下依赖:

<dependencies>
    <!--spring boot web-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--eureka-client-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

Application.yml配置文件添加以下配置:

server:
  port: 8200

eureka:
  instance:
    # 配置主机名,请在【Host】文件中进行主机名与本机ip的映射配置
    hostname: provider_service
    # 显示 ip 地址,代替显示主机名
    prefer-ip-address: true
    # 所注册服务实例名称的显示形式
    instance-id: ${eureka.instance.hostname}:${server.port}
    # 每隔 3 秒发一次心跳包
    lease-renewal-interval-in-seconds: 3
    # 如果 15 秒没有发送心跳包,就让 eureka 把自己从服务列表中移除
    lease-expiration-duration-in-seconds: 15
  client:
    service-url:
      # 将当前 springboot 服务注册到所有的 eureka 中,多个地址以英文逗号分隔
      defaultZone: http://eureka-server1:8761/eureka,http://eureka-server2:8762/eureka,http://eureka-server3:8763/eureka
    # 是否将自己的路径注册到 eureka 上
    register-with-eureka: true
    # 是否需要从 eureka 中抓取路径
    fetch-registry: true

# 集群需要使用相同的 application 名称
spring:
  application:
    name: provider-App

创建controller层并添加以下代码:

@RequestMapping("/provider")
@RestController
public class ProviderController {

    @RequestMapping("/getdata/{id}")
    public Map GetData(@PathVariable("id") int id) {

        Map result = new HashMap();
        result.put("status",0);
        result.put("msg","success");
        result.put("get_id_value",id);
        result.put("version", UUID.randomUUID().toString());

        return result;
    }
}

在启动类Provider上记得添加:@EnableEurekaClient

@EnableEurekaClient

@SpringBootApplication
public class Provider {
    public static void main(String[] args) {
        SpringApplication.run(Provider.class,args);
    }
}

消费者:

windows安装eureka,微服务,eureka,微服务,java

Pom文件添加以下依赖:

<dependencies>
    <!--spring boot web-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- eureka-client -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

Application.yml配置中添加以下:

server:
  port: 8100

eureka:
  instance:
    # 配置主机名,请在【Host】文件中进行主机名与本机ip的映射配置
    hostname: consumer_service
    # 显示 ip 地址,代替显示主机名
    prefer-ip-address: true
    # 所注册服务实例名称的显示形式
    instance-id: ${eureka.instance.hostname}:${server.port}
    # 每隔 3 秒发一次心跳包
    lease-renewal-interval-in-seconds: 3
    # 如果 15 秒没有发送心跳包,就让 eureka 把自己从服务列表中移除
    lease-expiration-duration-in-seconds: 15
  client:
    service-url:
      # 将当前 springboot 服务注册到所有的 eureka 中,多个地址以英文逗号分隔
      defaultZone: http://eureka-server1:8761/eureka,http://eureka-server2:8762/eureka,http://eureka-server3:8763/eureka
    # 是否将自己的路径注册到 eureka 上
    register-with-eureka: true
    # 是否需要从 eureka 中抓取路径
    fetch-registry: true

# 集群需要使用相同的 application 名称
spring:
  application:
    name: consumer-App

增加restTemplateConfig用于简化调用rest接口方式(主要方便测试):

@Configuration
public class RestTemplateConfig {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        // RestTemplate 简化了调用 Restful 接口的开发方式
        return new RestTemplate();
    }
}

增加controller层:

@RequestMapping("/consumer")
@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/getdata/{id}")
    public Map GetData(@PathVariable("id") int id) {

        //使用服务在 eureka 上注册的 application 名称代替 ip 和端口号
        String url = "http://PROVIDER-APP/provider/getdata/" + id;
        Map result = restTemplate.getForObject(url, Map.class);
        return result;
    }
}

同理生产者,在启动类中亦需要记得:@EnableEurekaClient

最后访问浏览器中访问生产者请求地址或者消费者请求地址,成功访问即可。

备注:actuator组件为程序监控,相关配置见于eureka注册服务的配置文件application,同时需要在pom文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

每一个服务都可添加该组件,主要用于监控程序的相关信息,可以在eureka的监控页面对应的info看到自定义的info信息(配置在application配置文件,详情请自行;同时,注意生产环境中如果有使用该组件一定要做相关的权限访问控制,不然会暴露系统内部各种信息,信息泄漏的风险极大。相关学习地址:Spring boot——Actuator 详解_actuator springboot_奋斗喝咖啡的博客-CSDN博客)文章来源地址https://www.toymoban.com/news/detail-755400.html

到了这里,关于一、开发环境window10微服务注册中心搭建—Eureka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Dubbo和Nacos搭建微服务的配置中心和服务注册中心

    1.添加nacos依赖 2.配置application.properties PS:nacos2.0除了需要8848的端口之外,还新增了端口+1000的新端口用于客户端和服务端GRPC通信的端口,所以如果是自己部署的nacos需要放开这俩个端口,服务才可以启动成功。 3.配置类 3.1 添加Spring Cloud原生注解 @EnableDiscoveryClient 3.2 客户端服

    2024年02月16日
    浏览(57)
  • SpringCloud搭建Eureka服务注册中心(六)

    前面说过eureka是c/s模式的  server服务端就是服务注册中心,其他的都是client客户端,服务端用来管理所有服务,客户端通过注册中心,来调用具体的服务; 我们先来搭建下服务端,也就是服务注册中心; project xmlns=\\\"http://maven.apache.org/POM/4.0.0\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSche

    2024年02月10日
    浏览(63)
  • Springboot搭建微服务案例之Eureka注册中心

    放一些pojo类 (1)整合mybatis dao层 创建 dao 接口的映射文件还有 mybatis 的核心配置文件 配置 MyBatis 的类型别名,简化 MyBatis 映射文件中的配置  (2)Service 使用 RestTemplate 这个 Java 客户端组件来实现服务的远程调用。所以我们需要将 RestTemplate 使用 Java 配置类进行注入: 这里

    2024年02月05日
    浏览(47)
  • Nacos 注册中心下载到搭建详细步骤【微服务】

    Nacos 是阿里的产品,现在是 SpringCloud 中的一个组件。它的功能要比 Eureka 更加丰富,在国内比较受欢迎。 百度网盘下载链接: https://pan.baidu.com/s/1XLn7hGp2bHBx7ICvKELtzQ?pwd=dju6 Nacos 官网下载: https://nacos.io/ ① 点击前往 Github Github 页面打不开的可以下一个加速器,我用的 Watt Toolk

    2024年02月03日
    浏览(50)
  • day10-Spring Cloud Alibaba Nacos-服务注册与配置中心

    官网:https://github.com/alibaba/nacos,Nacos官方中文手册 Nacos:Spring Cloud Alibaba服务注册与配置中心(非常详细) (biancheng.net) Spring Cloud Alibaba系列-一文读懂Nacos原理 - 掘金 (juejin.cn) Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服

    2024年02月08日
    浏览(57)
  • 【SpringCloud入门】-- Nacos快速入门之搭建服务与注册中心

    目录 前言:  1.Nacos的下载与安装 2. 去MySQL建立一个名为nacos的数据库 3.介绍配置文件,conf目录下的 application.properties 4.nacos启动 5. nacos作为注册中心的作用 6.建立一个项目,实现向命名空间注册 前言: 上文我们已经简单介绍了一下Nacos,现在我们一起来动手搭建一个Nacos的注

    2024年02月09日
    浏览(39)
  • Spring Cloud 使用 k8s 作为注册中心 开发环境 和 生产环境

    因为 k8s 本身就有拥有注册中心,和配置中心的功能。如果还是用 Nacos、Eureka、Consul 之类的注册中心组件,就有点冗余了。当然这些组件还是可以继续用的。 所以,本教程,教授 Spring Cloud 使用 k8s 的注册中心。在开发环境和生产环境 的教程! 下面以一个最简单的 服务消费

    2024年02月15日
    浏览(61)
  • nacos2.1.1版本,作为注册中心,配置中心如何使用,nacos服务端启动,微服务搭建,nacos集群化部署

    关于nacos 相信大多数人一样,在接触微服务的时候知道有Netflix系列和alibaba系列 但是Netflix这一套如今由于部分组件不在开源,又有alibaba这一套的出现,市面上,alibaba系列微服务架构已经是最火热的了,而nacos则是alibaba系列组件充当服务注册发现和配置中心的角色 说白了,就是将每个

    2024年02月03日
    浏览(49)
  • 【Spring Cloud】深入探索 Nacos 注册中心的原理,服务的注册与发现,服务分层模型,负载均衡策略,微服务的权重设置,环境隔离

    在微服务架构中,服务注册中心是整个体系中的关键组件之一。它负责服务的注册、发现和管理,为微服务之间的通信提供了基础设施。在这方面,Nacos(Namespace Aware Clustered Object Storage)作为一种服务发现和配置管理系统,提供了丰富的功能,旨在简化微服务架构中的服务注

    2024年02月06日
    浏览(214)
  • window10环境下搭建ros

    vs2022下载地址 chocolatey是windows下的一个包管理工具,下载ros相关的包都采用这个工具。 安装过程:在菜单栏中搜索 x64 Native Tools Command Prompt for VS 2022 (2),然后右击选择管理员运行,输入: 确保您在C盘中有10GB的可用空间,用于安装ROS系统。 还是以管理员方式打开 x64 Native T

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包