自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 RabbitMQ(4)springboot整合RabbitMQ幂等性、优先级队列、惰性队列

幂等性用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等消息重复消费消费者在消费 ...

2021-10-22 09:18:17 487

原创 RabbitMQ(3)springboot整合RabbitMQ发布确认高级

引言在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息该如何处理呢:发布确认确认机制方案:代码结构图:在配置文件当中需要添加spring.rabbitmq.publisher-confirm-type=correlatedNON.

2021-10-22 09:17:50 376

原创 RabbitMQ(2)springboot整合RabbitMQ=ttl延迟队列

延迟队列简介延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望 在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的 元素的队列。使用场景1.订单在十分钟之内未支付则自动取消2.新创建的店铺,如果在十天内都没有上传过商品,则自动发送消息提醒。3.用户注册成功后,如果三天内没有登陆则进行短信提醒。4.用户发起退款,如果三天内没有得到处理则通知相关运营人员。5.预定会议后,需要在预定的时间点前十分钟通知各...

2021-10-22 09:17:25 348

原创 RabbitMQ(1)springboot整合RabbitMQ

环境搭建一、创建一个Springboot项目二、导入相关依赖或者不勾选Spring for RabbitMQ,自己导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>三、编写配置文件# 应用名称spri..

2021-10-22 09:16:57 80

原创 RabbitMQ(十一)——死信队列

死信队列简介先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消...

2021-10-22 09:16:21 204

原创 RabbitMQ(十)——Routing 之订阅模型-Topic

Topic简介Topic类型的Exchange与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key的时候使用通配符!这种模型Routingkey一般都是由一个或多个单词组成,多个单词之间以”.”分割,例如:item.insertTopic 的要求发送到类型是 topic 交换机的消息的 routing_key 不能随意写,必须满足一定的要求,它必须是一个单词列表,以点...

2021-10-21 12:07:18 175

原创 RabbitMQ(九)——Routing 之订阅模型-Direct(直连)

Direct exchange简介在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。在Direct模型下:队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key) 消息的发送方在 向 Exchange发送消息时,也必须指定消息的RoutingKey。 Exchange不再把消息交给每一个绑定的队列,而是根据消息的Routing Key...

2021-10-21 11:59:34 230

原创 RabbitMQ(八)——fanout扇形模型

交换机我们假设的是工作队列背后,每个任务都恰好交付给一个消费者(工作进程)。在这一部分中,我们将做一些完全不同的事情-我们将消息传达给多个消费者。这种模式称为 ”发布/订阅”.为了说明这种模式,我们将构建一个简单的日志系统。它将由两个程序组成:第一个程序将发出日志消息,第二个程序是消费者。其中我们会启动两个消费者,其中一个消费者接收到消息后把日志存储在磁盘,另外一个消费者接收到消息后把消息打印在屏幕上,事实上第一个程序发出的日志消息将广播给所有消费者Exchang...

2021-10-21 11:54:47 302

原创 RabbitMQ(七)——发布确认

发布确认原理生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号,此外 broker 也可以...

2021-10-21 11:46:03 117

原创 RabbitMQ(六)——持久化和权重分配消息

RabbitMQ 持久化简介刚刚我们已经看到了如何处理任务不丢失的情况,但是如何保障当 RabbitMQ 服务停掉以后消息生产者发送过来的消息不丢失。默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:我们需要将队列和消息都标记为持久化。队列如何实现持久化之前我们创建的队列都是非持久化的,rabbitmq 如果重启的化,该队列就会被删除掉,如果要队列实现持久化 需要在声明队列的时候把 durable 参数设置为持久化

2021-10-21 11:39:57 677

原创 RabbitMQ(五)——消息应答

消息应答简介消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续发送给该消费这的消息,因为它无法接收到。为了保证消息在发送过程中不丢失,rabbitmq 引入消息应答机制,消息应答就是:消费者在接收到消息并且处理该消息之后,告诉 rabbitmq 它已经处理了,rabbitmq 可以把该消息删除了

2021-10-21 11:33:35 161

原创 RabbitMQ(四)——work queues工作模式

work queues工作模式Work queues,也被称为(Task queues),任务模型。当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时处理。此时就可以使用work 模型:让多个消费者绑定到一个队列,共同消费队列中的消息。队列中的消息一旦消费,就会消失,因此任务是不会被重复执行的。轮询分发消息一个生产者发送消息,由多个工作线程(消费者)轮询接收在这个案例中我们会启动两个工作线程,一个消息发送线程,我们来看看他们.

2021-10-21 11:24:31 485

原创 RabbitMQ(三)——hello world简单工作模式

hello world简单工作模式在上图的模型中,有以下概念:P:生产者,也就是要发送消息的程序 C:消费者:消息的接受者,会一直等待消息到来。 queue:消息队列,图中红色部分。类似一个邮箱,可以缓存消息;生产者向其中投递消息,消费者从其中取出消息。一、导入相关依赖 <dependencies> <!--rabbitmq依赖客户端--> <dependency> <group.

