分布式缓存 + 数据存储 + 消息队列知识体系

文章目录

      • 1. 分布式缓存的原理和技术
      • 2. 数据存储
      • 3. 数据的备份、恢复、迁移
      • 4. 项目案例分析
      • 5. 消息队列的原理和技术
      • 6. 消息队列的高级特性
      • 7. 项目案例分析


1. 分布式缓存的原理和技术

  • 分布式缓存:分布式缓存是一种将数据存储在网络中的多个节点上的技术,通过网络将数据分散存储,以提高系统的性能和响应速度。常见的分布式缓存系统有 Redis、Memcached 等。

    • Redis:高性能的键值存储系统,支持多种数据结构,如字符串、哈希、列表、集合等。Redis 可以通过集群模式实现水平扩展。
    • Memcached:高性能的分布式内存对象缓存系统,主要用于加速动态 Web 应用程序。
  • Redis 集群模式:Redis 集群模式通过分片技术将数据分布在多个节点上,每个节点只负责一部分数据。客户端可以直接连接到任意一个节点,集群内部会自动进行数据路由。集群模式可以实现高可用性和水平扩展。

  • 缓存穿透:当缓存和数据库中都没有某个不存在的数据时,攻击者可以通过不断请求这个数据来消耗系统资源。解决方案包括:

    • 布隆过滤器:在缓存之前使用布隆过滤器判断数据是否存在。
    • 缓存空值:将查询结果为空的数据也缓存一段时间,防止频繁查询。
  • 缓存雪崩:当大量缓存在同一时间过期,导致大量请求直接打到数据库,造成数据库压力过大。解决方案包括:

    • 设置随机过期时间:为缓存设置一个随机的过期时间,避免大量缓存同时过期。
    • 限流降级:在缓存失效时,对请求进行限流或降级处理。

2. 数据存储

  • 分布式文件系统:分布式文件系统是一种将文件数据分布在多个节点上的存储系统,通过网络将数据分散存储,以提高系统的性能和可靠性。常见的分布式文件系统有 Hadoop 的 HDFS、Google 的 GFS 等。

    • HDFS:Hadoop 分布式文件系统,设计用于存储大规模的文件数据,具有高容错性和高吞吐量的特点。HDFS 通过 NameNode 和 DataNode 的架构来管理文件系统的命名空间和数据块。
  • 对象存储:对象存储是一种将数据以对象的形式存储在存储节点上的技术,每个对象都有一个唯一的标识符。对象存储适合存储大量的非结构化数据,如图片、视频等。常见的对象存储服务有 Amazon S3、阿里云 OSS 等。

    • Amazon S3:Amazon Simple Storage Service,提供高度可扩展、可靠且低成本的对象存储服务。
    • 阿里云 OSS:阿里云对象存储服务,提供高可靠、高可用、高性能的存储服务,适用于各种场景。
  • 本地缓存:本地缓存是指将数据存储在应用程序本地内存中的技术,可以显著提高应用程序的性能。常见的本地缓存库有 Guava Cache、Caffeine 等。

    • Guava Cache:Google 开源的本地缓存库,提供了简单易用的 API,支持缓存的过期策略和加载机制。
    • Caffeine:高性能的本地缓存库,基于 Java 8 设计,提供了丰富的缓存策略和优化。

3. 数据的备份、恢复、迁移

  • 数据备份:数据备份是指定期将数据复制到其他存储介质上的过程,以防止数据丢失。常见的备份策略有全量备份、增量备份和差异备份。

    • 全量备份:备份所有数据,耗时较长,但恢复速度快。
    • 增量备份:只备份自上次备份以来新增或修改的数据,耗时较短,但恢复速度慢。
    • 差异备份:备份自上次全量备份以来新增或修改的数据,介于全量备份和增量备份之间。
  • 数据恢复:数据恢复是指在数据丢失或损坏的情况下,从备份中恢复数据的过程。常见的恢复策略有即时恢复、热备份恢复和冷备份恢复。

    • 即时恢复:在数据丢失时立即从备份中恢复数据,恢复时间较短。
    • 热备份恢复:在不影响系统正常运行的情况下恢复数据,适用于高可用系统。
    • 冷备份恢复:在系统停止运行的情况下恢复数据,恢复时间较长。
  • 数据迁移:数据迁移是指将数据从一个存储系统迁移到另一个存储系统的过程。常见的迁移工具和技术有数据同步工具、ETL 工具等。

    • 数据同步工具:如 Apache Kafka、Apache Flink 等,可以实现实时或近实时的数据同步。
    • ETL 工具:如 Talend、Informatica 等,可以实现数据的抽取、转换和加载。

