springCould中的Eureka-从小白开始【2】

目录

1.什么是Eureka ❤️❤️❤️

2. 组件❤️❤️❤️

3.单机Eureka配置❤️❤️❤️

4.服务8001服务入住eureka ❤️❤️❤️

5.消费端80入住到eureka ❤️❤️❤️

6.集群Eureka配置 ❤️❤️❤️

7.将Client发布到eureka集群上 ❤️❤️❤️

8.服务端8002集群搭建 ❤️❤️❤️

9.负载均衡 ❤️❤️❤️

10.actuator信息完善❤️❤️❤️

11.服务发现 ❤️❤️❤️


1.什么是Eureka ❤️❤️❤️

Eureka是一个开源的服务发现框架,由Netflix公司开发。它可以用于在分布式系统中,自动注册、发现和管理服务实例。Eureka通过使用RESTful API,使得服务实例可以通过名称进行查找,从而实现了服务之间的通信。Eureka还具有高可用性和故障恢复机制,可以有效地处理服务注册和发现的问题。

2. 组件❤️❤️❤️

Eureka包含两个组件:Eureka ServerEureka Client

  • Eureka Server:提供服务注册服务各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。
  • EurekaClient:通过注册中心进行访问是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳, EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

3.单机Eureka配置❤️❤️❤️

1.创建模块

在父工程下创建子模块

注:jdk版本,maven版本

2.添加pom依赖

用到通用模块,导入依赖

引入eureka服务端依赖

 <dependencies>
        <!--springboot-->
        <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-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--通用配置-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--引入自己的api-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

3.创建主程序类

@EnableEurekaServer:可以将一个普通的 Spring Boot 应用转变为 Eureka 服务器,用于注册和发现其他微服务实例

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

4.改yml

1.修改端口号

2.添加eureka配置

3.注意yml格式

server:
  port: 7001

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

5.测试 

访问配置的地址+ip成功看到eureka界面

4.服务8001服务入住eureka ❤️❤️❤️

1.改pom

添加eureka客户端依赖

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

2.改yml

添加入住eureka的配置信息

eureka:
  client:
    #表示将自己注册到EurekaServer
    register-with-eureka: true
    #是否从EurekaServer抓取已有的配置,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetch-registry: true
    #注入eureka地址
    service-url:
      defaultZone: http://localhost:7001

3.改主启动类

@EnableEurekaClient:将当前应用作为Eureka客户端注册到Eureka服务器。

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

 4.测试

启动8001服务端口,刷新浏览器页面,就会发现服务8001注册到eureka中

5.消费端80入住到eureka ❤️❤️❤️

1.改pom

服务端,消费端,在这里都是相对于eureka而言

因此消费端80相对于eureka也是Client端

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

2.改yml

1.配置服务名称

2.配置入住到eureka的信息

spring:
  application:
    name: cloud-consumer-order
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

3.改主启动类

添加@EnableEurekaClient:入住到eureka

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

4.测试

启动80服务端口,刷新浏览器页面,就会发现服务80注册到eureka中

 

6.集群Eureka配置 ❤️❤️❤️

1.创建模块

雷同7001模块,在创建模块7002,7003

注意:jdk版本,maven版本

2.添加pom依赖

7001,7002,7003都是服务端,所以依赖相同


    <dependencies>
        <!--springboot-->
        <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-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--通用配置-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--引入自己的api-->
        <dependency>
            <groupId>org.example</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--eureka服务端-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

3.修改映射文件

只有一台机器,创建三个域名指向同一个ip模拟三台机器

地址:C:\Windows\System32\drivers\etc下面的hosts

4.修改yml文件

以7001为例

1.添加hostname(hosts里配置的)

2.service-url 在另外两个eureka注入自己

注意:中间用逗号隔开,不要用空格

server:
  port: 7001

eureka:
  instance:
    #eureka服务端的实例名称
    hostname: eureka7001.com
  client:
    #false:表示不向注册中心注册自己
    register-with-eureka: false
    #false:表示自己就是注册中心,维护服务,不需要检测
    fetch-registry: false
    #设置与Eureka server交互的地址查询服务和注册服务都需要依赖这个地址。
    service-url:
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

5.添加主启动类

 注意添加@EnableEureServer

@SpringBootApplication
@EnableEurekaServer//代表eureka服务端注册中心
public class EurekaMain7001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaMain7001.class);
    }
}

6.测试

分别启动三台eureka,并浏览器访问 

7.将Client发布到eureka集群上❤️❤️❤️ 

7.1.将8001发布到eureka集群上 

只需要在yml文件中,将其eureka的注册地址更改为多个即可

注:地址之间用逗号隔开,之间不能有空格

eureka:
  client:
    #表示将自己注册到EurekaServer
    register-with-eureka: true
    #是否从EurekaServer抓取已有的配置,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetch-registry: true
    #注入eureka地址
    service-url:
      defaultZone: http://erureka7001:7001/eureka,http://erureka7002:7002/eureka,http://erureka7003:7003/eureka

7.2.将80发布到eureka集群上 

server:
  port: 80

