多级缓存(亿级并发解决方案)
多级缓存(亿级流量(并发)的缓存方案)
传统缓存的问题
传统缓存是请求到达tomcat后,先查询redis,如果未命中则查询数据库,问题如下:
(1)请求要经过tomcat处理,tomcat成为整个系统的瓶颈。
(2)redis缓存失效时,会对数据库产生冲击。(缓存雪崩等各个问题)
tomcat本身的缓存(并发)能力是不如redis的。

多级缓存
(1)多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻tomcat压力,提升服务性能。
静态资源请求存入到浏览器客户端缓存,非静态数据进入到nginx服务器(此时的nginx为nginx的本地缓存,可编程将查询数据去访问redis中,不去请求tomcat),可将数据存入到业务nginx中。redis缓存未命中时,到达tomcat中可读取进程缓存来获得数据。tomcat进程缓存未命中,就到达
数据库。
(2)redis缓存失效时,(发生缓存雪崩等)可以使用tomcat进程(也称jvm进程缓存)缓存做缓冲,从而避免了全部访问数据库。
(3)业务nginx内部需要编写对redis的访问和对tomcat进程缓存的访问。
(4)业务nginx通常作为集群的形式

jvm进程缓存
使用lua语言编写业务nginx的逻辑
缓存同步策略
缓存数据同步的常见方式
(1)设置有效期:给缓存设置有效期,到期后自动删除。再次查询时更新。
缺点:时效性差,缓存过期前可能不一致
优点:简单、方便 ,适用于更新频率低,时效性要求低的业务
(2)同步双写:在修改数据库的同时,直接修改缓存
优势:时效性强,强一致性缺点:业务代码中有侵入代码(更新缓存操作),耦合度高;适用于对一致性和时效性较高的缓存数据。
(3)异步通知:修改数据库时发送事件通知,相关服务监听到通知后修改缓存数据
优点:低耦合,可以同时通知多个缓存服务
缺点:时效性一般(其实也就够了,mq收到消息之间只是ms级别);适用于有多个服务需要同步。
<1> 基于mq的异步通知(仍需要在代码中进行操作mq)

<2> 基于Canal的异步通知(通过监听数据库的变化)

canal监听原理
canal把自己伪装成mysql的一个slave节点,从而监听master的binary log变化,再把得到的变化信息通知给Canal的客户端,从而完成对其他数据库的同步。


项目(在默认tomcat容器中)编写监听Canal客户端
引入依赖

编写配置:
canal:destination:test # canal实例名称,要跟canal-server运行时设置的destination一致。server:安装ip:端口号 # canal地址
编写监听器
实现EntryiHandler接口,重写方法(监听到数据库的新增、修改、删除会执行对应的方法)

编写指定的实体类Item(表和实体类之间的映射关系)
@Id : 声明表的逐渐
@Transient: 表示不是当前表的字段
@Column:当数据库和实体类字段名称不一致时编写

