[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/read-write-separation.html
前言
在数据库的读写研发中,我们遇到最多的可能就是数据量过多
导致的『读/写慢』
了。针对这些问题,我们一般主要会采取的措施有:
- 优化SQL
- 优化索引
- 优化硬件
- 分库分表
- 业务拆分
- 冷热分离
读写分离
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/read-write-separation.html
在数据库的读写研发中,我们遇到最多的可能就是数据量过多
导致的『读/写慢』
了。针对这些问题,我们一般主要会采取的措施有:
- 优化SQL
- 优化索引
- 优化硬件
- 分库分表
- 业务拆分
- 冷热分离
读写分离
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/cold-hot-separation.html
在数据库的读写研发中,我们遇到最多的可能就是数据量过多
导致的『读/写慢』
了。针对这些问题,我们一般主要会采取的措施有:
- 优化SQL
- 优化索引
- 优化硬件
- 分库分表
- 业务拆分
冷热分离
- 读写分离
这次我们主要讲讲冷热分离的实际使用场景,以及如何以前刚出来时候的项目实际落地方案。
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/%E5%A4%A7%E6%95%B0%E6%8D%AE/ES-work-principle.html
以下后续有缘补充
5. 写入数据时的底层数据
6. 更新/删除数据时的底层数据
type: drafts
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/precise-timing-task-design.html
这里主要是以订单超时取消为例
注意,此处存在一些已经超时的任务,需要加载的时候顺便执行取消订单逻辑,把过期的任务从数据库删除
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/same-data-push.html
先粗略写,日后有缘完善
上游系统在推送数据到下游系统时,由于网络、代码、又或者是运维上(主要是sql重推没去重之类的),导致上游短时间推送大量同一单号给到OMS系统,导致数据库压力剧增
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/cache-consistency-solution.html
考虑到部分场景可能需要强一致性缓存:
后端更新时,需要保证使用端查询缓存时立马就能查询出最新的缓存值,且需要考虑并发场景导致的不一致情况
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/system/how-to-improve-service-availability.html
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/idea/performance-optimization-core-ideas.html
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/sf-redis-sentinel-design.html
介于Redis-Sentinel的高可用性,我们在顺丰内部的Redis集群中,大量使用了Redis-Sentinel来保证Redis的高可用性
但是由于Redis主从的复制是异步的,从节点数据略微落后于主节点数据,为了业务的一致性,一般从节点是闲置的,也就是说不会做读写分离
但这种情况下,Redis的最高吞吐量会被限制死在单机的吞吐量上,这对于一些高吞吐量的业务来说,是不够的。 因此有了下面的架构
[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/redis/Redis-Sentinel-Summary.html