spring:
  application:
    name: cloud-consumer-order
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://erureka7001:7001/eureka,http://erureka7002:7002/eureka,http://erureka7003:7003/eureka

7.3使用@value标识服务端口 

在controller层使用@value标识端口号

@RestController
@RequestMapping("/payment")
@Slf4j
public class PaymentController {
    @Autowired
    private PaymentService paymentService;

    @Value("${server.port}")
    private String serverPort;

}

7.4测试

启动eureka集群后,先启动8001(服务端相对于80)在启动80,刷新浏览器

可以看到:每台机器上都部署有其他eureka的信息,并且都有8001和80的注册信息

8.服务端8002集群搭建 ❤️❤️❤️

1.创建模块

创建和8001模块一样的模块,注意(如果拷贝的话很肯定识别错误)

2.添加pom依赖

添加和8001一样的pom依赖

3.修改yml文件

修改端口号8002,其余和8001一模一样

4.添加主起动类

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

5.测试

启动eureka集群后分别启动8001,8002;刷新浏览器可以发现一个应用程序有两个服务

9.负载均衡 ❤️❤️❤️

启动eureka集群后,在启动8001,8002服务端,最后启动80消费端。

但是80只能访问8001,因为我们在使用RestTemplate时,固定了访问地址

 public static final String PAYMENT_URL = "http://localhost:8001";
  •  使用负载均衡时,我们只告诉他访问的名称即可
public static final String PAYMENT_URL = "http://COULD-PAYMENT-SERIVCE";
  • 给RestTemplate赋予负载均衡的能力使用@LoadBalanced
@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced//赋予了RestTemplate负载均衡的能力
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

10.actuator信息完善❤️❤️❤️

如何修改IP地址 ,并显示IP端口

修改yml 

添加instance-id修改服务名称,prefer-ip-address:true:访问路径可显示ip 

eureka:
  client:
    #表示将自己注册到EurekaServer
    register-with-eureka: true
    #是否从EurekaServer抓取已有的配置,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetch-registry: true
    #注入eureka地址
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
  #修改服务名称    
  instance:
    instance-id: paymnet8002

11.服务发现 ❤️❤️❤️

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息

1.在controller添加DiscoveryClient

装配DiscoveryClient对象

注意:import org.springframework.cloud.client.discovery.DiscoveryClient;


    @Autowired
    private DiscoveryClient discoveryClient;

2.编写代码

   @GetMapping("/discovery")
    public Object discovery() {
        List<String> services = discoveryClient.getServices();
        for (String element : services) {
            log.info("列表中有:" + element);
        }
        List<ServiceInstance> instances = discoveryClient.getInstances("COULD-PAYMENT-SERVICE");
        for (ServiceInstance instance : instances) {
            log.info(instance.getServiceId() + "\t" + instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri());
        }
        return this.discoveryClient;
    }

3.在主启动类添加@EnableDiscoveryClient

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/257846.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python轴承故障诊断 (八)基于EMD-CNN-GRU并行模型的故障分类

目录 前言 1 经验模态分解EMD的Python示例 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 2.3 故障数据的EMD分解可视化 2.4 故障数据的EMD分解预处理 3 基于EMD-CNN-GRU并行模型的轴承故障诊断分类 3.1 训练数据、测试数据分组&#xff0c;数据分ba…

SpringCloud02

1.在项目中&#xff0c;服务之间的调用是怎么实现的&#xff1f; 1.1基于RestTemplate和LoadBalanced注解&#xff1a; RestTemplate是Spring提供的用于访问RESTful服务的客户端。添加LoadBalanced注解后&#xff0c;RestTemplate会成为一个负载均衡的HTTP客户端&#xff0c;它…

云原生系列2-GitLab和Jenkins

1、GitLab类似github&#xff0c;是个私有仓库 1、GitLab安装&#xff0c;至少8G内存4核cpu # 查找Gitlab镜像 docker search gitlab/gitlab-ce # gitlab镜像拉取 docker pull gitlab/gitlab-ce # 查看镜像 docker images # 本机先建3个目录&#xff0c;为了gitlab容器通过挂…

【web安全】密码爆破讲解,以及burp的爆破功能使用方法

前言 菜某总结&#xff0c;欢迎指正错误进行补充 密码暴力破解原理 暴力破解实际就是疯狂的输入密码进行尝试登录&#xff0c;针对有的人喜欢用一些个人信息当做密码&#xff0c;有的人喜欢用一些很简单的低强度密码&#xff0c;我们就可以针对性的生成一个字典&#xff0c;…

轻量级购物小程序H5产品设计经典样例

主要是看到这个产品设计的不错值得借鉴特记录如下&#xff1a; 不过大多数购物app都大致相同&#xff0c;这个算是经典样例&#xff0c;几乎都可以复制&#xff0c;我第一次使用&#xff0c;感觉和顺畅。看上去产品是经过打磨的&#xff0c;布局非常好。内容也很丰富。支持异业…

【Linux】冯诺依曼体系结构与操作系统及其进程

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解冯诺依曼体系结构与操作系统&#xff0c;掌握…

pytorch中nn.Sequential详解

