初识springcloud

springcloud

eureka

eureka的作用

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

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

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

服务消费者利用负载均衡算法,从服务列表中挑选一个消费者如何感知服务提供者健康状态?

eureka配置

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server:port: 10086
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/
Ribbon负载均衡原理

IRule是指定负载均衡的策略

image-20240524190011385

通过定义IRule实现可以修改负载均衡规则,有两种方式:

1.代码方式:在order-service中的OrderApplication类中,定义一个新的lRule:

@BeanpublicIRulee randomRule(){return newRandomRule();
}

2.配置文件方式:在order-service的application.yml文件中

添加新的配置也可以修改规则:

userservice:ribbon:NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRule # 负载均衡规则NFLoadBalancerRuleClassName:com.alibaba.cloud.nacos.ribbon.NacosRule # nacos的负载均衡规则
饥饿加载

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

而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

ribbon:eager-load:enabled:true #开启饥饿加载clients:- userservice # 指定对userservice这个服务饥饿加载

Nacos

Github地址 https://github.com/alibaba/nacos

window 进入bin目录后 启动命令 startup.cmd -m standalone

父工程进入nacok

   <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version><type>pom</type><scope>import</scope></dependency>

客户端依赖


<!-- nacos客户端依赖包-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
spring:cloud:nacos:server-addr: localhost:8848discovery:cluster-name: 集群名称namespace: 环境的idephemeral: false 设置为非临时实例
根据权重负载均衡

Nacos控制台可以设置实例的权重值,0~1之间同集群内的多个实例,权重越高被访问的频率越高权重,设置为0则完全不会被访问

环境隔离

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离

每个namespace下的服务不可见

统一配置管理
<!-- nacos配置管理客户端依赖包-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

在userservice中的resource目录添加一个bootstrap.yml文件,这个文件是引导文件,优先级高于application.yml

spring:application:name:userservice #服务名称profiles:active:dev #开发环境,这里是devcloud:nacos:server-addr:LocaLhost:8848 #Nacos地址config:file-extension:yam #文件后缀名

配置完之后项目启动后会去找id是 name+active+file-extension

配置热更新

在类上面添加注解@RefreshScope或者@ConfigurationProperties注解

@Component@ConfigurationProperties(prefix ="pattern")public class PatternProperties{private String dateformat;}
多环境共享配置
image-20240528230610143
配置优先级

服务名-Rrofile.yaml>服务名称.yaml>本地配置

Nacos 集群
image-20240529225847375

https://blog.csdn.net/weixin_51265669/article/details/137127998

Nacos与eureka对比

1.Nacos与eureka的共同点

  • 都支持服务注册和服务拉取
  • 都支持服务提供者心跳方式做健康检测

2.Nacos与Eureka的区别

  • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
  • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
  • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
  • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

Feign

image-20240530200726626

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
@Feignclient("userservice")
public interface UserClient {@GetMapping("/user/{id}")User findById(@PathVariable("id") Long id);
}
自定义配置

image-20240530203914788

image-20240530204158949

image-20240530204405336

feign的性能优化

image-20240530204755137

Gateway

image-20240530205920789
<!--网关依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

image-20240530212532393

路由断言工厂

image-20240530213538474

过滤器工厂

image-20240530215419974

如果要对所以路由都生效,则可以把过滤工厂写到default下

全局过滤器

全局过滤器GlobalFilter全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。区别在于GatewayFilter通过配置定义,处理逻辑是固定的。而GlobalFilter的逻辑需要自己写代码实现。

image-20240530215955310

image-20240530221004354

当过滤器的order值一样时,会按照defaultFilter>路由过滤器>GlobalFilter的顺序执行。

跨域配置

image-20240530221620513

而GlobalFilter的逻辑需要自己写代码实现。
image-20240530221004354

当过滤器的order值一样时,会按照defaultFilter>路由过滤器>GlobalFilter的顺序执行。

跨域配置

image-20240530221620513

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

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

相关文章

创建模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;自定义模块有两个作用&#xff1a;一个是规范代码&#xff0c;让代码更易于阅读&#xff0c;另一个是方便其他程序使用已经编…

ORACLE创建dblink

dblink的作用 dblink数据库链接顾名思义就是数据库的链接&#xff0c;当我们要跨本地数据库&#xff0c;访问另外一个数据库表中的数据时&#xff0c;本地数据库中就必须要创建远程数据库的dblink&#xff0c;通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中…

