微服务之Eureka服务注册中⼼

news2024/11/29 2:48:10

关于务注册中⼼服

服务注册中⼼本质上是为了解耦服务提供者和服务消费者,尽可能量使两者联系可控在一定的范围外
1.在父项目下下引入 Spring Cloud 依赖
<dependencyManagement>
<dependencies>
<!-- SCN -->
<dependency>
<groupId> org.springframework.cloud </groupId>
<artifactId> spring-cloud-dependencies </artifactId>
<version> Greenwich.RELEASE </version>
<type> pom </type>
<scope> import </scope>
</dependency>
</dependencies>
</dependencyManagement>
2. 在⽗⼯程【 yx-parent 】的 pom.xml ⽂件中⼿动引⼊ jaxb 的依赖。因为 JDK9 之后默认没有加载该模块,⽽ EurekaServer依赖 jaxb ,所以需要⼿动导⼊,否则 Eureka Server 服务⽆法启动。

<!-- 引⼊ Jaxb 开始 -->
<dependency>
<groupId> com.sun.xml.bind </groupId>
<artifactId> jaxb-core </artifactId>
<version> 2.2.11 </version>
</dependency>
<dependency>
<groupId> javax.xml.bind </groupId>
<artifactId> jaxb-api </artifactId>
</dependency>
<dependency>
<groupId> com.sun.xml.bind </groupId>
<artifactId> jaxb-impl </artifactId>
<version> 2.2.11 </version>
</dependency>
<dependency>
<groupId> org.glassfish.jaxb </groupId>
<artifactId> jaxb-runtime </artifactId>
<version> 2.2.10-b140310.1920 </version>
</dependency>
<dependency>
<groupId> javax.activation </groupId>
<artifactId> activation </artifactId>
<version> 1.1.1 </version>
</dependency>
<!-- 引⼊ Jaxb 结束 -->

3.在父工程创建一个yx-cloud-eureka-9200工程,并引入依赖

<dependencies>
<!-- Eureka Server 依赖 -->
<dependency>
<groupId> org.springframework.cloud </groupId>
<artifactId> spring-cloud-starter-netflix-eureka-server </artifactId>
</dependency>
</dependencies>

4.在创建yx-cloud-eureka-9200的工程下的的resources⽬录下创建application.yml配置⽂件,配置Eureka Server服务端⼝, 服务名等信息。

server:
  port: 9200  # Eureka Server服务端口
spring:
  application:
    name: yx-service-eureka #应用名称,在Eureka中服务的唯一标识id
eureka:
  client: #Eureka Server本身也是Eureka的一个客户端,因为在集群下需要与其他Eureka Server进行数据的同步
    service-url:  # 客户端与Eureka Server交互的地址,如果是集群情况下defaultZone设置为集群下其他的Eureka Server地址,多个地址使用","隔开
      defaultZone: http://YXCloudEurekaServerC:9200/eureka,http://YXCloudEurekaServerD:9201/eureka
    register-with-eureka: true  # 表示是否向Eureka中心注册自己的信息,因为自己就是Eureka Server所以不进行注册,默认为true
    fetch-registry: true # 是否查询/拉取Eureka Server服务注册列表,默认为true
  instance:
    #hostname: localhost # 当前Eureka实例的主机名
    # 使用ip注册,否则会使用主机名注册(此处考虑到对老版本的兼容,新版本经过实验都是ip)
    prefer-ip-address: true
    # 自定义实例显示格式,加上版本号,便于多版本管理,注意是ip-address早期版本是ipAddress
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
6. com.yx.eureka 包下,创建 EurekaApplication9200 启动类

 @EnableEurekaServer 此注解是申明项目是一个Eureka Server

 微服务注册到Eureka\

1.向服务提供者的项目中添加Eureka Client依赖。

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

2.向消费者的项目的application.yml⽂件中配置Eureka服务端信息

