微服务注册与发现——Eureka

文章目录

  • Eureka使用
    • 引用
    • 配置
    • 启动类标记
    • 访问
    • 微服务注册
      • 微服务工程添加引用
      • 增加配置
      • 启动类增加注解
      • 启动服务注册
    • Eureka Server集群部署
      • 修改配置文件
      • 启动多个eureka实例
      • 微服务注册到多个eureka实例
    • 为Eureka Server添加用户认证
      • 引入spring-security
      • 配置
      • 关闭security的csrf,否则client无法注册
      • client注册
    • Eureka自我保护模式
  • 常见问题
    • 1、Cannot execute request on any known server

服务发现(注册)机制

nodejs的Eureka Client开源实现

在这里插入图片描述
服务发现组件具备功能:
服务注册表
服务注册与服务发现
服务检查

Eureka架构图
在这里插入图片描述

Eureka使用

引用

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

配置

server:port: 8761eureka:client:registerWithEureka: false # 是否将自己注册到Eureka Serverfetch-registry: false # 是否从Eureka Server获取注册信息service-url:defaultZone: http://localhost:8761/eureka/ # 设置与Eureka Server交互的地址,多个地址用,分隔

启动类标记

@SpringBootApplication
@EnableEurekaServer // 声明这是一个Eureka Server
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}

访问

http://localhost:8761/

在这里插入图片描述

微服务注册

微服务工程添加引用

注意添加版本号,否则会下载不下来

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId><version>1.4.7.RELEASE</version>
</dependency>

增加配置

spring:application:name: microservice-provider-user # 用于指定注册到Eureka Server上的应用名称eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/instance:prefer-ip-address: true # 表示将自己的IP注册到Eureka Server

启动类增加注解

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@EnableDiscoveryClient // 声明这是一个Eureka Client

启动服务注册

在这里插入图片描述

Eureka Server集群部署

防止因Eureka Server宕机导致微服务不可用
通过运行多个实例并相互注册的方式实现高可用部署,实例间彼此增量地同步信息,确保所有节点数据一致。

修改配置文件

spring:application:name: microservice-discovery-eureka
---
spring:config:activate:on-profile: peer1 # 指定profile=peer1
server:port: 8761
eureka:instance:hostname: peer1 # 指定当profile=peer1时,主机名是peer1client:serviceUrl:defaultZone: http://peer2:8762/eureka/ # 将自己注册到peer2这个Eureka上面去
---
spring:config:activate:on-profile: peer2
server:port: 8762
eureka:instance:hostname: peer2client:serviceUrl:defaultZone: http://peer1:8761/eureka/

启动多个eureka实例

java -jar microservice-discovery-eureka-3.0.2.jar --spring.profiles.active=peer1
java -jar microservice-discovery-eureka-3.0.2.jar --spring.profiles.active=peer2

在这里插入图片描述
在这里插入图片描述

微服务注册到多个eureka实例

eureka:client:serviceUrl:defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/instance:prefer-ip-address: true # 表示将自己的IP注册到Eureka Server

为Eureka Server添加用户认证

前面的示例均可以匿名访问,可以通过spring-security先登录之后在访问

引入spring-security

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

配置

server:port: 8761eureka:client:registerWithEureka: false # 是否将自己注册到Eureka Serverfetch-registry: false # 是否从Eureka Server获取注册信息service-url:defaultZone: http://user:password123@localhost:8761/eureka/
spring:security:user:name: user # 配置登录的账号password: password123 # 配置登录的密码

关闭security的csrf,否则client无法注册

未设置,client注册会报Cannot execute request on any known server

/*** 高版本的丢弃了** security:*   basic:*    enabled: true* 配置,应该使用以下方式开启* @param http* @throws Exception*/
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception{http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);http.csrf().disable();//注意:为了可以使用 http://${user}:${password}@${host}:${port}/eureka/ 这种方式登录,所以必须是httpBasic,// 如果是form方式,不能使用url格式登录http.authorizeRequests().anyRequest().authenticated().and().httpBasic();return http.build();}
}

client注册

仅需修改注册地址即可,注意和server保持一致

eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka/ # 需要这种格式 http://user:password@EUREKA_HOST:EUREKA_PORT/eureka/

Eureka自我保护模式