Ubuntu22.04之解决:terminal使用alt+1/alt+2/alt+3失效问题(二百三十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

安卓玩机搞机技巧综合资源----电脑控制手机 投屏操控的软件工具操作步骤解析【二十二】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

外发邮件监控的六种方法, 监控软件如何防止邮件泄密?

外发邮件监控的六种方法&#xff0c; 监控软件如何防止邮件泄密&#xff1f; 外发邮件监控是现代企业信息安全管理的重要组成部分&#xff0c;它有助于防止敏感信息泄露、保护知识产权、以及确保企业合规。以下是外发邮件监控的几种主要方法&#xff0c;这些方法结合使用可以为…

2024最新 Jenkins + Docker实战教程(八)- Jenkins实现集群并发构建

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

群体优化算法----人工蜂群优化算法应用于路径规划(机器人避开平面障碍寻找最短路线)

介绍 人工蜂群优化算法&#xff08;Artificial Bee Colony Algorithm, ABC&#xff09;是由Dervis Karaboga在2005年提出的一种模拟蜜蜂觅食行为的优化算法。该算法基于蜜蜂群体的分工合作和信息交流机制&#xff0c;通过模拟蜜蜂寻找食物源的过程来解决优化问题。ABC算法因其…

INT202 例题

算法复杂度 O(n)&#xff1a;表示算法的渐进上界。如果一个算法的运行时间是O(n)&#xff0c;那么它的运行时间最多与输入规模n成正比。换句话说&#xff0c;当输入规模n增加时&#xff0c;算法的运行时间不会超过某个常数倍的n。比如&#xff0c;如果一个算法的时间复杂度是O(…

打开常用C语言常用内存函数的大门 ——memcmp函数及其模拟实现(完结篇)

文章目录 1. 前言2. memcmp函数2.1 memcmp函数的原型2.2 memcmp的返回值2.2 memcmp的形参2.3 memcmp函数的使用 3. memcmp函数的模拟实现4. 总结 1. 前言 本文是C语言常用内存函数的最后一个函数 —— memcmp函数。 希望各位观众佬爷们能够学会并灵活的使用这四个常用的内存函…

平板显示LED背光芯片OC6700,输入3.6V~60V,升压型 LED 恒流驱动器

概述 OC6700是一款内置60V功率NMOS高效率、高精度的升压型大功率LED恒流驱动芯片。OC6700采用固定关断时间的控制方式&#xff0c;关断时间可通过外部电容进行调节&#xff0c;工作频率可根据用户要求而改变。OC6700通过调节外置的电流采样电阻&#xff0c;能控制高亮度LED灯的…

C语言之指针进阶(5),sizeof和strlen的数组计算以及指针运算笔试难题详解

目录 前言 一、sizeof和strlen 的区分比较 二、sizeof,strlen与数组的计算 三、指针运算&#xff0c;笔试难题解析 总结 前言 本文作为指针进阶的最后一篇文章&#xff0c;给大家带来了丰富的例题&#xff0c;这其中包括区分比较sizeof和strlen计算各种花样的数组指针表达式…

Redis的SDS数据结构解决C语言字符串缺陷

redis设计了SDS这一数据结构来表示字符串而不是使用c语言的字符串&#xff1a;字符数组 那么redis为什么要大费周章自己设计字符串呢&#xff1f; 答案是C语言字符串有缺陷 1.获取字符串长度&#xff0c;需要遍历字符数组&#xff0c;时间复杂度是O&#xff08;N&#xff09…

Springboot vue3 elementplus 景点评论数据分析与可视化系统源码

源码链接 系统演示:链接&#xff1a;https://pan.baidu.com/s/1J056R4rYji_mc4gwteZEzg?pwdnua4

教程 | 在 Navicat 17 中管理连接

Navicat 17 提供了比以往更多的连接数据库实例的方式。除了传统的连接字符串方式以外&#xff0c;Navicat 17 还支持 URI 连接&#xff0c;无论身在何处&#xff0c;都可以轻松地通过 URI 访问对象。另外&#xff0c;还有一个新的管理连接功能&#xff0c;即允许你通过一个以用…

【LeetCode】39.组合总和

组合总和 题目描述&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个…

高中数学:平面向量-常考题型汇总

一、数量积运算 例题1 解析 首先&#xff0c;为了化简运算过程&#xff0c;我们把OA、OB、OC向量记作a、b、c向量。 其次&#xff0c;充分利用已知条件&#xff0c;进行消元&#xff0c;两边平方&#xff0c;可以消除一个向量。 a → \mathop{a}\limits ^{\rightarrow} a→ *…

【简单探索微软Edge】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

R语言安装caret包报错

R语言安装caret包报错&#xff1a;Error: package or namespace load failed for ‘caret’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck vI[[i]]): 不存在叫‘recipes’这个名字的程辑包 https://rbasics.org/packages/caret-package-in-r/ R版本的问题&…

商业新闻|你还在用传统搜索引擎吗?

‍‍今天是2024年第22周 这是Yura「输出倒逼输入」计划的第11篇文章 全年进度&#xff1a;11/52 01 AI搜索为什么没超过传统搜索&#xff1f; 生成式AI在搜索引擎领域掀起了一轮又一轮的波澜&#xff0c;但是一年多过去了&#xff0c;不管是必应还是perplexity都并没有动摇Goog…

【TB作品】MSP430G2553霓虹灯呼吸灯跑马灯

霓虹灯&#xff1a; 跑马灯&#xff1a; 呼吸灯&#xff1a; 所有代码&#xff1a; 下载&#xff1a; https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tabBB08J2