摘要: 为什么要将系统进行拆分? 网上查查,答案极度零散和复杂,很琐碎,原因一大坨。但是我这里给大家直观的感受: 要是不拆分,一个大系统几十万行代码,20 个人维护一份代码,简直是悲剧啊。代码经常改着改着就冲突了,各种代码冲突和合并要处理,非常耗费时间;经常我改动了我的代码,你调用了我的,导致你的代码也得重 阅读全文
posted @ 2019-05-26 17:40 windpoplar 阅读(1217) 评论(0) 推荐(0) 编辑
摘要: 其实所谓的高并发,如果你要理解这个问题呢,其实就得从高并发的根源出发,为啥会有高并发?为啥高并发就很牛逼? 我说的浅显一点,很简单,就是因为刚开始系统都是连接数据库的,但是要知道数据库支撑到每秒并发两三千的时候,基本就快完了。所以才有说,很多公司,刚开始干的时候,技术比较 low,结果业务发展太快, 阅读全文
posted @ 2019-05-26 17:09 windpoplar 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。 MySQL 主从复制原理的是啥? 主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个 IO 线程,将主库的 阅读全文
posted @ 2019-05-26 16:57 windpoplar 阅读(2344) 评论(0) 推荐(0) 编辑
摘要: 基于数据库的实现方案 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。 这个方案的好处就是方便简单,谁都会用;缺点就是单库生成自增 id,要是高并发的话, 阅读全文
posted @ 2019-05-26 16:51 windpoplar 阅读(1150) 评论(0) 推荐(0) 编辑
摘要: 停机扩容(不推荐) 这个方案就跟停机迁移一样,步骤几乎一致,唯一的一点就是那个导数的工具,是把现有库表的数据抽出来慢慢倒入到新的库和表里去。但是最好别这么玩儿,有点不太靠谱,因为既然分库分表就说明数据量实在是太大了,可能多达几亿条,甚至几十亿,你这么玩儿,可能会出问题。 从单库单表迁移到分库分表的时 阅读全文
posted @ 2019-05-26 16:40 windpoplar 阅读(1671) 评论(2) 推荐(2) 编辑
摘要: 停机迁移方案 我先给你说一个最 low 的方案,就是很简单,大家伙儿凌晨 12 点开始运维,网站或者 app 挂个公告,说 0 点到早上 6 点进行运维,无法访问。 接着到 0 点停机,系统停掉,没有流量写入了,此时老的单库单表数据库静止了。然后你之前得写好一个导数的一次性工具,此时直接跑起来,然后 阅读全文
posted @ 2019-05-26 16:30 windpoplar 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?) 说白了,分库分表是两回事儿,大家可别搞混了,可能是光分库不分表,也可能是光分表不分库,都有可能。 我先给大家抛出来一个场景。 假如我们现在是一个小创业公司(或者是一个 BAT 公司刚兴起的一个新部门),现在注册用户就 20 万,每天 阅读全文
posted @ 2019-05-26 15:57 windpoplar 阅读(1788) 评论(0) 推荐(1) 编辑
摘要: redis cluster,10 台机器,5 台机器部署了 redis 主实例,另外 5 台机器部署了 redis 的从实例,每个主实例挂了一个从实例,5 个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每秒 5 万,5 台机器最多是 25 万读写请求/s。 机器是什么配置?32G 内存 阅读全文
posted @ 2019-05-26 14:56 windpoplar 阅读(1166) 评论(0) 推荐(0) 编辑
摘要: redis cluster 介绍 自动将数据进行分片,每个 master 上放一部分数据 提供内置的高可用支持,部分 master 不可用时,还是可以继续工作的 在 redis cluster 架构下,每个 redis 要放开两个端口号,比如一个是 6379,另外一个就是 加1w 的端口号,比如 1 阅读全文
posted @ 2019-05-26 14:53 windpoplar 阅读(516) 评论(0) 推荐(0) 编辑
摘要: redis 持久化的两种方式 RDB:RDB 持久化机制,是对 redis 中的数据执行周期性的持久化。 AOF:AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集。 通过 阅读全文
posted @ 2019-05-26 11:59 windpoplar 阅读(222) 评论(0) 推荐(0) 编辑
摘要: redis 过期策略 redis 过期策略是:定期删除+惰性删除。 所谓定期删除,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。 假设 redis 里放了 10w 个 key,都设置了过期时间,你每隔几百毫秒,就检查 10w 个 阅读全文
posted @ 2019-05-26 11:22 windpoplar 阅读(1064) 评论(0) 推荐(0) 编辑