2021-10-21 11:17:54 79

原创 RabbitMQ(二)——RabbitMQ安装和使用

RabbitMQ安装一、下载RabbitMQ安装包和erlang语言环境二、上传到linux系统root目录下的/opt目录三、安装erlang语言环境rpm -ivh erlang-21.3-1.el7.x86_64.rpm四、安装依赖包(必须联网)yum install socat -y五、安装RabbitMQrpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm什么是集合?一、添加开机启动RabbitMQ服

2021-10-21 11:10:58 64

原创 RabbitMQ(一)——RabbitMQ相关概念

MQ 的相关概念什么是 MQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。为什么要用 MQ1.流量消峰举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单

2021-10-21 11:04:46 188

原创 springcloudalibaba(8)环境搭建 sentinel组件的熔断降级和热点规则

sentinel组件的熔断降级和热点规则熔断降级规则简介熔断:用来避免微服务架构中雪崩现象,达到某个阈值条件之后自动出发熔断原理:当监控到调用链路中某一个服务,出现异常(20个以上异常)自动出发熔断,在出发熔断之后对于该微服务调用不可用熔断降级规则的使用RT:根据请求响应时间熔断异常比例:根据请求调用过程中出现异常百分比进行熔断异常数:根据请求调用过程中异常数进行熔断平均响应时间当 1s 内持续进入 N 个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以 ms

2021-10-20 16:41:38 97

原创 springcloudalibaba(7)环境搭建 sentinel组件的流控规则

流控规则简介其原理是监控应用流量的QPS或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。QPS:当每秒的请求书超过一定阈值之后对当前请求进行限流并发线程数:当服务器中创建线程数超过一定阈值之后对当前请求进行限流流控规则的详解QPS:当每秒的请求书超过一定阈值之后对当前请求进行限流并发线程数:当服务器中创建线程数超过一定阈值之后对当前请求进行限流高级选项1.直接:当配置资源在运行过程超过当前规则配置的阈值之后,对该资源请求做..

2021-10-20 16:32:38 76

原创 springcloudalibaba(6)环境搭建 sentinel组件的安装和使用

sentinel组件的安装和使用sentinel提供了两个服务组件:一个是 sentinel 用来实现微服务系统中服务熔断、降级等功能。 这点和hystrix 类似一个是 sentinel dashboard 用来监控微服务系统中流量调用等情况 流控 熔断 降级 配置。 这点和hystrix dashboard类似Sentinel的构建1、下载Sentinelhttps://github.com/alibaba/Sentinel/2、上传到linux服务器3、启动ja..

2021-10-20 16:25:47 650 1

原创 springcloudalibaba(5)环境搭建 nacos的集群搭建和负载均衡

nacos的集群搭建和负载均衡预备环境准备64 bit OS Linux/Unix/Mac,推荐使用Linux系统。 64 bit JDK 1.8+; Maven 3.2.x+; 3个或3个以上Nacos节点才能构成集群。nacos集群搭建集群规划nacos01 端口号8845 nacos02 端口号8846 nacos03 端口号8847 mysql 端口号3306 nginx 端口号8999搭建nacos集群注意事项:数据持久化必须配置为mysql数据持久化1、把.

2021-10-20 16:17:32 102

原创 springcloudalibaba(4)环境搭建

nacos的mysql持久化持久化:管理的配置信息持久化注意:默认nacos存在的配置信息持久化,默认的持久化方式为内嵌数据库derby缺点:无法展示数据官方建议:在生产情况下推荐将配置存入mysql数据库 注意:nacos到目前为止仅仅支持mysqlmysql安装1、输入vi /etc/yum.repos.d/mysql-community.repo添加官方的yum源创建并编辑mysql-community.repo文件vi /etc/yum.repos.d/mysql-comm

2021-10-20 16:06:27 208

原创 springcloudalibaba(3)环境搭建

配置中心及自动刷新配置中心configclient开发nacos作为统一配置中心:1.它管理的配置文件方式是在自己所在的服务器上形成一个版本库,因此不需要再创建远程版本库2.nacos作为统一配置中心管理配置文件时,同样也存在版本控制1、创建一个config客户端子模块springcloudAlibaba-config-client-88882、导入相关依赖 <dependencies> <dependency> ..

2021-10-20 15:57:06 169

原创 springcloudalibaba(2)环境搭建

Nacos客户端开发和openfeign服务间通信nacos客户端开发1、新建一个模块springclouAlibaba-nacos-client-89892、导入相关依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web..

2021-10-20 15:41:53 136

原创 springcloudalibaba(1)环境搭建

创建父项目父项目依赖?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.

2021-10-20 15:16:17 147

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除