https://blog.csdn.net/fengzelun/article/details/117718784

常见问题

1、Cannot execute request on any known server

https://juejin.cn/post/6995434651862958087

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将网页变身移动应用:网址封装成App的完全指南

什么是网址封装&#xff1f; 网址封装是一个将你的网站或网页直接嵌入到一个原生应用容器中的过程。用户可以通过下载你的App来访问网站&#xff0c;而无需通过浏览器。这种方式不仅提升了用户体验&#xff0c;还可利用移动设备的功能&#xff0c;如推送通知和硬件集成。 小猪…

[C#]opencvsharp进行图像拼接普通拼接stitch算法拼接

介绍&#xff1a; opencvsharp进行图像拼一般有2种方式&#xff1a;一种是传统方法将2个图片上下或者左右拼接&#xff0c;还有一个方法就是融合拼接&#xff0c;stitch拼接就是一种非常好的算法。opencv里面已经有stitch拼接算法因此我们很容易进行拼接。 效果&#xff1a; …

信息网络协议基础_IP网络服务质量

文章目录 概述为什么要增加服务质量支持功能?如何表述服务质量?如何区分数据QoS网络服务等级协议综合服务原理区分服务原理PHB综合-区分服务概述 为什么要增加服务质量支持功能? 如何表述服务质量?

NVMe over Fabrics:概念、应用和实现

对于大部分人来说&#xff0c;NVMe over Fabrics&#xff08;简称NVMf&#xff09;还是个新东西&#xff0c;因为其第一个正式版本的协议在今年6月份才发布。但是这并不影响人们对NVMf的关注&#xff0c;因为这项依托于NVMe的技术很可能继续改变存储市场格局。 NVMf的贡献在于…

unity随笔- 2D动画制作animation

1.前提&#xff1a;将连续的动作图片制为图集。 2.在Hierarchy中选中含图集的sprites对象。 3.打开animator组件&#xff0c;点击create创建动画组件 4.添加property选择sprite 5.选择图集需要的部分加入animation。&#xff08;animation使用见animator&#xff09;

AI绘画工具Midjourney绘画提示词Prompt分享

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

Mysql 容易忘的 sql 指令总结

目录 一、操作数据库的基本指令 二、查询语句的指令 1、基本查询语句 2、模糊查询 3、分支查询 4、 分组查询 5、分组查询 6、基本查询总结&#xff1a; 7、子查询 8、连接查询 三、MySQL中的常用函数 1、时间函数 2、字符串函数 3、聚合函数 4、运算函数 四、表…

macos 打开终端提示 You have new mail. 去除方法

这个提示信息是macos里面的mail消息提示, 如果需要查看详细的信息可以在终端输入 mail 命令即可查看所有信息, 这些信息都保存在 /private/var/mail/xxx 文件中 xxx 是你的macos的登录用户名, 要去除这些提示,只需要删除这个文件即可 # 删除mail信息存储文件 sudo rm -rf /…

css实现一个斑马条纹动画,实现一个理发店门口的小转转,进度条动画同理!

css实现一个斑马条纹动画&#xff0c;实现一个理发店门口的小转转 前置基础知识 css背景background的重复渐变属性repeating-linear-gradient() 该属性类似于linear-gradient(),但他会在整个方向上重复渐变以覆盖整个容器 一、先写一个普通渐变例子linear-gradient() &…

代码随想录刷题笔记(DAY4)

今日总结&#xff1a;今天把中心放在前端学习上&#xff0c;最后一个题没有完全理解&#xff0c;明天早起补上吧。勉强算完成任务。 Day 4 01. 两两交换链表中的节点&#xff08;No. 24&#xff09; 题目链接 代码随想录题解 1.1 题目 给你一个链表&#xff0c;两两交换其…

STM32F407ZGT6定时器(学习笔记一)

定时器STM32非常重要的外设&#xff0c;也是比较复杂的外设&#xff0c;下面以STM32F407ZGT6为例记录学习内容&#xff1a;&#xff08;1&#xff09;基本定时功能&#xff0c;&#xff08;2&#xff09;PWM输出功能&#xff0c;&#xff08;3&#xff09;PWM互补死区、多通道移…

【Java开发岗面试】八股文—Java基础集合多线程

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试…