1 nn.Sequential概述 1.1 nn.Sequential介绍 nn.Sequential是一个序列容器&#xff0c;用于搭建神经网络的模块被按照被传入构造器的顺序添加到容器中。除此之外&#xff0c;一个包含神经网络模块的OrderedDict也可以被传入nn.Sequential()容器中。利用nn.Sequential()搭建好…

AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息

前言&#xff1a; 前提&#xff1a;需要完成我的AWS 知识一创建一个成功运行的目录。 主要两个重要&#xff1a;1.本地windows如何通过SSH的方式连接到Ubuntu实例 2.ldapsearch命令的构成 一 &#xff0c;启动一个新的Ubuntu实例 1.创建一个ubuntu实例 具体创建实例步骤我就不…

useConsole的封装,vue,react,htmlscript标签,通用

之前用了接近hack的方式实现了console的封装&#xff0c;目标是获取console.log函数的执行&#xff08;调用栈所在位置&#xff09;所在的代码行数。 例如以下代码&#xff0c;执行window.mylog(1)时候&#xff0c;console.log实际是在匿名的箭头函数()>{//这里执行的} con…

通过https协议访问Tomcat部署并使用Shiro认证的应用跳转登到录页时协议变为http的问题

问题描述&#xff1a; 在最近的一个项目中&#xff0c;有一个存在较久&#xff0c;并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用&#xff0c;该应用部署在Tomcat服务器上。起初&#xff0c;应用程序可以通过HTTP协议访问&#xff0c;一切运行都没…

力扣面试题 16.19. 水域大小(java DFS解法)

Problem: 面试题 16.19. 水域大小 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该问题可以归纳为一类遍历二维矩阵的题目&#xff0c;此类中的一部分题目可以利用DFS来解决&#xff0c;具体到本题目&#xff08;该题目可以的写法大体不变可参看前面几个题目&#…

XZ_iOS 之 M1 M2 M3的M系列芯片的Mac苹果电脑安装cocoapods

安装的前提&#xff0c;应用程序->终端->右键-显示简介->勾选 使用Rosetta打开&#xff0c;如下图&#xff0c;然后重启终端 安装的顺序如下&#xff1a;Homebrew->rvm->ruby->cocoapods 1、安装Homebrew /bin/bash -c "$(curl -fsSL https://raw.git…

淘宝类目信息API接口获取淘宝商品分类信息API调用说明(含APIkey密钥)

cat_get-获得淘宝分类详情 item_cat_get-获得淘宝商品类目 公共参数 名称类型必须描述keyString是调用key&#xff08;点此获取&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_…

【Mac】flutter项目集成高德定位SDK,获取key

一、获取调试版安全码SHA1 1.进入当前用户文件夹下的~/.android目录 cd ~/.android2.查看 debug.keystore ls3.运行 debug.keystore keytool -list -v -keystore debug.keystore这里报错&#xff1a; The operation couldn’t be completed. Unable to locate a Java Runt…

docker 安装及配置 nginx + tomcat(四):高可用

文章目录 1. 引言2. 高可用架构3. 实际步骤3.1 虚拟机新建系统3.2 安装 keepalived3.3 配置 keepalived3.4 启动 keepalived3.5 验证高可用3.5.1 查看当前效果3.5.2 模拟灾难 4 参考 1. 引言 前情提要&#xff1a; 《docker 安装及配置 nginx tomcat&#xff08;一&#xff0…

安全运营之安全加固和运维

安全运营是一个将技术、流程和人有机结合的复杂系统工程&#xff0c;通过对已有安全产品、工具和服务产出的数据进行有效的分析&#xff0c;持续输出价值&#xff0c;解决安全问题&#xff0c;以确保网络安全为最终目标。 安全加固和运维是网络安全运营中的两个重要方面。 安全…

在本地通过 k8s 部署一个 nginx 镜像

目标 目标:通过 deployment 启动一个 nginx,并且通过浏览器访问。 目的,熟悉并学习一下 k8s 的一些特性,毕竟看文档和实操是两码事。 本地部署 k8s 简单点,也不用 minikube 和 kubeadmin,直接通过 docker desktop 部署 k8s。 下载 docker desktop 下载完成后会自动…

Linux系统之部署Linux管理面板1Panel

一、介绍 1.1简介 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 1.2特点 快速建站&#xff1a;深度集成 Wordpress 和 Halo&#xff0c;域名绑定、SSL 证书配置等一键搞定&#xff1b; 高效管理&#xff1a;通过 Web 端轻松管理 Linux 服务器&#xff0c;包括应用管…

ios备忘录怎么导入华为 方法介绍

作为一个常常需要在不同设备间切换的人&#xff0c;我深知备忘录的重要性。那些突如其来的灵感、重要的会议提醒、甚至是生活中的琐碎小事&#xff0c;我们都习惯性地记录在备忘录里。但当我决定从iPhone转向华为时&#xff0c;一个问题困扰了我&#xff1a;如何将那些珍贵的备…

使用Axure的中继器的交互动作解决增删改查h

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、中继器的交互 1、什么是中继器的交互 2、Axure中继器的交互 3、如何使用中继器&#xff1f; 二…