eureka:
  client: #Eureka Server本身也是Eureka的一个客户端,因为在集群下需要与其他Eureka Server进行数据的同步
    service-url:  # 客户端与Eureka Server交互的地址,如果是集群情况下defaultZone设置为集群下其他的Eureka Server地址,多个地址使用","隔开
      defaultZone: http://localhost:9200/eureka
    register-with-eureka: true  # 表示是否向Eureka中心注册自己的信息,因为自己就是Eureka Server所以不进行注册,默认为true
    fetch-registry: true # 是否查询/拉取Eureka Server服务注册列表,默认为true
  instance:
    #hostname: localhost # 当前Eureka实例的主机名
    # 使用ip注册,否则会使用主机名注册(此处考虑到对老版本的兼容,新版本经过实验都是ip)
    prefer-ip-address: true
    # 自定义实例显示格式,加上版本号,便于多版本管理,注意是ip-address早期版本是ipAddress
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
3. 修改 yx-service-page(消费者) 项⽬的启动类 ProductApplication ,添加 @EnableDiscoveryClient 注解
package com . yx . page ;
import org . springframework . boot . SpringApplication ;
import org . springframework . boot . autoconfigure . SpringBootApplication ;
import org . springframework . cloud . client . discovery . EnableDiscoveryClient ;
import org . springframework . context . annotation . Bean ;
import org . springframework . web . client . RestTemplate ;
@EnableDiscoveryClient
// @EnableEurekaClient
@SpringBootApplication
public class PageApplication {
public static void main ( String [] args ) {
SpringApplication . run ( PageApplication . class , args );
}
@Bean
public RestTemplate restTemplate () {
return new RestTemplate ();
}
}

 搭建Eureka Server⾼可⽤集群

Win11 操作系统
1. 打开 C 盘下的 C:\Windows\System32\drivers\etc\hosts ⽂件
2. hosts ⽂件中添加 Eureka Server 集群地址的配置
127.0.0.1 YXCloudEurekaServerC 
127.0.0.1 YXCloudEurekaServerD
搭建 Eureka Server 服务【 yx-cloud-eureka-9201 】,把之前搭建好的单个赋值出一份并修改信息

1.导入坐标

<dependencies>
<!-- Eureka Server 依赖 -->
<dependency>
<groupId> org.springframework.cloud </groupId>
<artifactId> spring-cloud-starter-netflix-eureka-server </artifactId>
</dependency>
</dependencies>

2.两份eureka的项目的配置的不同点,及相同点

 声明当前服务为Eureka注册中⼼

 6.修改连接集群的提供者的项目的配置文件

也改为这个 

 Ribbon负载均衡

Ribbon 开发代码 实现
多创建两个提供者,在所有提供者项目下 创建ServerConfigController 类定,定义 ⽅法返回当前微服务端⼝号。
package com . yx . product . controller ;
import org . springframework . beans . factory . annotation . Value ;
import org . springframework . web . bind . annotation . RequestMapping ;
import org . springframework . web . bind . annotation . RestController ;
@RestController
@RequestMapping ( "server" )
public class ServerConfigController {
@Value ( "${server.port}" )
private String serverPort ;
@RequestMapping ( "query_port" )
public String findServerPort () {
return serverPort ;
}
}

在所有提供者的主启动类上,加上注解

 注意提供者的端口号不一样但是名称要一样

 在消费者(page)的项目中的restTemplate()⽅法上添加启动Ribbon负载均衡的注解

4. yx-service-page ⻚⾯静态化微服务中定义调⽤ yx-server-product 服务获取端⼝信息的
queryProductServerPort() ⽅法,同时重构 queryProductById() ⽅法。

 以上负载均衡就配置完了,以下是各种配置信息

 消费者的配置一览

server:
  port: 9100
spring:
  application:
    name: yx-service-page
  datasource:
    url: jdbc:mysql://localhost:3306/yx_sc?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123
eureka:
  client: #Eureka Server本身也是Eureka的一个客户端,因为在集群下需要与其他Eureka Server进行数据的同步
    service-url:  # 客户端与Eureka Server交互的地址,如果是集群情况下defaultZone设置为集群下其他的Eureka Server地址,多个地址使用","隔开
      defaultZone: http://YXCloudEurekaServerC:9200/eureka,http://YXCloudEurekaServerD:9201/eureka
  instance:
    #hostname: localhost # 当前Eureka实例的主机名
    # 使用ip注册,否则会使用主机名注册(此处考虑到对老版本的兼容,新版本经过实验都是ip)
    prefer-ip-address: true
    # 自定义实例显示格式,加上版本号,便于多版本管理,注意是ip-address早期版本是ipAddress
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
## 针对的被调⽤⽅微服务名称,不加就是全局⽣效
#yx-service-product:
#  ribbon:
##    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  # 随机策略
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule # 轮询策略
#    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule # 重试策略

提供者的配置一览

server:
  port: 9001
spring:
  application:
    name: yx-service-product
  datasource:
    url: jdbc:mysql://localhost:3306/yx_sc?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: 123
