11 2021 档案
摘要:Haproxy+Keepalive 实现高可用负载均衡 整体架构图 Haproxy 实现负载均衡 HAProxy 提供高可用性、负载均衡及基于 TCPHTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括 Twitter,Reddit,StackOverflow,GitHub
阅读全文
摘要:RabbitMQ 集群 搭建步骤 1.修改 3 台机器的主机名称 vim /etc/hostname 2.配置各个节点的 hosts 文件,让各个节点都能互相识别对方 vim /etc/hosts 10.211.55.74 node1 10.211.55.75 node2 10.211.55.76
阅读全文
摘要:幂等性 概念 用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记
阅读全文
摘要:发布确认 springboot 版本 配置文件 在配置文件当中需要添加 spring.rabbitmq.publisher-confirm-type=correlated NONE 禁用发布确认模式,是默认值 CORRELATED 发布消息成功到交换器后会触发回调方法 SIMPLE 经测试有两种效果
阅读全文
摘要:延迟队列 概念 延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。 延迟队列使用场景 1.订单在十分钟之内未支付则自动取消 2.新创建的店铺,如果在十天内都没有上传
阅读全文
摘要:生产者代码 /** * 死信队列 生产者 */ public class Producer { //普通交换机 public static final String NORMAL_EXCHANGE = "normal_exchange"; public static void main(String
阅读全文
摘要:交换机 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。 相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必
阅读全文
摘要:发布确认 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列
阅读全文
摘要:RabbitMQ 持久化 队列如何实现持久化 之前我们创建的队列都是非持久化的,rabbitmq 如果重启的化,该队列就会被删除掉,如果要队列实现持久化 需要在声明队列的时候把 durable 参数设置为持久化 //声明一个队列 boolean durable = true;//让 Queue 进行
阅读全文
摘要:消息应答 概念 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续发送给该消费这的消息,因为
阅读全文
摘要:Work Queues 工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。 轮训分发消息 在这个案例中
阅读全文
摘要:Hello World 我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者。我们将介绍 Java API 中的一些细节。 “ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代表使用者保留的消息缓冲区 依赖 <dependencies
阅读全文
摘要:RabbitMQ 的概念 RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。RabbitMQ 与快递站的主要区别在
阅读全文
摘要:MQ的相关概念 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 M
阅读全文
摘要:Nginx原理 1、master 和 worker 有一个 master 和 许多的 workers 2、worker 如何进行工作的 3、一个 master 和多个 woker 有好处 (1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作 (2)每个 woker
阅读全文
摘要:Nginx 配置实例-动静分离 1、什么是动静分离 通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自
阅读全文
摘要:Nginx 配置高可用的集群 1、什么是 nginx 高可用 1)需要两台 nginx 服务器 (2)需要 keepalived (3)需要虚拟 ip 2、配置高可用的准备工作 (1)需要两台服务器 192.168.17.129 和 192.168.17.131 (2)在两台服务器安装 nginx
阅读全文
摘要:nginx 配置实例-负载均衡 1、实现效果 (1)浏览器地址栏输入地址 http://192.168.17.129/edu/a.html,负载均衡效果,平均 8080和 8081 端口中 2、准备工作 (1)准备两台 tomcat 服务器,一台 8080,一台 8081 (2)在两台 tomcat
阅读全文
摘要:配置实例-反向代理 反向代理实例 1 1、实现效果 (1)打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中 2、准备工作 (1)在 liunx 系统安装 tomcat,使用默认端口 8080 tomcat 安装文件放到 liunx 系统中,
阅读全文
摘要:nginx 1、什么是 nginx Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。 2、反向代理 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问
阅读全文
摘要:企业级解决方案 缓存预热 缓存雪崩 缓存击穿 缓存穿透 性能指标监控 缓存预热 “宕机” 服务器启动后迅速宕机 问题排查 请求数量较高 主从之间数据吞吐量较大,数据同步操作频度较高 解决方案 前置准备工作: 日常例行统计数据访问记录,统计访问频度较高的热点数据 利用LRU数据删除策略,构建数据留存队
阅读全文
摘要:集群 redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到10万/秒 内存单机容量达到256G,当前业务需求内存容量1T 使用集群的方式可以快速解决上述问题 集群架构 集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果 集群作用 分散单台服务
阅读全文
摘要:哨兵模式 哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave连接到新的master。 哨兵的作用 监控 不断的检查master和slave是否正常运行。 master存活检测、master与slave运行情
阅读全文
摘要:主从复制 你的“Redis”是否高可用 单机redis的风险与问题 问题1.机器故障 现象:硬盘故障、系统崩溃 本质:数据丢失,很可能对业务造成灾难性打击 结论:基本上会放弃使用redis. 问题2.容量瓶颈 现象:内存不足,从16G升级到64G,从64G升级到128G,无限升级内存 本质:穷,硬件
阅读全文
摘要:删除策略 Redis中的数据特征 Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态 XX :具有时效性的数据 -1 :永久有效的数据 -2 :已经过期的数据 或 被删除的数据 或 未定义的数据 数据删除策略 定时删除 惰性删除 定期删除 数据删除策略的目
阅读全文
摘要:事务 什么是事务 redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。 一个队列中,一次性、顺序性、排他性的执行一系列命令 事务的基本操作 开启事务 multi 作用 设定事务的开启位置,此指令执行后,后续
阅读全文