10 2022 档案
摘要:登录RabbitMQ控制台提示不是私密连接 将启动的时候的赋权操作再执行一遍 rabbitmqctl add_user root rabbitmqctl set_permissions -p / root ".*" ".*" ".*" rabbitmqctl set_user_tags root a
阅读全文
摘要:RabbitMQ延迟队列插件 下载 官网 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases 我用的是3.10.7的RabbitMQ, 但是官网没有这么新版本的, 只好下载3.10.2得了 安装 # 进入plu
阅读全文
摘要:SpringBoot整合RabbitMQ 整合就直接使用单机版的了, 一直开着5个虚拟机, 我电脑不太行 新建SpringBoot工程 你已经是一个长大的IDEA了, 要学会自己新建工程, 然后IDEA自己创建了rabbitmq-consumer和rabbitmq-producer工程 添加依赖 <
阅读全文
摘要:消息一致性问题 在使用rabbitmq中,消息的一致性是非常重要的一个话题。在数据一致性方面,发送者发送消息出来,在数据一致性的要求下,我们通常认为必须达到以下条件 broker持久化消息 publisher知道消息已经成功持久化 首先,我们可以采用事务来解决此问题。每个消息都必须经历以上两个步骤,
阅读全文
摘要:集群架构 虚拟机规划 IP hostname 节点说明 端口 控制台地址 192.168.247.150 rabbitmq.master rabbitmq master 5672 http://192.168.247.150:15672 192.168.247.151 rabbitmq.s.o ra
阅读全文
摘要:死信队列 死信队列: DLX, Dead-Letter-Exchange 利用DLX, 当消息在一个队列中变成死信(dead message)之后, 它能被重新publish到另一个Exchange, 这个Exchange就是DLX DLX也是一个正常的Exchange, 和一般的Exchange没
阅读全文
摘要:TTL队列/消息 TTL: Time To Live, 生存时间 RabbitMQ支持消息的过期时间, 在消息发送时可以指定 RabbitMQ支持队列的过期时间, 从消息进入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会被自动清除 TTL队列代码实现 消费者 package com.da
阅读全文
摘要:消费端的消息ACK与重回队列 消费端的手工ACK和NACK ACK分为自动和手动 消费端进行消费的时候, 如果由于业务异常我们可以进行日志的记录, 然后进行补偿 如果由于服务器宕机等严重问题, 那我们就需要手工进行ACK保障消费端消费成功 消费端的重回队列 消费端重回队列是为了对没有处理成功的消息,
阅读全文
摘要:消费端限流 什么是消费端限流 假设一个场景, 首先, 我们RabbitMQ服务器有上万条消息未处理的消息, 我们随机打开一个消费者客户端, 会出现下面情况 巨量的消息瞬间全部推送过来, 但是我们单个客户端无法同时处理这么多数据 RabbitMQ提供了一种Qos(服务质量保证)功能, 即在非自动确认消
阅读全文
摘要:Return返回消息 Return消息机制 Return Listener 用于处理一些不可路由的消息 我们的消息生产者,通过指定一个Exchange和RouteKey, 把消息送达到某一个队列中去,然后我们的消费者监听队列,进行消费处理操作 但是在某些情况下, 我们在发送消息的时候, 当前的Exc
阅读全文
摘要:Confirm确认消息 理解Confirm消息确认机制 消息的确认, 是指投递消息后, 如果Broker收到消息, 则会给我们生产者一个应答 生产者进行接收应答用来确定这条消息是否正常的发送到Broker, 这种方式也是消息的可靠性投递的核心保障 Confirm确认消息流程解析 Confirm确认消
阅读全文
摘要:幂等性概念详解 幂等性是什么 可以借鉴数据库的乐观锁机制 比如执行一条更新库存的SQL update t_reps set count = count -1 , version = version + 1 where version = 1; MQ最重要的两个特点就是生产端保证可靠性投递和消费端幂等
阅读全文
摘要:消息如何保证100%的投递成功 什么是生产端的可靠性投递 保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(Broker)确认应答 完善的消息进行补偿机制 BAT/TMD互联网大厂的解决方案 消息信息落库, 对消息状态进行打标 存入本地消息表 打印日志记录 将消息发送到MQ 接收MQ的
阅读全文
摘要:Binding 绑定关系 Exchange和Exchange, Queue之间的连接关系 Binding中可以包含RouteKey或者参数 Queue 消息队列, 实际存储消息数据 Durability: 是否持久化, Durable: 是, Transient: 否 Auto Delete: 如果
阅读全文
摘要:Fanout Exchange 简介 不处理路由键, 只需要简单的将队列绑定到交换机上 发送到交换机的消息都会被转发到与该交换机绑定的所有队列上 Fanout交换机转发消息是最快的 代码实现 消费者1 package com.dance.redis.mq.rabbit.fanout; import
阅读全文
摘要:Topic Exchange 简介 所有发送到Topic Exchange的消息被转发到所有关心RouteKey中指定Topic的Queue上 Exchange将RouteKey和某Topic进行模糊匹配, 此时队列需要绑定一个Topic 可以使用通配符进行模糊匹配 #: 匹配一个或多个词 *: 匹
阅读全文
摘要:Direct Exchange 简介 所有发送到direct exchange 的消息被转发到Routekey中指定的Queue 注意: Direct模式可以使用RabbitMQ自带的Exchange(default exchange), 所以不需要将Exchange进行任何Binding操作, 消
阅读全文
摘要:Exchange 流程图 接收消息, 并根据路由键转发消息所绑定的队列 Exchange属性 属性 含义 name 交换机名称 type 交换机类型[ direct | topic | fanout | headers ] durability 是否需要持久化[ true | false ] aut
阅读全文
摘要:MQ控制台简单操作 建立Exchange 新建Exchange成功 新建Queue 新建Queue成功 建立Exchange与Queue的关系 建立关系成功 路由键: 就是指发送到Exchange的消息, 通过路由键的匹配规则, 分发到指定的Queue 样例: test.* 说明: 代表该消息的发送
阅读全文
摘要:RabbitMQ安装与入门 安装与启动 我实在是找不到这么老的版本了, 直接用最新版本的, 按照道理来说, 新版本是兼容老版本的 官网地址 https://www.rabbitmq.com/ Erlang安装 下载 https://github.com/erlang/otp/releases/dow
阅读全文
摘要:核心概念 RabbitMQ简介 RabbitMQ是一个开源的消息代理和队列服务器, 用来通过普通协议在完全不同的应用之间共享数据, RabbitMQ是使用Erlang语言来编写的, 并且RabbitMQ是基于AMQP协议的 AMQP协议 协议简介 全称: Advanced Message Queui
阅读全文
摘要:RabbitMQ特性原理与集群架构解析 RabbitMQ四种集群架构 主备模式 M-S 远程模式 异地多活[了解] 镜像模式 多活模式 异地多活 主备模式 warren(兔子窝),一个主、备方案(主节点如果挂掉,从节点提供服务) 主备模式-HaProxy配置 listen rabbitmq_clus
阅读全文
摘要:业界主流的分布式消息队列(MQ)与技术选型 MQ的应用场景 服务解耦 削峰填谷 异步化缓冲 MQ的应用思考点 业务 生产端的可靠性投递 消费端的幂等性 MQ MQ高可用 低延时 可靠性(副本) 堆积能力 可扩展性 业界主流的MQ对比 ActiveMQ RabbitMQ RocketMQ Kafka
阅读全文
摘要:第三方云存储解决方案 FastDFS 虽然可以水平扩容, 但是运维的复杂度会提高 开发复杂(并不是指上传) 图片增加水印, 人脸识别 视屏文件的后期处理 阿里云OSS对象存储 SDK使用简单 提供强大的文件处理功能 没有运维成本 图形化管理控制台 CDN加速 官网 https://www.aliyu
阅读全文
摘要:SpringBoot 整合 FastDFS 添加POM依赖 <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastdfs-client</artifactId> <version>1.26.7</version> </de
阅读全文
摘要:配置Nginx FastDFS实现文件服务器 在storage上安装 cd /home/software/FASTDFS/ tar -zxvf fastdfs-nginx-module-1.22.tar.gz cd fastdfs-nginx-module-1.22/src/ vi config 修
阅读全文
摘要:搭建fastdfs文件服务器 资源准备 centos7 libfastcommon 公共函数包 FastDFS 本体 fastdfs-nginx-module 与Nginx的关联模块 nginx 1.15.4 官方文档 https://github.com/happyfish100/fastdfs/
阅读全文
摘要:分布式文件服务器-FastDFS 什么是FastDFS FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联
阅读全文
摘要:目前文件上传的问题 单向存储 不支持集群 文件数据冗余(高可用概念) 可扩展差 因为单向存储文件, 会被Nginx轮询, 导致上传到一台Tomcat上, 会导致后续如果该请求没有被轮询到指定的Tomcat, 就会无法访问该文件, 导致访问失败, 并且该文件应为只存储在Tomcat一中, 一旦该节点宕
阅读全文
摘要:logstash数据同步 简介 集中, 转换和存储数据, logstach是免费且开放的服务器端数据处理管道, 能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的"存储库"中 官网 https://www.elastic.co/cn/logstash/ 下载地址 https://www.e
阅读全文
摘要:SpringBoot整合Elasticsearch集群 每个版本的整合方式不一样, 具体的使用的时候, 直接去找官网的文档就好 为什么这个说呢, 因为我看之前的版本用的直接是RightHigh的客户端 然后呢, 又用了ElasticTemplate 接着又是ElasticRestTemplate 以
阅读全文
摘要:ES集群的文档读写原理 文档写原理 文档读原理
阅读全文
摘要:集群脑裂 什么是集群脑裂 如果发生网络中断或者服务器宕机,那么集群会有可能被划分为两部分,各自有自己的master来管理,那么这就是脑裂。 集群脑裂解决方案 master主节点要经过多个master节点共同选举后才能成为新的主节点。这就跟班级里选举班长一样,并不是你1个人能决定的,需要班里半数以上的
阅读全文
摘要:ElasticSearch集群 搭建Elasticsearch集群 准备3台虚拟机 IP规划 192.168.247.142 192.168.247.143 192.168.247.144 三台虚拟机搭建ES 建议采用新的机器, 我用了之前的机器导致, 配置是对的, 但是三个节点就是不组成集群...
阅读全文
摘要:批量操作 bulk 基本语法 bulk操作和以往的普通请求格式有区别, 不要格式化JSON, 不然就不在同一行了, 这个需要注意 {action:{metadata}}代表批量操作的类型, 可以是新增, 删除, 修改 \n是每行结尾必须填写的一个规范, 每一行包括最后一行都要写, 用于ES 解析(不
阅读全文
摘要:DSL搜索 词库准备 骚年 帅气 新闻网 新闻 闻网 新 闻 网 索引准备 PUT /shop { "settings": { "number_of_shards": 5, "number_of_replicas": 0 } } POST /shop/_mapping { "properties":
阅读全文
摘要:模拟数据 增删改数据 POST /my_doc/_doc/ { "id": 1001, "name": "imooc-1", "desc": "imooc is very good, 慕课网非常牛!", "create_date": "2019-12-24" } POST /my_doc/_doc/
阅读全文
摘要:分词器 分词器汇总 分词器 拆分方式 standard 空格 simple 非字母 whitespace 空格 stop 去除英文的助词(a the is) keyword 不拆分(关键词) ik_max_word 最大词汇拆分 ik_smart 最小词汇拆分 默认分词器 POST /_analyz
阅读全文
摘要:查询[ES] 查询ES信息 GET / 查询集群健康状态 GET /_cluster/health 增删改索引 创建索引并指定主分片和副本数 PUT /my_doc { "settings": { "number_of_shards": 1, "number_of_replicas": 0 } }
阅读全文
摘要:基于Linux安装ES 下载官网 https://www.elastic.co/cn/downloads/past-releases#elasticsearch 使用7.4.2 安装 上传到Linux # 解压 tar -zxvf elasticsearch-7.4.2-linux-x86_64.t
阅读全文
摘要:什么是分布式搜索引擎 搜素引擎 分布式存储与搜索 Lucene, Solr, ES 倒排序索引 Lucene是类库 solr基于Lucene ES基于Lucene ES核心术语 ES集群架构原理 倒排索引 根据词查询文档ID
阅读全文
摘要:单点登录 相同一级域名的单点登录 通过Token+Redis实现分布式会话, 可以在相同一级域名下实现单点登录, 那么如何实现跨一级域名的单点登录呢? 不同一级域名的单点登录 一级域名不一样, 如何实现单点登录呢? 比如.jd.com和.tb.com要实现会话共享, 这个时候由于一级域名不同, co
阅读全文
摘要:分布式会话的存储: 将用户信息缓存到Redis中, 然后前端用户通过Token存储到Cookie中就可以实现 分布式会话的控制: 通过SpringIntercepter实现, 校验用户登录的Token是否和缓存中一致 分布式会话的访问时间重置, 在拦截器中当验证通过时刷新Redis中的过期时间, 俗
阅读全文
摘要:动静分离会话 用户请求服务端, 由于动静分离, 前端发起HTTP请求, 不会携带任何状态, 当用户第一次请求以后, 我们手动设置一个Token, 作为用户会话,存入Redis中, 如此作为redis-session, 并且这个Token设置后放入前端cookie中(app或者小程序可以放入缓存),
阅读全文
摘要:为何使用无状态会话 有状态会话都是放在服务器, 一旦用户会话多, 那么内存就会出现瓶颈, 而无状态会话可以采用介质, 前端可以使用Cookie(app可以使用缓存)保存用户ID或者Token, 后端比如Redis, 相应的用户会话都会存放入Redis中进行管理, 如此, 对应用部署的服务器就不会造成
阅读全文
摘要:分布式会话 什么是会话 会话Session代表的是客户端与服务器的一次交互过程,这个过程可以是连续也可以是时断时续的。曾经的Servlet时代(jsp),一旦用户与服务端交互,服务器用户创建一个session,同时前端会有一个jsessionid,每次交互都会携带。如此一来,服务器只要在接到用户请求
阅读全文
摘要:缓存穿透解决方案 设置空值 布隆过滤器 优点 可以将存在的缓存, 位置设置为1, 然后当不存在的参数过来的时候, 会匹配到0上,这样就会直接返回不存在 缺点 存在错误判断, hash冲突 删除缓存时无法删除指定的1的位置, 应为存在多数据,同一hash, 所以无法删除 增加开发成本, 维护成本提高
阅读全文
摘要:SpringBoot整合Redis[哨兵版] 修改配置文件 server: port: 8080 spring: application: name: redis redis: # host: 192.168.247.141 # port: 6379 password: 123456 databas
阅读全文
摘要:Redis架构演进 一主二从 这也是常用的架构,,MASTER用于写服务,SLAVE提供读服务 但是存在弊端, 就是主MASTER宕机后, SLAVE无法升级, 导致无法提供写服务 哨兵监控 为了解决主从架构的MASTER宕机问题, 架构引入哨兵监控机制, 一般哨兵也是集群,最少节点为3, 为什么呢
阅读全文
摘要:SpringBoot整合Redis[单机版] 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </depende
阅读全文
摘要:我觉得这个图就非常清晰, 如果是懂BIO/Netty的人看起来应该很容易, 是的没错Redis的线程模型就是基于多路复用器做的, 采用非阻塞的IO模型, 当前是6.x之前的版本, 6.x之后的,等有时间再看一下吧, 因为现在市面上用的基本还都是3.x~
阅读全文
摘要:哎, 本来想的是10.1 回家呢, 结果突然本地多了一例的疫情, 所以只能把票都退了,已经将近一年都没有回家, 思念如泉~, 只能静下心来继续学习, 路漫漫其修远兮吾将上下而求索! Redis的安装与配置 官网 https://redis.io 下载 访问官网 点击releases page查看全部
阅读全文