eureka:
  client: #Eureka Server本身也是Eureka的一个客户端,因为在集群下需要与其他Eureka Server进行数据的同步
    service-url:  # 客户端与Eureka Server交互的地址,如果是集群情况下defaultZone设置为集群下其他的Eureka Server地址,多个地址使用","隔开
      defaultZone: http://YXCloudEurekaServerC:9200/eureka,http://YXCloudEurekaServerD:9201/eureka
    registry-fetch-interval-seconds: 30 #表示客户端每隔多少秒拉去一次最新数据
  instance:
    #hostname: localhost # 当前Eureka实例的主机名
    # 使用ip注册,否则会使用主机名注册(此处考虑到对老版本的兼容,新版本经过实验都是ip)
    prefer-ip-address: true
    # 自定义实例显示格式,加上版本号,便于多版本管理,注意是ip-address早期版本是ipAddress
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
    metadata-map:
      username: admin
      password: 123456
      telphone: 1301112222
      #每隔30秒向注册中心汇报心跳
    lease-renewal-interval-in-seconds: 30
    #超过90秒还没汇报心跳Eureka Server会将该服务信息移除
    lease-expiration-duration-in-seconds: 90

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【记录】SMB|Windows下修改SMB端口并挂载

环境&#xff1a;Window11 使用背景&#xff1a;勒索病毒导致445端口不安全&#xff0c;故而该端口在服务器端被全面禁用了&#xff0c;如需使用SMB服务需要换个SMB服务端口。 方法1&#xff1a;端口转发 winx点开管理员权限的终端&#xff1a; 运行以下指令&#xff0c;检查…

ROS:URDF使用

目录 一、URDF集成Rviz&#xff08;实例讲解&#xff09;1.1需求1.2流程1.3code操作1.3.1创建功能包1.3.2编写 URDF 文件1.3.3在 launch 文件中集成 URDF 与 Rviz1.3.4在 Rviz 中显示机器人模型1.3.5优化 rviz 启动 二、URDF语法详解2.1robot2.1.1属性2.2.2子标签 2.2link2.2.1…

手把手教你玩转内存函数(含模拟实现)

目录 一、memcpy 1.认识memcpy 2.使用memcpy 3.拓展&#xff1a;模拟实现memcpy 二、memmove 1.认识memmove 2.使用memmove 3.拓展&#xff1a;模拟实现memmove 三、memcmp 1.认识memcmp 2.使用memcmp 四、memset 1.认识memset 2.使用memset 3.拓展&#xff1a;模…

【网络编程】应用层协议——HTTP协议

文章目录 一、HTTP协议基本认识二、URL的认识2.1 urlencode和urldecode 三、HTTP协议格式3.1 HTTP请求与响应格式3.2 如何保证请求和响应被应用层完整读取&#xff1f;3.3 请求和响应如何做到序列化和反序列化&#xff1f;3.4 代码验证请求格式3.5 代码验证响应格式3.5.1 telne…

小程序开发及生态丰富,还需要App吗?

微信小程序自2017年推出以来&#xff0c;其生态系统得到了迅速的发展和壮大。作为中国最大的社交平台之一&#xff0c;微信拥有庞大的用户基础。微信小程序作为微信生态系统的一部分&#xff0c;自然而然地吸引了大量用户。据对公开资料进行统计&#xff0c;2021年全网小程序数…

校园跑腿小程序:为学生提供便捷的服务

随着社会的发展和人们生活水平的提高&#xff0c;高等教育越来越受到重视。大学校园不仅是学习的地方&#xff0c;也是学生们日常生活的场所。然而&#xff0c;在繁忙的学业和生活压力下&#xff0c;学生可能经常面临诸如代购、快递、取餐等各种琐碎但繁琐的任务。基于这个需求…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 Cohere 集成搭建智能问答系统

目录 准备工作 主要参数 准备数据 创建 Collection 插入数据 测试问答 本文将演示如何使用 Zilliz Cloud 和 Cohere 搭建基于 SQuAD 数据集 的问答系统。其中,Zilliz Cloud 负责提供向量数据库,Cohere 负责提供获取指定文字向量表示的接口。 准备工作 本示例中的脚…

黑马前端三大件

文章目录 1.html1.1 标题标签1.2 段落标签1.3换行标签1.4 水平分割线标签1.5 文本格式化标签1.6 图片标签1.7 音频标签1.8 视频标签1.9 链接标签的介绍1.10列表标签1.10.1 无序列表1.10.2 无序列表1.10.3 自定义列表 1.11表格属性1.11.1表格的基本标签1.11.2 表格相关属性1.11.…

使用layui滑块slider遇到问题解决:1、加标尺2、兼容移动端拖拽1、多个滑块使用赋值4、切换箭头赋值问题

