摘要: 本文主要讨论这么几个问题: (1)数据库主从延时为何会导致缓存数据不一致 (2)优化思路与方案 一、需求缘起 上一篇《缓存架构设计细节二三事》中有一个小优化点,在只有主库时,通过“串行化”的思路可以解决缓存与数据库中数据不一致。引发大家热烈讨论的点是“在主从同步,读写分离的数据库架构下,有可能出现脏 阅读全文
posted @ 2017-12-25 15:54 Sheldon_blog 阅读(758) 评论(0) 推荐(0) 编辑
摘要: 本文主要讨论这么几个问题: (1)啥时候数据库和缓存中的数据会不一致 (2)不一致优化思路 (3)如何保证数据库与缓存的一致性 一、需求缘起 上一篇《缓存架构设计细节二三事》(点击查看)引起了广泛的讨论,其中有一个结论:当数据发生变化时,“先淘汰缓存,再修改数据库”这个点是大家讨论的最多的。 上篇文 阅读全文
posted @ 2017-12-25 15:53 Sheldon_blog 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 本文主要讨论四个问题: (1)为什么会有冗余表的需求 (2)如何实现冗余表 (3)正反冗余表谁先执行 (4)冗余表如何保证数据的一致性 一、需求缘起 互联网很多业务场景的数据量很大,此时数据库架构要进行水平切分,水平切分会有一个patition key,通过patition key的查询能够直接定位 阅读全文
posted @ 2017-12-25 15:48 Sheldon_blog 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 本文主要讨论这么几个问题: (1)“缓存与数据库”需求缘起 (2)“淘汰缓存”还是“更新缓存” (3)缓存和数据库的操作时序 (4)缓存和数据库架构简析 一、需求缘起 场景介绍 缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。 例如对于用户的余额信息表acco 阅读全文
posted @ 2017-12-25 15:44 Sheldon_blog 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 一、基本概念 二、数据库架构设计思路 (1)可用性 (2)读性能 (3)一致性 (4)扩展性 一、基本概念 概念一“单库” 概念二“分片” 分片解决的是“数据量太大”的问题,也就是通常说的“水平切分”。 一旦引入分片,势必有“数据路由”的概念,哪个数据访问哪个库。 路由规则通常有3种方法: (1)范 阅读全文
posted @ 2017-12-25 15:40 Sheldon_blog 阅读(1797) 评论(0) 推荐(0) 编辑
摘要: 对于version + ext方案,还是有很多朋友质疑“线上不可能这么用”。本篇将讲述一下58同城最核心的数据“帖子”的架构实现技术细节,说明不仅不是“不可能这么用”,而是大数据,可变属性,高吞吐场景下的“常用手段”。 一、背景描述及业务介绍 问:什么是数据库扩展的version + ext方案? 阅读全文
posted @ 2017-12-25 15:36 Sheldon_blog 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 零、缘起 讨论问题域: (1)数据量大、并发量高场景,在线数据库属性扩展 (2)数据库表结构扩展性设计 一、哪些方案一定是不行的 (1)alter table add column 要坚持这个方案的,也不多解释了,大数据高并发情况下,一定不可行 (2)通过增加表的方式扩展,通过外键join来查询 大 阅读全文
posted @ 2017-12-25 15:34 Sheldon_blog 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 需求缘起 产品第一版:用户有用户名、密码、昵称等三个属性,对应表设计: user(uid, name, passwd, nick) 第二版,产品经理增加了年龄,性别两个属性,表结构可能要变成: user(uid, name, passwd, nick, age, sex) 假设数据量和并发量比较大, 阅读全文
posted @ 2017-12-25 15:32 Sheldon_blog 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。 如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是9 阅读全文
posted @ 2017-12-25 15:28 Sheldon_blog 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 一、什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per 阅读全文
posted @ 2017-12-25 15:24 Sheldon_blog 阅读(143) 评论(0) 推荐(0) 编辑