当年,我们是怎么平滑上云的?
2015年底的时候,到家集团启动了一个“凌云”项目,将所有系统从北京的M6机房迁移到阿里云,完成技术栈“上云”。项目涉及几百台机器,到家所有的业务,所有的系统,需要所有技术部门配合,耗时超过一个季度,是一个不折不扣的大项目。今天,简单的聊聊当时的架构方案,我们是如何平滑进行机房迁移的。【1】核心问题
你永远不知道,有一天自己会被娱乐成什么样
公司放假了,2月份回归,精神松懈下来突然有点不适应。想想近一段时间挺忙的,公众号放下了几乎半个月,正好有时间写写文章。今天说说突破,最近3个小事,都和突破有关。【一】月初老板问我,你后续几年职业发展是怎么规划的?做最懂产品,最懂业务的技术管理者,我答道。老板很奇怪,为啥不是最懂产品,最懂业务的“人”
架构选型,究竟啥时候选redis?
redis是互联网分层架构中,最常用的KV缓存,但不少同学仍然不知道,为啥要选择redis。画外音:与之对比最多的,是memcache。一、复杂数据结构,选择redis更合适value是哈希,列表,集合,有序集合这类复杂的数据结构时,会选择redis,因为mc无法满足这些需求。最典型的场景,用户订单
24.方案2:追日志
追日志•记录日志(服务升级)•数据检验(小工具3)
37.总结 .
总结(中)4.旁路缓存最佳实践,CacheAsidePattern:(1)读最佳实践(2)写最佳实践:淘汰缓存,先写数据库5.数据冗余带来的不一致问题优化:(1)主从丌一致:忽略、强制读主、选择性读主(2)缓存丌一致:“写后立即读”问题,二次淘汰6.增加数据库实例/增大数据库容量的扩展性实践:(1)
36.六、总结
总结(上)1.基本概念(1)数据库工程架构,要考虑库表结构/索引结构,高可用/读性能/一致性/扩展性(2)分组/分片/垂直拆分,解决什么问题,带来什么问题,没有解决什么问题2.保证高可用的思路是复制冗余,数据冗余会引収一致性问题3.提升读性能的常见实践是:(1)加索引,丌同库的索引可以丌一样(2)加
35.假设数据丢了怎么办?
常见方案:好友中心实践线下扫全库线下扫增量线上实时检测
34.如何实现数据冗余?
好友中心实践服务同步冗余服务异步冗余线下异步冗余数据冗余有什么副作用?如何保证数据一致性?
34.数据冗余,是实现多对多关系,水平切分的常见方案!
•方案一:t(uid_1,uid_2)
33.多对多:实战-好友库拆分?
(2)查询加我为好友的用户(50%%请求)=>用户反向通知SELECTuidFROMfriendWHEREfriend_uid=$my_uid
32.帖子中心实践
除了uid/tid,标题/内容的分词查询怎么办?索引外置的系统架构
31.一对多业务场景:实战-帖子库拆分?
(1)查询帖子详情(90%%请求)SELECT*FROMtieziWHEREtid=$tid帖子中心实践假如按照tid分库?
30.除了login_name,后台复杂/批量/分页的查询怎么办?
用户中心实践:前台与后台分离
29.那login_name上的查询怎么办?
用户中心实践索引表法缓存映射法login_name生成uid基因法
28.各类业务场景水平切分实践
如何拆?用那个属性拆分?四类典型场景•几乎涵盖互联网90%%业务场景(单key)用户库如何拆分帖子库如何拆分好友库如何拆分订单库如何拆分
27.双倍扩容具体讲解
26.不需要改动代码的方法:双倍扩容
双倍扩容•收尾
25.方案3.双写
双写•数据检验(小工具2)
23.要解决什么问题?
22.五、扩展性优化
1.典型微服务架构数据库扩容典型场景•特点:数据量大/吞吐量大/高可用•系统架构:微服务•数据层如何高可用•数据层如何扩展•综合情况要解决什么问题?