使用layui框架 滑块组件 slider 时遇到的问题&#xff0c;以下图为例&#xff0c;我创建了一个总滑块和3个滑块&#xff0c;改变总滑块可以控制滑块123&#xff1a; 1、我的需求是加上标尺&#xff0c;layui没有该功能&#xff0c;自己写了一个简单的,代码在下面。 2、移动端…

Linux:输入输出流、重定向、管道命令

相关文章 Linux&#xff1a;chgrp、chown、chmod权限属性更改指令 Linux&#xff1a; 磁盘状态观察命令lsblk、blkid Linux&#xff1a;df、du容量查询指令 1、标准流文件 数据流重定定向由字面上的意思来看&#xff0c;就是将数据定向到其他地方去&#xff0c;事实也是如此…

ModaHub魔搭社区:非结构化数据范式转变和示例

目录 范式转变——非结构化数据 非结构化数据示例 范式转变——非结构化数据 既然我们对结构化数据和半结构化数据有了清晰的理解,现在让我们开始谈谈非结构化数据。与结构化数据和半结构化数据不同,非结构化数据可以采取任何形式,可以有任意大小或尺寸,并需要大量的运行…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 HuggingFace 集成搭建问答系统

目录 准备工作 主要参数 创建 Collection 插入数据 测试问答 本文将演示如何使用 Zilliz Cloud 和 HuggingFace 搭建问答系统。其中,Zilliz Cloud 负责提供向量数据库,HuggingFace 负责提供获取指定文字向量表示的接口。 准备工作 本示例中的脚本需要安装 pymilvus,…

寡头竞争和混合策略均衡

纯寡头的产量竞争 两家企业生产相同的产品,产量是决策变量,市场上只有一种价格。市场需求/Demand:P = 100 - (Q1+Q2) Q 是企业生产的产量 假设生产成本为0 这个案例可能存在的结果 (1)合谋 (2)古诺-纳什均衡 每个企业将它竞争对手的产量水平视为固定的,然后决定自己…

【C++学习笔记】C++如何规范C语言中的类型转换

C的类型转换 1 C语言中类型转换的缺陷2 为什么C要规范C的类型转换3 C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast 1 C语言中类型转换的缺陷 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&a…

【kubernetes系列】Kubernetes之RBAC

概述 k8s的权限控制在实际工作中不那么经常使用&#xff0c;但是却是很重要的&#xff0c;我们需要深入理解才能很好的解决某些问题。在我们现目前的了解中&#xff0c;常用的授权插件有以下几种&#xff1a; Node&#xff08;节点认证&#xff09; ABAC(基于属性的访问控制) …

【UE4 C++】03-新建UE C++工程,新建C++类

UE版本&#xff1a;4.26 步骤 新建一个空白模板工程&#xff0c;选择C项目&#xff0c;选择项目名和项目存储位置&#xff0c;然后点击创建项目。 新建C类 选择父类为Character 命名&#xff0c;选择公有&#xff0c;然后点击创建类 等待编译完成 此时在Visual Studio中可以看…

源启:云原生计算架构的行业实现

7月5日&#xff0c;由工业和信息化部网络安全产业发展中心、中国软件行业协会等单位指导&#xff0c;中国电子主办的“麒麟傲天聚创未来2023操作系统产业大会”在京举行。中电金信研究院副院长陈书华在大会上发表主旨演讲。 陈书华认为数字经济已成为社会发展的重要引擎&#…

【论文解读】基于分层判断的 x264 快速模式选择算法

简介 题目&#xff1a; 基于分层判断的 x264 快速模式选择算法 原文&#xff1a; https://www.nstl.gov.cn/paper_detail.html?id77880ade9a55b3cc527192010242d90e 级别&#xff1a; EI 年份&#xff1a; 2010 年 机构&#xff1a; 上海交通大学 结论&#xff1a; 相比较 HE…

汽车+ChatGPT 车内生活体验再升级

这两年&#xff0c;人工智能工具ChatGPT爆火&#xff0c;在全球掀起了大模型之战。如今&#xff0c;最前沿的自然语言处理大模型应用到了人类的出行工具上&#xff0c;梅赛德斯-奔驰和微软官宣正在合作测试车载ChatGPT人工智能&#xff0c;并将面向约90万车主开启测试&#xff…

对象存储、数据库、NAS、标注数据集,均支持元信息配置|ModelWhale 版本更新

七月中旬&#xff0c;暑气渐浓&#xff0c;ModelWhale 新一轮的版本更新&#xff0c;期待为每个领域的你带来更好的使用体验。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; • 新增 对象存储、数据库、NAS、标注数据的元信息展示&#xff08;专业版…