《从程序员到架构师:大数据量 缓存、高并发、微服务 多团队协同等核心场景实战》是由机械工业出版社出版的一本关于架构师方面的书籍,作者是王伟杰,主要介绍了关于程序员、架构师方面的知识内容,目前在架构师类书籍综合评分为:9.7分。
书籍介绍
编辑推荐
实用、有料,阅读轻松、不费时
·立意场景化教学,一章一场景,理清技术应用
·众多项目经历尽在眼前,带你提前体验架构师“打怪”日常
*统一多色、调清、改字色……精心处理每一张框图,力争图图清晰
*每页增加笔记栏,方便记录拓展发散,提升阅读体验
内容简介
《从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战》分为数据持久化层场景实战、缓存层场景实战、基于常见组件的微服务场景实战、微服务进阶场景实战和开发运维场景实战5个部分,基于对十余个架构搭建与改造项目的经验总结,介绍了大数据量、缓存、高并发、微服务、多团队协同等核心场景下的架构设计常见问题及其通用技术方案,包含冷热分离、查询分离、分表分库、秒杀架构、注册发现、熔断、限流、微服务等具体需求下的技术选型、技术原理、技术应用、技术要点等内容,将技术讲解与实际场景相结合,内容丰富,实战性强,易于阅读。
《从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战》适合计划转型架构师的程序员及希望提升架构设计能力的IT从业人员阅读。
目录
- 序
- 前言
- 第1部分数据持久化层场景实战
- 第1章冷热分离/
- 1.1业务场景:几千万数据量的工单表如何快速优化/
- 1.2数据库分区,从学习到放弃/
- 1.3冷热分离简介/
- 1.3.1什么是冷热分离/
- 1.3.2什么情况下使用冷热分离/
- 1.4冷热分离一期实现思路:冷热数据都用MySQL/
- 1.4.1如何判断一个数据到底是冷数据还是热数据/
- 1.4.2如何触发冷热数据分离/
- 1.4.3如何分离冷热数据/
- 1.4.4如何使用冷热数据/
- 1.4.5历史数据如何迁移/
- 1.4.6整体方案/
- 1.5冷热分离二期实现思路:冷数据存放到HBase/
- 1.5.1冷热分离一期解决方案的不足/
- 1.5.2归档工单的使用场景/
- 1.5.3HBase原理介绍/
- 1.5.4HBase的表结构设计/
- 1.5.5二期的代码改造/
- 1.6小结/
- 第2章查询分离/
- 2.1业务场景:千万工单表如何实现快速查询/
- 2.2查询分离简介/
- 2.2.1何为查询分离/
- 2.2.2何种场景下使用查询分离/
- 2.3查询分离实现思路/
- 2.3.1如何触发查询分离/
- 2.3.2如何实现查询分离/
- 2.3.3查询数据如何存储/
- 2.3.4查询数据如何使用/
- 2.3.5历史数据迁移/
- 2.3.6MQElasticsearch的整体方案/
- 2.4Elasticsearch注意事项/
- 2.4.1如何使用Elasticsearch设计表结构/
- 2.4.2Elasticsearch的存储结构/
- 2.4.3Elasticsearch如何修改表结构/
- 2.4.4陷阱一:Elasticsearch是准实时的吗/
- 2.4.5陷阱二:Elasticsearch宕机恢复后,数据丢失/
- 2.4.6陷阱三:分页越深,查询效率越低/
- 2.5小结/
- 第3章分表分库/
- 3.1业务场景:亿级订单数据如何实现快速读写/
- 3.2拆分存储的技术选型/
- 3.2.1MySQL的分区技术/
- 3.2.2NoSQL/
- 3.2.3NewSQL/
- 3.2.4基于MySQL的分表分库/
- 3.3分表分库实现思路/
- 3.3.1使用什么字段作为分片主键/
- 3.3.2分片的策略是什么/
- 3.3.3业务代码如何修改/
- 3.3.4历史数据如何迁移/
- 3.3.5未来的扩容方案是什么/
- 3.4小结/
- 第2部分缓存层场景实战
- 第4章读缓存/
- 4.1业务场景:如何将十几秒的查询请求优化成毫秒级/
- 4.2缓存中间件技术选型(Memcached,MongoDB,Redis)/
- 4.3缓存何时存储数据/
- 4.4如何更新缓存/
- 4.4.1组合1:先更新缓存,再更新数据库/
- 4.4.2组合2:先删除缓存,再更新数据库/
- 4.4.3组合3:先更新数据库,再更新缓存/
- 4.4.4组合4:先更新数据库,再删除缓存/
- 4.4.5组合5:先删除缓存,更新数据库,再删除缓存/
- 4.5缓存的高可用设计/
- 4.6缓存的监控/
- 4.7小结/
- 第5章写缓存/
- 5.1业务场景:如何以小代价解决短期高频写请求/
- 5.2写缓存/
- 5.3实现思路/
- 5.3.1写请求与批量落库这两个操作同步还是异步/
- 5.3.2如何触发批量落库/
- 5.3.3缓存数据存储在哪里/
- 5.3.4缓存层并发操作需要注意什么/
- 5.3.5批量落库失败了怎么办/
- 5.3.6Redis的高可用配置/
- 5.4小结/
- 第6章数据收集/
- 6.1业务背景:日亿万级请求日志收集如何不影响主业务/
- 6.2技术选型思路/
- 6.2.1使用什么技术保存埋点数据的现场/
- 6.2.2使用什么技术收集日志数据到持久化层/
- 6.2.3为什么使用Kafka/
- 6.2.4使用什么技术把Kafka的数据迁移到持久化层/
- 6.3整体方案/
- 6.4小结/
- 第7章秒杀架构/
- 7.1业务场景:设计秒杀架构必知必会的那些事/
- 7.2整体思路/
- 7.2.1浏览页面如何将请求拦截在上游/
- 7.2.2下单页面如何将请求拦截在上游/
- 7.2.3付款页面如何将请求拦截在上游/
- 7.2.4整体服务器架构/
- 7.3小结/
- 第3部分基于常见组件的微服务场景实战
- 第8章注册发现/
- 8.1业务场景:如何对几十个后台服务进行高效管理/
- 8.2传统架构会出现的问题/
- 8.2.1配置烦琐,上线容易出错/
- 8.2.2加机器要重启/
- 8.2.3负载均衡单点/
- 8.2.4管理困难/
- 8.3新架构要点/
- 8.3.1中心存储服务使用什么技术/
- 8.3.2使用哪个分布式协调服务/
- 8.3.3基于ZooKeeper需要实现哪些功能/
- 8.4ZooKeeper宕机了怎么办/
- 8.5小结/
- 第9章全链路日志/
- 9.1业务场景:这个请求到底经历了什么/
- 9.2技术选型/
- 9.2.1日志数据结构支持OpenTracing/
- 9.2.2支持Elasticsearch作为存储系统/
- 9.2.3保证日志的收集对性能无影响/
- 9.2.4查询统计功能的丰富程度/
- 9.2.5使用案例/
- 9.2.6终选择/
- 9.3注意事项/
- 9.3.1SkyWalking的数据收集机制/
- 9.3.2如果SkyWalking服务端宕机了,会出现什么情况/
- 9.3.3流量较大时,如何控制日志的数据量/
- 9.3.4日志的保存时间/
- 9.3.5集群配置:如何确保高可用/
- 9.4小结/
- 第10章熔断/
- 10.1业务场景:如何预防一个服务故障影响整个系统/
- 10.1.1个问题:请求慢/
- 10.1.2第二个问题:流量洪峰缓存超时/
- 10.2覆盖场景/
- 10.3Sentinel和Hystrix/
- 10.4Hystrix的设计思路/
- 10.4.1线程隔离机制/
- 10.4.2熔断机制/
- 10.4.3滚动(滑动)时间窗口/
- 10.4.4Hystrix调用接口的请求处理流程/
- 10.5注意事项/
- 10.5.1数据一致性/
- 10.5.2超时降级/
- 10.5.3用户体验