SpringCloud学习路线(3)—— Eureka注册中心

一、导引

服务调用出现的问题

  • 服务调用采取的请求地址是静态的,当我们使用服务集群时,很容易造成只能调用固定的微服务上的接口。
  • 多个提供者,消费者的使用对象无法确定
  • 消费者无法得知提供者的状态

二、Eureka注册中心

(一)作用:
在这里插入图片描述

  • 消费者如何获取服务提供者具体信息
    • 服务提供者启动时向eureka注册自己的信息
    • eureka保存提供者信息
    • 消费者根据服务名称向eureka拉取提供者信息
  • 如果有多个服务提供者,消费者该如何选择
    • 服务消费者利用负载均衡算法,从服务列表中挑选一个
  • 消费者如何感知服务提供者健康状态
    • 服务提供者每隔30s向EurekaServer发送心跳请求,报告健康状态
    • eureka更新记录服务列表信息,心跳不正常会被剔除
    • 消费者拉取最新信息

(二)、搭建Eureka注册中心

1、引入spring-cloud-starter-netflix-eureka-server

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

2、编写启动类,添加@EnableEurekaServer注解
3、添加application.yml

server:port: 10080 #服务端口spring:application:name: eurekaserver #服务名称
eureka:client:serverice-url:defaultZone: http://127.0.0.1:10080/eureka/ #地址信息

(三)服务注册

1、添加eureka客户端依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>sprin-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2、在提供者的配置文件中,添加配置信息

server:port: 10080 #服务端口spring:application:name: userservice#服务名称
eureka:client:serverice-url:defaultZone: http://127.0.0.1:10080/eureka/ #地址信息

(四)服务拉取

服务拉取是基于服务名称获取服务列表,容纳后对服务列表做负载均衡.。

1、修改Service实现类,访问路径改为String url = "服务名" + order.getUserId

2、对RestTemplate添加负载均衡注释

@Bean
@LoadBalanced //负载均衡
public RestTemplate restTemplate(){return new RestTemplate();
}

(五)Ribbon 负载均衡

1、负载均衡的原理

负载均衡流程

在这里插入图片描述
Ribbon负载均衡实现过程
在这里插入图片描述

2、负载均衡的策略 IRule

(1)负载均衡策略表

内置负载均衡规则类规则描述
RoundRobinRule

简单轮询服务列表来选择服务器。(默认)

AvailabilityFilteringRule

对以下两种服务器忽略:

(1)在默认情况下,服务器如果3次连接失败,则被设置为“短路”。“短路”状态将持续30s,若无法连接,则增加短路持续时间。