4. 项目案例分析

  • 项目背景:某大型电商平台需要处理海量用户数据和商品数据,面临高并发访问和数据一致性的问题。
  • 解决方案
    • 分布式文件系统:使用 Hadoop HDFS 存储用户行为日志和商品数据,通过 MapReduce 进行数据分析和处理。
    • 对象存储:使用阿里云 OSS 存储用户的头像、商品图片等非结构化数据,提高存储的可靠性和性能。
    • 本地缓存:在应用层使用 Guava Cache 缓存用户会话信息和常用数据,减少数据库访问次数,提高系统响应速度。
    • 分布式缓存:使用 Redis 集群模式缓存热点数据,如热门商品信息、用户购物车数据等,提高缓存的命中率和系统的可扩展性。
    • 数据备份:制定全量备份和增量备份策略,定期将数据备份到云存储中,确保数据的安全性。
    • 数据恢复:在数据丢失或损坏时,从备份中恢复数据,确保系统的正常运行。
    • 数据迁移:使用 Apache Kafka 实现实时数据同步,将用户行为日志从生产环境同步到分析环境,进行实时数据分析。

5. 消息队列的原理和技术

  • 消息队列:消息队列是一种异步通信机制,通过消息传递来实现系统之间的解耦。常见的消息队列有 Kafka、RabbitMQ 等。

  • Kafka:Kafka 是一个分布式的流处理平台,具有高吞吐量、可持久化、多副本等特性。适用于日志收集、监控数据聚合等场景。

  • RabbitMQ:RabbitMQ 是一个开源的消息代理和队列服务器,支持多种消息协议。适用于需要复杂路由规则的场景。

6. 消息队列的高级特性

  • 事务消息:事务消息确保消息发送和本地事务在同一事务中提交,保证数据的一致性。Kafka 和 RocketMQ 支持事务消息。

  • 死信队列:当消息在队列中达到最大重试次数或超过一定时间仍未被消费时,会被发送到死信队列。可以用于排查和处理未被正确消费的消息。

  • 延迟队列:延迟队列允许消息在指定的时间后才被消费。适用于定时任务、订单超时等场景。RabbitMQ 和 Kafka 都支持延迟队列。

7. 项目案例分析

  • 项目背景:某电商平台在高峰期面临高并发访问,导致数据库压力过大,系统响应缓慢。
  • 解决方案
    • 分布式缓存:使用 Redis 集群模式缓存热点数据,减少数据库访问次数,提高系统响应速度。
    • 缓存穿透:使用布隆过滤器和缓存空值策略,防止恶意攻击。
    • 缓存雪崩:为缓存设置随机过期时间,避免大量缓存同时过期。
    • 消息队列:使用 Kafka 实现订单系统的异步处理,提高系统的可扩展性和可靠性。
    • 事务消息:在订单创建过程中使用 Kafka 的事务消息,确保订单创建和库存扣减的一致性。
    • 死信队列:配置死信队列,处理未被正确消费的消息,确保数据不丢失。
    • 延迟队列:使用 RabbitMQ 的延迟队列实现订单超时取消功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5 第一人称射击项目学习(完结)

这个项目几乎完结了。 也算我上手的第一个纯蓝图小项目。 现在只剩下缝缝补补了。 之前把子弹设计为蓝图,这里要引入C的面向对象思想,建立成员函数。 首先双击打开子弹的蓝图 这边就可以构造成员函数 写一个print your name 在这里生成成员函数后&am…

三相正弦交流电的相序:揭秘正相序与反相序的奥秘

在电力系统中,三相正弦交流电的应用无处不在,从家庭用电到大型工业设备,都离不开它的稳定供电。然而,在三相交流电中,有一个概念常常让初学者感到困惑,那就是“相序”。今天,我们就来深入探讨一…

力扣面试题 - 24 插入

题目&#xff1a; 给定两个整型数字 N 与 M&#xff0c;以及表示比特位置的 i 与 j&#xff08;i < j&#xff0c;且从 0 位开始计算&#xff09;。 编写一种方法&#xff0c;使 M 对应的二进制数字插入 N 对应的二进制数字的第 i ~ j 位区域&#xff0c;不足之处用 0 补齐…

华为云容器监控平台

首先搜索CCE,点击云容器引擎CCE 有不同的测试&#xff0c;生产&#xff0c;正式环境 工作负载--直接查询服务名看监控 数据库都是走的一个 Redis的查看

Spring Cloud Stream实现数据流处理

1.什么是Spring Cloud Stream&#xff1f; 我看很多回答都是“为了屏蔽消息队列的差异&#xff0c;使我们在使用消息队列的时候能够用统一的一套API&#xff0c;无需关心具体的消息队列实现”。 这样理解是有些不全面的&#xff0c;Spring Cloud Stream的核心是Stream&#xf…

Notepad++--在开头快速添加行号

原文网址&#xff1a;Notepad--在开头快速添加行号_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Notepad怎样在开头快速添加行号。 需求 原文件 想要的效果 方法 1.添加点号 Alt鼠标左键&#xff0c;从首行选中首列下拉&#xff0c;选中需要添加序号的所有行的首列&#xff…

【ROS2】多传感器融合、实现精准定位:robot_localization