相关文章:
多级缓存(亿级并发解决方案)
多级缓存(亿级流量(并发)的缓存方案) 传统缓存的问题 传统缓存是请求到达tomcat后,先查询redis,如果未命中则查询数据库,问题如下: (1)请求要经过tomcat处…...
代理模式 - 代理模式的应用
引言 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个代理对象来控制对另一个对象的访问。代理对象通常会在客户端和目标对象之间起到中介的作用,从而可以在不改变目标对象的情况下,增加额外的功能或控…...
编辑器Vim基本模式和指令 --【Linux基础开发工具】
文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…...
云计算如何与物联网(IoT)结合?
今天我们来聊一个既酷炫又实用的话题:云计算如何给物联网插上腾飞的翅膀。 智能时代的技术密码 想象一下,你家的冰箱会自动帮你订购即将用完的牛奶,工厂的机器能预测何时需要维修,城市的路灯会根据实时交通流量调整亮度。这些看…...
C#面试常考随笔4:int? 和 int的区别,以及int?的运用场景?
可空性 int?:它是int的可空类型,允许将null赋值给该变量。int?实际上是Nullable<int>的缩写形式,是一个可以为null的整数类型。例如:int? num2 null;或者int? num3 10;都是合法的。 内存分配与存储 int?ÿ…...
DeepSeek-R1试用
最近DeepSeek太火了,对配置要求不高。刚好放假,下载试试。发现开源大模型的生态做的挺好的,几分钟就能在本地部署一个大模型。 配置 NVIDIA RTX 2060 6GB(最低要求 NVIDIA GTX 1060 6GB ) 下载Ollama Ollama是一个…...
Vue 3 30天精进之旅:Day 06 - 表单输入绑定
引言 在前几天的学习中,我们探讨了事件处理的基本概念及其在Vue中的应用。今天,我们将进一步了解Vue的表单输入绑定。这是构建用户交互式应用的核心部分,使得我们能够方便地处理用户输入并实时更新数据。本文将介绍如何在Vue中实现单向和双向…...
[创业之路-269]:《创业讨论会》- 系统之韵:从麻雀到5G系统的共通性探索
关键词: 从系统的角度,麻雀、人体系统、企业系统、软硬件系统、软件系统、通信系统、5G系统是类似的: 都有:内在看不见的规律、外在显性各种现象 都是:输入、处理、输出 都是:静态、要素、组成、结构、组织…...
使用C#对指定的MYSQL数据库进行备份以及常见问题
最近在开发过程中,需要做个MYSQL数据库的备份,大致总结了一下代码,以及常见的坑 string bakName "database" DateTime.Now.ToString("yyyyMMddHHmmss") ".sql";//备份后的数据库文件名var bakupFilePath &q…...
探索人工智能在计算机视觉领域的创新应用与挑战
一、引言 1.1 研究背景与意义 在科技飞速发展的当下,人工智能(Artificial Intelligence, AI)已然成为引领新一轮科技革命和产业变革的重要驱动力。作为 AI 领域的关键分支,计算机视觉(Computer Vision, CV࿰…...
Charles 4.6.7 浏览器网络调试指南:HTTPS抓包(三)
概述 在现代互联网应用中,网络请求和响应是服务交互的核心。对于开发者和测试人员来说,能够准确捕获并分析这些请求,是保证系统稳定性和性能的关键。Charles作为一个强大的网络调试工具,不仅可以捕获普通的HTTP请求,还…...
STM32 对射式红外传感器配置
这次用的是STM32F103的开发板(这里面的exti.c文件没有how to use this driver 配置说明) 对射式红外传感器 由一个红外发光二极管和NPN光电三极管组成,M3固定安装孔,有输出状态指示灯,输出高电平灯灭,输出…...
12 款开源OCR发 PDF 识别框架
2024 年 12 款开源文档解析框架的选型对比评测:PDF解析、OCR识别功能解读、应用场景分析及优缺点比较 这是该系列的第二篇文章,聚焦于智能文档处理(特别是 PDF 解析)。无论是在模型预训练的数据收集阶段,还是基于 RAG…...
危机13小时:追踪一场GitHub投毒事件
事件概要 自北京时间 2024.12.4 晚间6点起, GitHub 上不断出现“幽灵仓库”,仓库中没有任何代码,只有诱导性的病毒文件。当天,他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒,等待不…...
CVE-2020-0796永恒之蓝2.0(漏洞复现)
目录 前言 产生原因 影响范围 漏洞复现 复现环境 复现步骤 防御措施 总结 前言 在网络安全的战场上,漏洞一直是攻防双方关注的焦点。CVE-2020-0796,这个被称为 “永恒之蓝 2.0” 的漏洞,一度引起了广泛的关注与担忧。它究竟是怎样的…...
游戏策划的分类
P3游戏策划分类 1.程序2.美术3.策划 程序:一般分为客户端程序和服务器程序 客户端程序一般负责游戏的前端画面表现 服务器程序负责游戏的后端运算 美术:角色原画,角色模型动作,场景原画,场景模型,UI设计&a…...
单片机基础模块学习——PCF8591芯片
一、A/D、D/A模块 A——Analog 模拟信号:连续变化的信号(很多传感器原始输出的信号都为此类信号)D——Digital 数字信号:只有高电平和低电平两种变化(单片机芯片、微控制芯片所能处理的都是数字信号) 下面…...
深入探索 HTML5 拖拽效果 API:打造流畅交互体验
在现代的 Web 开发中,交互性和用户体验一直是开发者关注的重点。HTML5 的拖拽效果 API (Drag and Drop API) 提供了一种非常直观的方式来让网页元素或文件能够被拖动并放置到页面的指定位置,极大提升了用户的交互体验。本篇文章将深入探讨如何使用 HTML5…...
【Healpix】python一种用于将球面划分为均匀区域的技术
Healpix 1、简介2、Healpix的基本原理3、Healpix的优点4、安装及使用4.1 安装healpy4.2 创建Healpix地图4.3 读取和写入Healpix数据4.4 数据插值 5、案例5.1 案例一:宇宙微波背景辐射(CMB)分析5.2 案例二:星系分布分析5.3 案例三&…...
Go:基于Go实现一个压测工具
文章目录 写在前面整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理 客户端模块Http客户端处理Grpc客户端处理Websocket客户端处理 连接处理模块GrpcHttp 统计数据模块统计原理实现过程 写在前面 本篇主要是基于Go来实现一个压测的工具,关于压测的内…...
openclaude:模型接入 Code 工具链
作为一名长期关注人工智能工程化落地的开发者,我深知本地大模型在隐私保护和成本控制上的优势,但往往苦于缺乏像 Claude Code 那样强大的工具调用能力。很多时候,我们拥有强大的模型(如 DeepSeek、Ollama 本地部署)&am…...
效率提升:用快马ai加速openclaw在ubuntu上的抓取方案寻优与评估
最近在做一个机器人抓取优化的项目,需要在Ubuntu系统上使用OpenClaw库来实现高效的物体抓取方案。整个过程涉及到抓取位姿生成、稳定性评估和碰撞检测等多个环节,手动编码调试起来特别耗时。后来尝试用InsCode(快马)平台的AI辅助功能,发现能大…...
深入理解请求限流算法的实现细节
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
别急着升级Win11 24H2!先看看这10个必做的性能调优(附保姆级截图)
别急着升级Win11 24H2!先看看这10个必做的性能调优(附保姆级截图) 每次Windows大版本更新都像开盲盒——有人欢呼性能飞跃,有人抱怨卡顿加剧。24H2作为微软首个深度整合AI能力的年度更新,系统底层调度逻辑发生了显著变…...
OpenClaw与Qwen3-14b_int4_awq联动:低成本实现个人自动化办公
OpenClaw与Qwen3-14b_int4_awq联动:低成本实现个人自动化办公 1. 为什么选择OpenClawQwen3-14b_int4_awq组合 去年夏天,当我第一次尝试用AI自动化处理周报时,发现商业API的token消耗速度远超预期——生成5份周报就花掉了近50元。这促使我开…...
Windows HEIC缩略图支持:让资源管理器直接预览HEIC文件的完整方案
Windows HEIC缩略图支持:让资源管理器直接预览HEIC文件的完整方案 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 跨平台图…...
2025届学术党必备的降重复率网站横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 研究人工智能开题报告的工具,借助自然语言处理技术,靠着学术大数据分…...
并联混合动力船舶能量管理策略与SOC约束优化研究
并联混合动力船舶能量管理策略与SOC约束优化研究 摘要 本文针对并联混合动力船舶能量管理问题,基于等效燃油消耗最小化策略(ECMS),构建了包含柴油机、电动机、电池及船舶动力学系统的仿真模型。通过调整电池荷电状态(SOC)约束范围,分析其对燃油经济性、电池寿命及系统…...
基于Matlab的路面裂缝检测识别系统:实现精准路面“体检”
基于Matlab的路面裂缝检测识别系统设计,载入待识别图片,对目标图像进行直方图均衡化、中值滤波去噪、对比度增强、二值化处理、二值化滤波、裂缝识别、裂缝判断、裂分拼接、裂缝投影及标记等一系列操作,完成路面识别的准确识别 程序已调通&am…...
上市公司数字化转型指数(2007-2024)Word2Vec扩充+TF-IDF
上市公司数字化转型指数(2007-2024)Word2Vec扩充TF-IDF数据名称:A股上市公司数字化转型指数 时间跨度:2007年-2024年 数据格式:Excel表格(dta可直接导入) 包含指标:股票代码、年份、…...