(2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其省略,并发连接数上限,可由客户端的【clientName】、【clientConfigNameSpace】、【ActiveConnectionsLimit】进行配置

WeightedResponseTimeRule

为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重越小。这个规则会随机选择服务器,这个权重会影响服务器的选择。

ZoneAvoidanceRule

以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解一个机房,一个机架等。而对Zone内多个服务做轮询。

BestAvailablerRule

忽略短路服务器,并选择并发数较低的服务器

RandomRule

随机选择一个可用服务器

RetryRule

重试机制的选择逻辑

(2)负载均衡规则修改

方式一:在启动类中定义一个新的IRule

@Bean
public IRule randomRule(){return new RandomRule();
}

方式二:在配置文件中修改规则

userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #随机负载均衡规则

3、饥饿加载

Ribbon默认采用 懒加载,即【第一次访问时才会去创建LoadBalanceClient】,请求时间会很长。

(1)饥饿加载的作用: 在项目启动时创建,降低第一次访问的耗时。
(2)配置饥饿加载:

ribbon:eager-load:enabled: true #开启饥饿加载clients: - userservice #指定多个服务进行饥饿加载- XXservice

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

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

相关文章

【Vue】day02-Vue基础入门

目录 day02 一、今日学习目标 1.指令补充 2.computed计算属性 3.watch侦听器 4.综合案例 &#xff08;演示&#xff09; 二、指令修饰符 1.什么是指令修饰符&#xff1f; 2.按键修饰符 3.v-model修饰符 4.事件修饰符 三、v-bind对样式控制的增强-操作class 1.语法…

文件IO_文件截断_ftruncate,truncate(附Linux-5.15.10内核源码分析)

目录 1.为什么需要文件截断&#xff1f; 2.truncate函数介绍 2.1 truncate函数 2.2 truncate函数内核源码分析 2.3 truncate函数使用示例 3.ftruncate函数介绍 3.1 ftruncate函数 3.2 ftruncate函数内核源码分析 3.3 ftruncate函数使用示例 3.4 ftruncate和文件偏移量…

java学习路程之篇十、知识点、数组介绍、二维数组介绍、静态初始化、访问元素、遍历元素、动态初始化、内存图、数组常见问题

文章目录 01、数组介绍02、数组静态初始化03、数组元素访问04、数组遍历操作05、数组动态初始化06、数组内存图07、数组常见问题08、二维数组介绍09、二维数组静态初始化10、二维数组遍历11、二维数组动态初始化12、二维数组内存图 01、数组介绍 02、数组静态初始化 03、数组元…

Redis可视化工具(Redis Desktop Manager)

redis是我们平时开发工作中经常用到的非关系型数据库&#xff0c;常用于做数据缓存&#xff0c;分布式锁等。 为了更方便的使用redi&#xff0c;这里给大家推荐一款可视化工具&#xff1a;Redis Desktop Manager。 1.下载与安装 直接到gihub下载&#xff0c;地址 Release 0.…

Python分布式任务队列Celery

一、分布式任务队列Celery介绍 Python celery是一个基于Python的分布式任务队列&#xff0c;主要用于任务的异步执行、定时调度和分布式处理。它采用了生产者/消费者模式&#xff0c;通过消息中间件实现多个工作者进程之间的协作。 Python celery的架构主要包括以下组件&…

【图像处理OpenCV(C++版)】——5.6 图像平滑之联合双边滤波

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

【kubernetes系列】kubernetes之计算资源管理

资源类型 在 Kubernetes 中&#xff0c;Node 提供资源&#xff0c;而 Pod 使用资源。其中资源分为计算&#xff08;CPU、Memory、GPU&#xff09;、存储&#xff08;Disk、SSD&#xff09;、网络&#xff08;Network Bandwidth、IP、Ports&#xff09;。这些资源提供了应用运行…

EasyCVR告警类型设置后首页需要刷新才能更新的问题优化

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;可支持多协议、多类型设备接入&#xff0c;包括&#xff1a;NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力&#xff0c;可在复杂的网络环境中&#xff0c…

Appium-Python-Client 源码剖析 (一) driver 的元素查找方法

目录 前言 源码版本:0.9 结构图&#xff1a; mobileby.py appium 的 webdriver.py selenium 的 webdriver.py seleniumdriver appiumdriver 前言 Appium-Python-Client是一个用于Python语言的Appium客户端库&#xff0c;它提供了丰富的API和功能&#xff0c;用于编写和…

cocosCreator 3.6以上接入腾迅Bugly 捕捉JS错误 Android

cocosCreator3.6以上接入Bugly上报其实很简单&#xff0c;不需要网上那么多弯弯绕&#xff0c;三须三步走。 1. 按照官网方式接入android的bugly 2. android端写一个Bugly上报管理类 3. 修改你工程目录下native\engine\common\Classes\目录下的Game.h, Game.cpp两个文件&…

字符串编程练习(C++)

ex1 字符串变形 描述 对于一个长度为 n 字符串&#xff0c;我们需要对它做一些变形。 首先这个字符串中包含着一些空格&#xff0c;就像"Hello World"一样&#xff0c;然后我们要做的是把这个字符串中由空格隔开的单词反序&#xff0c;同时反转每个字符的大小写。…

JS-27 前端数据请求方式;HTTP协议的解析;JavaScript XHR、Fetch的数据请求与响应函数;前端文件上传XHR、Fetch

目录 1_前端数据请求方式1.1_前后端分离的优势1.2_网页的渲染过程 – 服务器端渲染1.3_网页的渲染过程 – 前后端分离 2_HTTP协议的解析2.1_HTTP概念2.2_网页中资源的获取2.3_HTTP的组成2.4_HTTP的版本2.5_HTTP的请求方式2.6_HTTP Request Header2.7_HTTP Response响应状态码 3…