后端存储技术名词
分片:数据量大(分库分表等)
分片算法:范围分片,Hash分片
并发高:新增实例(业务维度拆分,同业务拆分)
高可用HA:主从复制
状态不一致:复制状态机技术(快照+日志)
Grousip: 流言协议
冗余:增加副本
去中心化设计:无主模式
版本号技术:无主模式选举 Redis
元数据库:热点数据倾斜,文件存储
Raft: 复制状态机保证数据可靠,心跳和选举保证高可用
半数投票: 奇数副本,半数投票通过当Leader
NWR: W+R>N
脑裂:主库宕机,主库和从库二份不一样的数据,无法自动恢复
MySQL:读写分离、分库分表、归档、复制(同步复制、异步复制、半同步复制: 至少保证复制1台机器)、备份安全(全量备份与增量备份)、不停服数据迁移
分布式ID:Snowflake,Twitter分布式ID算法
订单号服务:日志记载主键防重,三方对账
CAS: 比较交换,避免ABA问题
Cache: Read/Write Through, Cache Aside
分片:Hash分片
高可用HA: 主从复制,复制状态机理论
Redis集群不适合大规模集群原因:Grousip协议,主挂了从节点版本号选举技术 =》代理模式&客户端寻址模式
Canal: 订阅Binlog,同步Redis
ES: 倒排索引,索引(表),文档 (行)、字段(列)、Mapping
分布式文件系统: 元数据、分块、版本号选举(主挂了,从节点选举)、整块复制
海量数据:Kafak、HDFS、实时流计算(Flink,Storm)、离线批计算(MapReduce、Spark)
< GB: MySQL 10GB: 优先考虑ES, 后考虑HBase等 TB: HDFS
一致性方案
实例状态保持一致:实例宕机或网络分区故障
一致性与可用性原则:如无必要,勿增副本
解决一致性代价:可用性降低、性能下降、用户体验变差或增加系统复杂度 =》不要人为制造一致性难题
副本设计:
不同格式或数据结构存储多个副本
不同类型的外部存储多个副本
本地磁盘或内存中缓存数据副本
常见错误示例:
1、为写代码方便,A表部分字段,B表也存储1份
2、集群元数据存储Zookeeper,为方便管理控制台,MySQL也保存1份
3、不考虑系统性能要求,Redis和内存中都缓存数据
一致性:一个整体对外所表示的一致性,分布式系统内部可以存在不一致状态,这种状态外部不可见
难点1:如何处理操作失败的情况?
A节点更新成功,B节点更新失败,系统保持一致,需将这种不一致隔离在系统内部,不让外部感知,并尽快修复不一致状态;
修复策略:重试/回滚 =》 代价非常大
难点2:一个节点不可用,如何保证一致性
难点3:网络分区情况,保证系统一致性
BASE理论:允许不一致的中间状态被外部可见,但需要在短时间内恢复为一致状态
牺牲一致性需要守住两个底线:防止脑裂和要保证单调读写 (状态版本号)
减缓DB压力
加速查询请求
赋能应用服务
主节点:读写
从节点: 分流读压力+容灾
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix