Eureka 集群部署

Eureka 集群部署Eureka集群介绍 注册中心Eureka又称服务中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等。任何一个服务都不能直接去掉用,都需要通过注册中心来调用。通过服务中心来获取服务你不需要关注你调用的项目IP地址,由几台服务器组成,每次直接去服务中心获取可以使用的服务去调用既可。由于各种服务都注册到了服务中心,就有了很多高级功能条件。比如几台服务提供相同服务来做客户端负载均衡(Ribbon);监控服务器调用成功率来做断路器(Hystrix),移除服务列表中的故障点;监控服务调用时间

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

Eureka 集群

介绍 注册中心Eureka

又称服务中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等。

任何一个服务都不能直接去掉用,都需要通过注册中心来调用。通过服务中心来获取服务你不需要关注你调用的项目IP地址,由几台服务器组成,每次直接去服务中心获取可以使用的服务去调用既可。

由于各种服务都注册到了服务中心,就有了很多高级功能条件。比如几台服务提供相同服务来做客户端负载均衡(Ribbon);监控服务器调用成功率来做断路器(Hystrix),移除服务列表中的故障点;监控服务调用时间来对不同的服务器设置不同的权重、智能路有(Zuul)等等。

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server,并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡

在这里插入图片描述

1、Eureka Server

  • Eureka Server 作为一个独立的部署单元,以 REST API 的形式为服务实例提供了注册、管理和查询等操作。同时,Eureka Server 也为我们提供了可视化的监控页面,可以直观地看到各个 Eureka Server 当前的运行状态和所有已注册服务的情况。

2、Service Provider

  • 服务提供方
  • 将自身服务注册到Eureka,从而使服务消费方能够找到

3、Service Consumer

  • 服务消费方
  • 从Eureka获取注册服务列表,从而能够消费服务

Eureka集群部署

  1. 新建一个maven工程,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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.7.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>ink.pog</groupId>
        <artifactId>eurekaserver</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <description>Demo project for Spring cloud</description>
            
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Hoxton.SR4</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    
    
  2. 配置yml

    server:
      # 设置端口号
      port: 7001
    spring:
      application:
        name: eurekaserver
    eureka:
      instance:
    	# 单机hostname为localhost
        hostname: eureka7001.com
        # 如果启用了ip注册地址,那么篡改了hosts文件也没用,会让hostname无效,显示的ip地址
        prefer-ip-address: false
      client:
    	# 是否从Eureka Server获取注册信息
        fetch-registry: true
        # 是否将自己注册到Eureka Server 
    	# 因为这里是集群所以需要将自己注册到Eureka Server,单机则不需要
        register-with-eureka: true
        service-url:
    	  # 配置其他集群的地址进行相互注册
          defaultZone: 	http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    
    

    由于是集群,以及配置了hostname和http://eureka7002.com的写法,所以需要我们去hosts进行配置

    hosts文件的位置在: C:\Windows\System32\drivers\etc

    127.0.0.1 eureka7003.com
    127.0.0.1 eureka7002.com
    127.0.0.1 eureka7001.com
    
  3. 开启对Eureka Server的支持

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

剩下的两个服务中心也是这样配置,就不贴了

