中间件
文章平均质量分 82
七夜丶雪
听雪楼前听雪落,彼岸花开彼岸零
展开
-
Redis入门
Redis定义Redis特性Redis典型使用场景Redis安装安装文件介绍启动方式最简启动动态参数启动配置文件启动客户端连接Redis常用配置Redis定义首先看下Redis的定义: Redis 是一个key-value存储系统,一个高性能的key-value数据库.和Memcached类似,它支持存储的value类型相对更多,包括st...原创 2018-08-23 22:04:30 · 266 阅读 · 0 评论 -
Spring AMQP整合RabbitMQ
RabbitAdminRabbitAdmin类可以很好的操作RabbitMQ, 在Spring中直接进行注入即可@Beanpublic RabbitAdmin rabbitAdmin(ConnectionFactory ConnectionFactory) { RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory)...原创 2018-12-31 10:11:45 · 1703 阅读 · 0 评论 -
SpringBoot整合RabbitMQ
Producer配置publisher-confirms, 实现一个监听器用于监听Broker端给我们返回的确认请求 : RabbitTemplate.ConfirmCallbackpublisher-returns, 保证消息对Broker端是可达的, 如果出现路由键不可达的情况, 则使用监听器对不可达的消息进行后续的处理, 保证消息的路由成功 : RabbitTemplate.Retur...原创 2018-12-31 10:14:18 · 1244 阅读 · 1 评论 -
RabbitMQ集群架构模式介绍
主备模式实现RabbitMQ的高可用集群, 一般在并发和数据量不高的情况下, 这种模型简单好用。主备模式也从称之为Warren模式主节点如果挂了, 从节点提供服务远程模式远程模式可以实现双活的一种模式, 简称Shovel模式, 所谓Shovel就是我们可以把消息进行不同数据中心的复制工作, 可以跨地域的让两个MQ集群互联Shovel模式拓扑图:Shovel集群的配...原创 2018-12-31 10:20:01 · 2383 阅读 · 0 评论 -
从零开始搭建高可用RabbitMQ镜像模式集群
RabbitMQ集群模式搭建集群架构图:准备工作准备三台安装了RabbitMQ的节点, 我本地三台虚拟机地址如下 :IPhostname192.168.72.138:5672rabbit138192.168.72.139:5672rabbit139192.168.72.140:5672rabbit140选取任意一个节点作为master节点, 进...原创 2018-12-31 10:45:52 · 3543 阅读 · 1 评论 -
RabbitMQ集群恢复与故障转移
前提 : A, B两个节点组成一个镜像队列, B是Master节点场景一A先停, B后停解决方案 : 该场景下B是Master, 只要先启动B, 在启动A即可。或者先启动A, 30秒之内启动B即可恢复镜像队列场景二A, B同时停机解决方案 : 只需要在30秒内连续启动A和B即可恢复镜像场景三A先停, B后停, 且A无法恢复解决场景 : 因为B是Master, 所以等B启...原创 2018-12-31 10:48:22 · 2110 阅读 · 0 评论 -
RabbitMQ-基础组件封装
基础组件封装思路和架构设计方案支持高性能的序列化转换, 异步化发送消息支持消息生产实例与消费实例的链接池化缓存化, 提升性能支持可靠性投递消息, 保障消息100%不丢失支持消费端的幂等操作, 避免消费端重复消费的问题支持迅速消息发送模式, 在一些日志收集/统计分析等需求下可以保证高性能, 高吞吐量支持延迟消息模式, 消息可以延迟发送, 指定延迟时间, 用于某些延迟检查, 服务限流场...原创 2018-12-31 10:54:00 · 5405 阅读 · 0 评论 -
RabbitMQ高级特性-消息可靠性投递
消息如何保障100%的投递成功什么是生产端的可靠性投递保障消息的成功发出保障MQ节点的成功接收发送端收到MQ节点(Broker)的确认应答完善的消息补偿机制可靠性投递的解决方案消息落库, 对消息状态进行标记将消息落入数据库中, 对消息状态进行标记, 消息状态发生变更时, 更新标记信息对失败消息进行轮询重发, 设置轮询次数消息入库消息发送消费端消息确...原创 2018-12-26 06:43:04 · 2743 阅读 · 0 评论 -
RabbitMQ高级特性-幂等性保障
消费端-幂等性保障幂等性 : 多次执行, 结果保持一致主流的幂等性操作唯一ID + 指纹码机制, 利用数据库主键去重好处 : 实现简单坏处 : 高并发下有数据库写入的性能瓶颈解决方案 : 根据ID进行分库分表进行算法路由利用Redis的原子性实现需要关注的问题:是否要进行数据落库, 如果落库的话, 数据库和缓存如何做到原子性如果不落库, 数据都存储到缓存...原创 2018-12-26 06:46:39 · 2823 阅读 · 0 评论 -
RabbitMQ高级特性-Confirm确认消息
Confirm确认消息消息的确认, 是指生产者投递消息后, 如果Broker收到消息, 则会给我们产生一个应答生产者进行接收应答, 用来确定这条消息是否正常发送到Broker, 这种方式也是消息的可靠性投递的核心保障如何实现Confirm确认消息在channel上开启确认模式 : channel.confirmSelect()在channel上添加监听 : addConf...原创 2018-12-26 06:49:35 · 2588 阅读 · 5 评论 -
RabbitMQ高级特性-Return消息机制
Return消息机制Return Listener用于处理一些不可路由的消息正常情况下消息生产者通过指定一个Exchange和RoutingKey, 把消息送到某一个队列中去, 然后消费者监听队列, 进行消费但在某些情况下, 如果在发送消息的时候, 当前的exchange不存在或者指定的路由key路由不到, 这个时候如果我们需要监听这种不可达的消息, 就要使用Return Lis...原创 2018-12-26 06:52:04 · 2684 阅读 · 1 评论 -
RabbitMQ高级特性-消费端自定义监听
消费端自定义监听在之前的代码演示中, consumer进行消费时 ,都是使用while循环进行消息消费, 然后使用consumer.nextDelivery()方法获取下一条消息但是在实际工作中, 使用自定义的Consumer更加的方便, 解耦性也更加的强, 实现自定义的Consumer可以实现Consumer接口, 或者更常用的是继承默认的DefaultConsumer代码演示自定义...原创 2018-12-26 06:55:31 · 3085 阅读 · 0 评论 -
RabbitMQ高级特性-消费端限流
消费端限流消息队列中囤积了大量的消息, 或者某些时刻生产的消息远远大于消费者处理能力的时候, 这个时候如果消费者一次取出大量的消息, 但是客户端又无法处理, 就会出现问题, 甚至可能导致服务崩溃, 所以需要对消费端进行限流RabbitMQ提供了一种qos(服务质量保证)功能, 即在非自动确认消息的前提下, 如果一定数目的消息(通过consumer或者channel设置qos的值)未被确...原创 2018-12-26 06:58:54 · 3275 阅读 · 0 评论 -
RabbitMQ高级特性-死信队列(DLX)
死信队列(DLX)Dead-Letter-Exchange利用DLX, 当消息在一个队列中变成死信(dead message)之后, 它能被重新publish到另一个Exchange, 这个Exchange就是DLXDLX也是一个正常的Exchange, 和一般的Exchange没有区别, 它能在任何队列上被指定, 实际上就是设置某个队列的属性为死信队列当这个队列中有死信时, Rabbi...原创 2018-12-31 10:02:56 · 4917 阅读 · 0 评论 -
RabbitMQ高级特性-TTL队列/消息
TTL队列/消息TTL是Time To Live的缩写, 也就是生存时间RabbitMQ支持消息的过期时间, 在消息发送时可以进行指定RabbitMQ支持队列的过期时间, 从消息入队列开始计算, 只要超过了队列的超时时间配置, 那么消息会自动清除代码演示消费者中设置队列超时时间为10秒, 启动之后关闭消费者生产者发送两条消息, 一条消息不设置超时时间, 一条消息设置5秒后超时启...原创 2018-12-31 09:59:16 · 9966 阅读 · 3 评论 -
Redis API-通用命令
keys : 遍历所有key 格式 : keys 通配符, keys *查出所有keykeys命令一般不在生产环境使用时间复杂度O(n)dbsize : 计算key的总数 时间复杂度O(1)exists key : 检查key是否存在 时间复杂度O(1)del key : 删除指定key-value 时间复杂度O(1)expire key seconds : key在sec...原创 2018-08-23 22:06:38 · 215 阅读 · 0 评论 -
Redis数据结构及常用API
字符串使用场景常用命令其他命令哈希(hash)特点常用命令列表特点常用命令其他命令Tips集合(Set)特点常用命令Tips有序集合(zset)特点常用命令字符串使用场景缓存分布式锁计数器…常用命令get key : 获取key对应的valueset key value : 设置ke...原创 2018-08-24 08:38:14 · 338 阅读 · 0 评论 -
Redis持久化的取舍和选择
持久化的作用什么是持久化 Redis的数据都保存在内存中,将对数据的更改异步保存到磁盘中,称之为持久化持久化方式 快照MySQL DumpRedis RDB写日志MySQL BinlogHbase HLogRedis AOFRedis的持久化方式RDB什么是RDB 将Redis中数据,以快照方式生成一个二进制的RDB文件存储到...原创 2018-08-29 22:51:41 · 551 阅读 · 0 评论 -
Redis复制的原理与优化
Redis单机问题主从复制作用主从复制限制主从复制配置执行命令配置实现两种方式对比全量复制开销部分复制故障处理slave故障master故障开发与运维中的问题主从复制问题Redis单机问题机器故障容量瓶颈QPS瓶颈主从复制作用数据副本扩展读性能(读写分离)主从复制限制一个master(主)可以有多个slave(从)...原创 2018-09-01 19:12:27 · 496 阅读 · 0 评论 -
Redis Sentinel-高可用
Redis Sentinel架构Redis Sentinel故障转移多个sentinel发现并确认master有问题选举一个sentinel作为领导选出一个slave作为master通知其余slave成为新的master的slave通知客户端主从变化等待老的master复活成为新的slave故障转移前:故障转移后:Redis Sentinel安装与配置...原创 2018-09-01 19:19:21 · 243 阅读 · 0 评论 -
Redis其他功能-慢查询,流水线,发布订阅,位图等
慢查询生命周期发送命令排队执行命令返回结果在”执行命令”阶段较慢的才是慢查询相关配置特点:保存在一个先进先出队列中固定长度保存在内存中 slowlog-max-len : 慢查询队列长度 slowlog-log-slower-than : 慢查询阈值(单位 : 微秒) 0 记录所有命令 <0 不...原创 2018-08-25 23:49:23 · 181 阅读 · 0 评论 -
Redis Cluster集群使用与原理
为什么需要集群并发量QPS较大数据量较大高并发和大数据量时, 单机无法满足,这个时候就需要使用分布式数据分布分布式数据库-数据分区顺序分区哈希分区顺序分区和哈希分区对比 :哈希分区节点取余(不建议)客户端分片 : 哈希 + 取余节点伸缩 : 数据节点关系变化, 导致数据迁移迁移数量和添加节点数量有关 : 建议翻倍扩容一致性...原创 2018-09-02 18:11:29 · 2683 阅读 · 0 评论 -
zookeeper集群搭建
zookeeper简介zookeeper是一个开源的分布式协调服务,是由雅虎创建的,基于google chubbyzookeeper是什么 : 分布式数据一致性的解决方案zookeeper能做什么数据的发布/订阅(配置中心:disconf), 类似MQ负载均衡(dubbo利用了zookeeper机制实现负载均衡)命名服务master选举(kafka、hadoop、hb...原创 2018-12-11 19:59:42 · 111 阅读 · 0 评论 -
zookeeper详解
zookeeper基本数据模型是一个树形结构, 类似于前端开发中的tree.js每一个节点都称之为znode, 它可以有子节点, 也可以有数据每个节点分为临时节点和永久节点, 临时节点在客户端断开后消失每个zk节点都有各自的版本号, 可以通过命令行来显示节点信息每当节点数据发生变化, 那么该节点的版本号会累加(乐观锁)删除/修改过时节点, 版本号不匹配则会报错每个zk节点存储的数据...原创 2018-12-11 20:23:23 · 208 阅读 · 0 评论 -
RabbitMQ入门与AMQP协议简介
文章目录概述优点RabbitMQ高性能的原因AMQP协议AMQP简介AMQP协议模型AMQP核心概念RabbitMQ整体架构RabbitMQ消息流转RabbitMQ安装与使用安装步骤RabbitMQ启动命令行与管控台快速入门添加Maven依赖生产者代码消费者代码概述RabbitMQ是一个开源的消息代理和队列服务器, 用来通过普通协议在完全不同的应用之间共享数据, RabbitMQ使用Erla...原创 2018-12-23 21:36:52 · 1653 阅读 · 0 评论 -
RabbitMQ成员简介
Exchange 交换机Exchange : 接收消息, 并根据路由键转发消息所绑定的队列交换机属性Name : 交换机名称Type : 交换机类型, direct, topic, fanout, headersDurability : 是否需要持久化, true为持久化Auto Delete : 当最后一个绑定到Exchange上的队列删除后, 自动删除该Exchange...原创 2018-12-24 20:05:03 · 1321 阅读 · 0 评论 -
RabbitMQ高级特性-消费端ACK与重回队列
消费端ACK与重回队列消费端ACK消费端的手工ACK和NACK, ACK是确认成功消费, NACK表示消息处理失败, 会重发消息消费端进行消费的时候, 如果由于业务异常我们可以进行日志的记录, 然后进行补偿如果由于服务器宕机等严重问题, 就需要手工进行ACK保障消费端消费成功重回队列消费端重回队列是为了对没有处理成功的消息, 把消息重新回递给Broker一般在实际应用中, 都会...原创 2018-12-26 07:02:27 · 2139 阅读 · 1 评论