02.微服务组件 Eureka注册中心

1.Eureka注册中心

服务提供者与消费者:

  • 服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
  • 服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
  • 一个服务是消费者还是提供者,是相对其他服务而言的。

消费者该如何获取服务提供者具体信息?

  • 服务提供者启动时向eureka注册自己的信息eureka保存这些信息
  • 消费者根据服务名称向eureka拉取提供者信息

如果有多个服务提供者,消费者该如何选择?

  • 服务消费者利用负载均衡算法,从服务列表中挑选一个消费者

如何感知服务提供者健康状态?

  • 服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
  • eureka会更新记录服务列表信息,心跳不正常会被剔除
  • 消费者就可以拉取到最新的信息
a. Eureka原理

b. 搭建EurekaServer

创建eureka-server项目,导入依赖

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

编写EurekaApplication启动类,添加自动装配注解

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

编写eureka配置文件

server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
    fetch-registry: false # 关闭默认拉取其他服务信息
c. 服务注册

导入 eureka客户端依赖

<!--eureka客户端依赖-->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

编写配置文件

spring:
  application:
    name: userservice # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

启动多服务实例:

选择服务-> Copy Configuration -> 更改服务名、更改端口:-Dserver.port=????

d. 服务拉取

在order-service完成服务拉取,服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡。

修改访问的url路径,用服务名代替ip:

@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;

@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
    // 1. 查询订单
    Order order = orderMapper.findById(orderId);
    // 2. 利用RestTemplate发起http请求,查询用户
    String url = "http://userservice/user/" + order.getUserId();
    User user = restTemplate.getForObject(url, User.class);
    // 3.封装user到Order
    order.setUser(user);
    return order;
}

在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解:

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
    return new RestTemplate();
}
2.Ribbon 负载均衡
a. 负载均衡原理

b. 负载均衡策略

Ribbon的负载均衡规则是一个叫做IRule的接口来定义的,每一个子接口都是一种规则:

c, 调整负载均衡的规则

通过IRule实现可以修改负载均衡规则:

  • 方式一,注入对象:在消费者可以注入Bean的地方定义一个新的IRule
@Bean
public IRule randomRule() {
	return new RandomRule();
}
  • 方式二,配置文件:在消费者的配置文件中添加新的配置。针对某个微服务而言
userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule  # 负载均衡规则
d. 饥饿加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients: # 指定饥饿加载的服务名称。这里是一个数组,可以指定多个服务
      - userservice

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

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

相关文章

性能测试什么时候开始?性能测试流程介绍

性能测试什么时候开始? 一般在系统功能稳定没有大的缺陷之后开始执行。但前期准备工作可以从系统需求分析时就开始&#xff1a;性能目标制定、场景获取、环境申请等。 一、制定性能测试目标 在特定的并发用户数下测试特定场景的响应时间 在一定的响应时间的要求下来测试特…

初探 Reactor、Proactor 线程模型与 BIO、AIO、NIO

1 前言 工作中或者是技术上经常会遇到 I/O 、线程模型相关的问题&#xff0c;以及同步、异步、阻塞、非阻塞等各种基础问题&#xff0c;之前上学时候的概念认知总是模糊的&#xff0c;一知半解。趁这次了解希望能够更加深入的去了解这方面的知识&#xff0c;于是有了接下来这篇…

怎么远程控制电脑?两种方法轻松实现!

不知道电脑远程控制怎么弄&#xff1f;本文将分享两种简单又实用的远程控制方法&#xff0c;能够让你轻松的远程控制电脑。远程控制一直是一个备受关注的话题&#xff0c;无论在何种场合都能发挥作用。掌握了远程控制的方法&#xff0c;不仅能够快速解决紧急问题&#xff0c;还…

翻译: LLMs新的工作流程和新的机会 New workflows and new opportunities

生成人工智能正以多种方式引领着不仅仅是成本节约&#xff0c;更是收入增长。但是&#xff0c;就像生成人工智能这样的通用技术创造价值的方式有很多&#xff0c;谈论这些方式是很多的。但在这个视频中&#xff0c;我想看看一些我看到的新兴的&#xff0c;或者更常见的走向这种…

23.ACL

ACL 访问控制列表 1.上面为例&#xff0c;路由器R1与R2之间配置静态路由&#xff0c;使得PC1与PC2可以相互ping通 2.接下来要做的就是访问控制 advanced高级的 basic初级的 初级ACL配置 这里先测试初级的 初级的表号范围是2000-2999 这里使用2000 接下来配置规则,规则有…

nacos使用注册中心—springcloud使用

nacos——springcloud使用 nacos注册中心 文章目录 nacos——springcloud使用nacos注册中心1.Windows安装1.1.下载安装包1.2.解压1.3.端口配置1.4.启动1.5.访问 服务注册到NacosNacos分级存储Nacos的负载均衡服务实例的权重配置环境隔离nacos和Eureka对比 1.Windows安装 开发…

数据结构学习笔记(七)搜索结构