提供者配置

  1. 创建一个maven工程,pom跟集群部署的pom类似,只不过要添加数据库之类的东西,这样就不贴了

  2. 配置yml文件

    server:
      port: 8001
    spring:
      application:
    	# 这个实例名很重要,这在以后的消费者与提供者之间相互调用一般都是根据这个name	
        name: producter
      datasource:
        url: jdbc:mysql://localhost/crud?useUnicode=true&characterEncoding=utf-8
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
    
    mybatis:
      mapper-locations: classpath:mapper/*.xml configuration: map-underscore-to-camel-case: true eureka: instance: instance-id: springcloud-eureka-producter prefer-ip-address: true client: fetch-registry: true # 向服务中心注册自己 register-with-eureka: true service-url: # 因为是集群部署,所以需要向所有的集群注册自己 defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/,http://eureka7002.com:7002/eureka/ 
  3. 写提供的方法

    @RestController
    public class EmplyeeController { 
         
    
        @Autowired
        private EmplyeeService emplyeeServiceImpl;
    
        @GetMapping("/empl/get/{id}")
        public Emplyee get(@PathVariable("id")int id){ 
         
            return emplyeeServiceImpl.get(id);
        }
    
        @GetMapping("/empl/get")
        public List<Emplyee> getAll(){ 
         
            return emplyeeServiceImpl.getAll();
        }
    }
    
  4. 开启Eureka client

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

这样一个提供者的服务就配置好,下面贴一个提供者项目的结构
在这里插入图片描述

消费者部署

  1. 创建maven工程,配置pom

  2. 配置yml

    eureka:
      instance:
        instance-id: consumer80
      client:
        register-with-eureka: true
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
        fetch-registry: true
    
  3. 因为是基本RestFul风格,所以需要配置一下RestTemplate以及负载均衡LoadBalanced

    @Configuration
    public class config { 
         
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate(){ 
         
            return new RestTemplate();
        }
    }
    
  4. 写消费者方法

    @RestController
    public class EmplyeeConsumer { 
         
    
        @Autowired
        private DiscoveryClient client; # 获取服务信息类
        
        @Autowired
        private RestTemplate restTemplate; 
        # 这里的前缀就是刚才配置提供者的实例名字,spring.application.name
        private static final String REST_URL_PREFIX = "http://PRODUCTER";
        
        @GetMapping("/empl/get/{id}")
        public Emplyee get(@PathVariable("id")int id){ 
         
           return restTemplate.getForObject(REST_URL_PREFIX+"/empl/get",Emplyee.class);
        }
        
        @GetMapping("/empl/get")
        public List<Emplyee> getAll(){ 
         
            return restTemplate.getForObject(REST_URL_PREFIX + "/empl/get",List.class);
        }
        
        # 获取微服务的信息
        @GetMapping("/info")
        public List<ServiceInstance> info(){ 
         
            List<ServiceInstance> eurekaserver = client.getInstances("EUREKASERVER");
            return eurekaserver;
        }
    }
    
    

运行集群

至此,一个集群的配置就好了,接下运行一下试试,首先启动服务中心

在这里插入图片描述

然后接着启动提供者以及消费者,访问即可

在这里插入图片描述

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

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

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


相关推荐

  • 什么是dom_字母圈术语大全

    什么是dom_字母圈术语大全DOM概述html加载完毕,渲染引擎会在内存中吧html文档生成一个DOM树,getElementById是获取DOM上的元素,然后操作的时候修改的该元素的属性什么是DOM和节点1、DOM由

    2022年8月4日
    4
  • 数学建模及其基础知识详解(化学常考知识点)

    @[TOC]自动根据文章标题生成目录一、综合评价方法根据各评价方法所依据的理论基础,现代综合评价方法大致分为以下四大类:1、专家评价方法2、运筹学与其他数学方法2.1、层次分析法(AHP)2.2、模糊综合评判法(FCE)2.3、数据包络分析法(DEA)3、基于统计和经济的方法3.1、TOPSIS评价法,优化可用熵权法3.2、主次分析法和因子分析法主成分分析法通过克服相关性、重叠性,用较少的变量来代替原来较多的变量,而这种代替可以 反映原来多个变量的大部分信息,这实际上是一

    2022年4月13日
    42
  • 最新超详细虚拟机VMware安装Kali Linux

    最新超详细虚拟机VMware安装Kali Linux作者:seriouszyx独立博客记录了日常学习总结代码均可在Github上找到(求Star)本文讲解如何在虚拟机上安装KaliLinux,希望对大家有所帮助。准备:一台电脑,VMware(VMware安装教程)一、下载系统镜像文件1.首先下载系统镜像,进入kali官网,在Downloads中选择DownloadKaliLinux,如下图所示。…

    2022年4月30日
    167
  • 区块链|CAP原理[通俗易懂]

    区块链|CAP原理[通俗易懂]分布式系统(distributedsystem)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP定理是这方面的基本定理,也是理解分布式系统的起点。一、分布式系统的三个指标ConsistencyAvailabilityPartitiontolerance它们的第一个字母分别是C、A、P。EricBrewer说,这三个指标不可能同时做到。这个结论就叫做CAP定理。二、Partitiontolerance先看Parti

    2022年5月19日
    80
  • jlink 与 swd 接口定义[通俗易懂]

    jlink 与 swd 接口定义[通俗易懂]1.JLink介绍J-Link是SEGGER公司为支持仿真ARM内核推出的JTAG仿真器。J-Link支持所有基于ARM架构的处理器或微控制器配合IAREWAR,ADS,KEIL等集成开发环境进行开发过程中进行单步控制执行调试。J-Link除了可以配合集成开发环境进行调试程序,进行程序下载之外,J-Link还可以单独使用。比如在产品的生产环节中,就可以单独使用J-Link进行固件的下载。JLink,SWD接口定义缺口向左,左边为JLink接口定义,右边为SWD接口定义JTAG

    2022年4月25日
    2.0K
  • A左右ndroid正在使用Uri监视数据库中的更改

    A左右ndroid正在使用Uri监视数据库中的更改

    2022年1月13日
    40

发表回复

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

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