1、简述 robot_localization在SLAM建图、导航中常用于将多个传感器融合(IMU、里程计、深度相机、GPS等),以提高定位精度,为机器人提供了在三维空间中的非线性状态估计 robot_localization包含两个状态估计节点: ekf_localization_node:扩展卡尔曼滤波(EKF),缺点是非…

【智谱开放平台-注册_登录安全分析报告】

前言 由于网站注册入口容易被机器执行自动化程序攻击&#xff0c;存在如下风险&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露&#xff0c;不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 &#xff0c;造成用户无法登陆、注册&#xff0c;大量收到垃圾短信的…

永夜星河主题特效2(星河背景 + 闪烁文字+点击星星 + 文字弹出特效)

目录 图片展示 星河背景 闪烁文字点击星星 文字弹出特效 特效介绍&#xff1a; 使用方式&#xff1a; 图片展示 星河背景 闪烁文字点击星星 文字弹出特效 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8">&l…

SAP Ariba Contracts_Author the Main Agreement

SAP Ariba Contracts_Author the Main Agreement Workspace Documents 从SAP Ariba 项目模板中继承的文档将自动出现在控件的“文档”选项卡中项目&#xff0c;Workspace Documents 管理所有合同相关文件的地方&#xff0c;如主要协议&#xff0c;附录&#xff0c;合同条款等…

C++练习题(5)

//函数打印素数 #include <iostream> using namespace std; int is_prime(int n){ for(int j2;j<n;j){ if(n%j0) return 0; } return 1; } int main(){ int i0; for(int i100;i<200;i){ if(is_prime(i)1) pr…

编程之路,从0开始:动态内存管理

Hello&#xff0c;大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路。 我们今天来学习C语言中的动态内存管理。 目录 1、为什么要有动态内存管理&#xff1f; 2、malloc和free &#xff08;1&#xff09;malloc函数 &…

【题解】AT_joisc2007_mall ショッピングモール (Mall)

原题传送门 温馨提示&#xff1a;岛国题要换行&#xff01; 需要求一个矩阵的和&#xff0c;考虑二维前缀和。 题目中不允许矩阵中有负数&#xff0c;结合求和的最小值&#xff0c;我们把负数赋为最大值不就行了吗。 接下来就是求二维前缀和了。 基于容斥原理&#xff0c;二…

Apifox软件Mock前端数据,帮忙生成API接口文档

Apifox是一款功能强大的接口调试软件&#xff0c;其特色功能丰富&#xff0c;且在前端mock数据生成方面表现出色。以下是对Apifox软件特色功能的详解&#xff0c;以及如何进行前端mock数据生成的步骤&#xff1a; https://apifox.com/help/api-docs/exporting-api https://www…

入门pandas

pandas是本书后续内容的首选库。它含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas经常和其它工具一同使用&#xff0c;如数值计算工具NumPy和SciPy&#xff0c;分析库statsmodels和scikit-learn&#xff0c;和数据可视化库matplotlib。pandas是基于NumPy…

Apple Vision Pro开发001-开发配置

一、Vision Pro开发硬件和软件要求 硬件要求软件要求 1、Apple Silicon Mac(M系列芯片的Mac电脑) 2、Apple vision pro-真机调试 XCode15.2及以上&#xff0c;调试开发和打包发布Unity开发者账号&&苹果开发者账号 二 、开启无线调试 1、Apple Vision Pro和Mac连接同…

无人机与低空经济:开启新质生产力的新时代

无人机技术作为低空经济的核心技术之一&#xff0c;正以其独特的优势在多个行业中发挥着重要作用&#xff0c;成为推动新质生产力革命的重要力量。无人机的应用范围广泛&#xff0c;从农业植保到物流配送&#xff0c;从城市监测到紧急救援&#xff0c;无人机的身影无处不在&…

故障排除-------K8s挂载集群外NFS异常

故障排除-------K8s挂载集群外NFS异常 1. 故障现象2. 原因梳理2.1 排查思路2.2 确认yaml内容2.3 创建k8s内的nfs测试2.3.1 创建nfs和svc2.3.2 测试创建pvc2.3.3 测试结果 2.4 NFS服务端故障排除2.4.1 网络阻断排除2.4.2 排除服务状态问题2.4.3 排查NFS权限问题 3. 故障排除 1. …

微服务即时通讯系统的实现(客户端)----(2)

目录 1. 将protobuf引入项目当中2. 前后端交互接口定义2.1 核心PB类2.2 HTTP接口定义2.3 websocket接口定义 3. 核心数据结构和PB之间的转换4. 设计数据中心DataCenter类5. 网络通信5.1 定义NetClient类5.2 引入HTTP5.3 引入websocket 6. 小结7. 搭建测试服务器7.1 创建项目7.2…

凸函数与深度学习调参

问题1&#xff1a;如何区分凸问题和凹问题&#xff1f; 问题2&#xff1a;深度学习如何区分调参&#xff1f;