文章目录 1. 前言2. 概念3 静态搜索结构3.1 静态搜索表3.2 顺序搜索表3.2.1 基于有序顺序表和顺序搜索和折半搜索 4 二叉搜索树4.1 搜索二叉树的类定义4.2 搜索二叉树的搜索4.3 搜索二叉树的插入4.4 搜索二叉树的删除 5 AVL树5.1 平衡化旋转5.1.1 右旋&#xff1a;LL型状态5.1.…

专业、好用的跨网文件摆渡产品,需要具备哪些功能特性?

为了确保内部核心资产的安全性&#xff0c;很多企业和机构都会选择将网络进行隔离划分&#xff0c;比如内外网隔离&#xff0c;办公网、研发网隔离等。但网络隔离后&#xff0c;在日常工作中&#xff0c;仍存在用户需求把文件数据从内网到外网&#xff0c;从办公网到研发网终端…

中学老师招聘条件和要求

如果想当老师&#xff0c;这些条件和要求你一定得知道&#xff0c;那就是中学老师的招聘条件和要求&#xff01;想成为一名优秀的中学老师吗&#xff1f; 1学历要求&#xff1a;本科及以上学历&#xff0c;师范类专业优先考虑哦&#xff01;毕竟专业的事还是要交给专业的人来做…

JVM-10-类加载

Java虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这个过程被称作虚拟机的类加载机制。 一个类型从被加载到虚拟机内存中开始&#xff0c;到卸载出内存为止&#…

论文笔记:Bilinear Attention Networks

更精简的论文学习笔记 1、摘要 多模态学习中的注意力网络提供了一种选择性地利用给定视觉信息的有效方法。然而&#xff0c;学习每一对多模态输入通道的注意力分布的计算成本是非常昂贵的。为了解决这个问题&#xff0c;共同注意力为每个模态建立了两个独立的注意分布&#x…

Flutter ios 使用ListView 。滚动时 AppBar 改变颜色问题

在Ios 中 列表滚动条向下滚动一段距离后 会导致 AppBar 颜色改变 可以给 AppBar 或者 AppBarTheme。 scrolledUnderElevation: 0.0 属性 全局&#xff1a; MaterialApp(theme: ThemeData(appBarTheme: AppBarTheme(scrolledUnderElevation: 0.0)) ) 局部&#xff1a; App…

wms管理软件在电子行业的应用

wms管理软件在电子行业的应用主要体现在以下几个方面&#xff1a; 优化仓库管理流程&#xff1a;通过WMS系统&#xff0c;电子企业可以优化仓库管理流程&#xff0c;提高仓储效率和准确率&#xff0c;提升客户满意度。 实现精细化管理&#xff1a;WMS系统可以帮助电子企业实现精…

word下划线空格不延长对齐

空格下划线不延长 文件-》选项-》常规与保存-》勾选“为尾部空格添加下划线”-》确定 下划线对齐 首行&#xff1a;把第一行的下划线调到满意位置&#xff0c;按tab键下面的行&#xff1a;删到比首行短一丢丢&#xff0c;按tab键

计算机组成原理-硬布线控制器与微程序控制器

文章目录 内容回顾总览硬布线控制器硬布线控制器的设计分析每个阶段的微操作序列安排微操作时序的原则安排微操作时序-取指周期安排微操作时序-间址周期安排微操作时序-执行周期组合逻辑设计小结 微程序控制器微程序控制器的设计思路微程序控制器的基本结构微程序控制器的工作原…

Jmeter基础和概念(超详细整理)

JMeter 介绍&#xff1a; 一个非常优秀的开源的性能测试工具。 优点&#xff1a;你用着用着就会发现它的重多优点&#xff0c;当然不足点也会呈现出来。 从性能工具的原理划分&#xff1a; Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4个部分&#xff1a…

ChatGPT凉了,打工人的饭碗保住了

您好&#xff01;我是YUAN哥。 如果你问我今年上半年印象最深的事物是什么&#xff1f; YUAN的回答绝对是&#xff1a;ChatGPT。 5天内&#xff0c;ChatGPT用户超过了100万。两个月内&#xff0c;ChatGPT的月活用户超过了1亿。 作为历史上增长最快的应用程序&#xff0c;Cha…

最新鸿蒙HarmonyOS 使用Progress、Toggle开发一个接单界面

Progress 进度条组件&#xff0c;用于显示内容加载或操作处理等进度。 接口 Progress(options: {value: number, total?: number, type?: ProgressType}) Toggle组件提供勾选框样式、状态按钮样式及开关样式。 接口 Toggle(options: { type: ToggleType, isOn?: boolean …

系统培训方案(直接套用)

1. 培训概述 2. 培训目的 3. 培训对象及要求 3.1. 培训对象 3.2. 培训人员基本要求 4. 培训方式 5. 培训内容 6. 培训讲师 7. 培训教材 8. 培训质量保证 8.1. 用户培训确认报告 8.2. 培训疑问解答 软件相关资料全获取&#xff1a;软件项目开发全套文档下载-CSDN博客

css3实现类似地图定位循环扩散光圈效果

1.效果图,重点opacity,animation,transform:scale 2.html <div class"icon-warnCom"><icon class"icon-warns"><i class"dot"></i><i class"pulse"></i></icon></div><div class…