猜你喜欢
从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战

从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战

书籍作者:王伟杰 ISBN:9787111699842
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7083
创建日期:2023-03-02 发布日期:2023-03-02
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战》分为数据持久化层场景实战、缓存层场景实战、基于常见组件的微服务场景实战、微服务进阶场景实战和开发运维场景实战5个部分,基于对十余个架构搭建与改造项目的经验总结,介绍了大数据量、缓存、高并发、微服务、多团队协同等核心场景下的架构设计常见问题及其通用技术方案,包含冷热分离、查询分离、分表分库、秒杀架构、注册发现、熔断、限流、微服务等具体需求下的技术选型、技术原理、技术应用、技术要点等内容,将技术讲解与实际场景相结合,内容丰富,实战性强,易于阅读。《从程序员到架构师:大数据量、缓存、高并发、微服务、多团队协同等核心场景实战》适合计划转型架构师的程序员及希望提升架构设计能力的IT从业人员阅读。

作者简介

曾任硅谷上市公司技术总监、知名重资产型互联网上市公司技术总监、创业公司 CTO。目前是建信金融科技·基础技术中心的技术专家。 拥有 15 年互联网研发经验,保险、电商、银行等行业领域都有所涉猎,落地实践过数十个架构项目,在微服务、大数据、 AI工程化落地、中台化改造、DevOps 、运维自动化等方面有着丰富的经验。拉勾教育架构专栏优秀讲师。

前言

随着社会节奏的日益加快,碎片化学习逐渐成为人们获取知识的主要方式,虽然能学到很多知识,但这些知识往往零散琐碎、不系统。
刚学习Spring时,每当看到Spring的示例代码,我先是恍然大悟:“哦,原来Spring还有这个功能!”然后赶紧把这段代码复制到自己的代码库里。琢磨一番后发现:“不行,我还是得完整掌握Spring。”于是又在网络上寻找完整的Spring学习文档。但利用碎片化时间看完一半后,还是决定放弃了。
碎片化学习知识时,人们往往追求实用,对用得上的知识学得很快,而那些暂时用不到或没有融合使用场景的知识却不容易记住,每次看完就忘,一直这样循环往复。相信大部分人也都跟我一样,往往是真正遇到问题时才会去想对应的解决方案。
我是什么时候开始能完整看完Spring官方文档的?是在明白了Spring大部分功能的使用场景后。
同样的经历也发生在我的Spark学习之路上,我有过多次Spark从入门到放弃的经历,直到有一天碰到了一个实际业务问题——需要定期分析大量数据并生成分析结果,在解决这个问题的过程中,我才真正理解了Spark的用途。
这就和有些人一直不明白架构师到底是做什么的一样,直到有一天,他们遇到了一个具体的问题,摸索出了一个可行的方案,才明白:原来架构师是这样解决问题的。
因此,如果想要学好软件架构,基于场景的学习方式最有效。因为一旦理解了业务场景,就能很容易地看懂某个解决方案,并理解解决方案背后的实现原理。
那么,有没有这样一本书:
它没有教条,没有理论,就像讲故事一样,将个人架构实战经历娓娓道来。
它先讲清楚需要解决的问题,然后诉说个人架构的心路历程,并将实现思路结合起来,阐述整体方案,最后引申出解决方案的不足及更多思考。
在做了大量市场调研后我并没有找到此类书籍,于是就产生了一个想法,可不可以自己写一本这样的书,来填补这块空白?
本书讲的是架构,可是,什么是架构?

什么是架构?
关于架构,我以前一直以为,只有真正从0到1,经历各种技术选型后搭建出来的一个系统框架,才算是真正的架构。
但现实是,随意在Github上搜索一个框架,比如Spring Cloud脚手架,就有很多相关的教程。而且,对于从0开始的业务来说,技术选型有那么重要吗?实际工作中不都是技术创始人熟悉哪个技术栈就用哪个技术栈吗?
如果脚手架不是架构,那什么是?
来看看软件架构的定义。
软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图,描述的对象是直接构成系统的抽象组件,各个组件之间的连接明确和相对细致地描述组件之间的通信。在实现阶段,这些抽象组件被细化为实际的组件,比如具体的某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。软件架构是构建计算机软件的基础。与建筑师制订建筑项目的设计原则和目标来作为绘图员画图的基础一样,一个软件架构师或者系统架构师设计软件架构以作为满足不同客户需求的实际系统设计方案的基础。
是不是很难理解?
我以前有个领导,原来是Oracle的VP,那时候公司在推行Scrum,我就问他,学Scrum最重要的是什么?
他说,是“体验”,先别去刻意记忆那些规则,而是跟着前辈做项目,在里面认真体验一段时间,自然就懂了。
我觉得这一方法在学习上也可以参考:先不去纠结什么是架构,而是去探索架构要解决什么问题、要处理什么样的场景。这就是本书的立足点。

从实际场景中学架构
我职场深耕15余载,经历过数十次互联网架构业务。在这几十次的架构经历中,有些因与业务紧密结合无法单独拿出来,但有些可以从特定业务需求中剥离出来变成技术思路上通用的解决方案。其中可以抽取归纳的架构经历共16次,本书将这16次真实的架构经历整理成一套知识体系,方便读者更加系统地理解它们,最终内化为自己的知识。
根据架构设计的立足点,本书划分为5个部分。
第1部分:数据持久化层场景实战。主要讲解存储的数据量太大影响读写性能时,如何在存储层采取措施来解决性能问题。学完这部分内容后,当遇到数据量大的问题时,就可以直接从中找到参考答案。
第2部分:缓存层场景实战。主要讲解大流量时,如何避免流量直接压垮数据库层。学完这后,当遇到缓存层场景问题,就知道如何进行架构设计了。
第3部分:基于常见组件的微服务场景实战。主要讲解业务逻辑分布在不同的服务时,如何使用一些常见的组件去解决其中的各种问题。通过这部分内容的学习,能快速掌握一些微服务的基本原理,并灵活地组合一些常见微服务组件,或结合自研的一些框架来解决微服务场景问题。
第4部分:微服务进阶场景实战。在学完基于常见组件的微服务场景实战内容后,这个模块将先用各种真实经历让你提前体会在大公司使用微服务时会面临的一些问题,然后通过真实的架构经历来讲解使用无常见组件可用的微服务时所面临的一些问题及其解决方案。
第5部分:开发运维场景实战。主要讲解如何通过一些架构上的设计来提高开发效率和测试微服务的效率。

目录

前言


第1部分 数据持久化层场景实战

第1章 冷热分离/

1.1 业务场景:几千万数据量的工单表如何快速优化/

1.2 数据库分区,从学习到放弃/

1.3 冷热分离简介/

1.4 冷热分离一期实现思路:冷热数据都用MySQL/

1.5 冷热分离二期实现思路:冷数据存放到HBase/

1.6 小结/

第2章 查询分离/

2.1 业务场景:千万工单表如何实现快速查询/

2.2 查询分离简介/

2.3 查询分离实现思路/

2.4 Elasticsearch注意事项/

2.5 小结/

第3章 分表分库/

3.1 业务场景:亿级订单数据如何实现快速读写/

3.2 拆分存储的技术选型/

3.3 分表分库实现思路/

3.4 小结/


第2部分 缓存层场景实战

第4章 读缓存/

4.1 业务场景:如何将十几秒的查询请求优化成毫秒级/

4.2 缓存中间件技术选型(Memcached,MongoDB,Redis)/

4.3 缓存何时存储数据/

4.4 如何更新缓存/

4.5 缓存的高可用设计/

4.6 缓存的监控/

4.7 小结/

第5章 写缓存/

5.1 业务场景:如何以最小代价解决短期高频写请求/

5.2 写缓存/

5.3 实现思路/

5.4 小结/

第6章 数据收集/

6.1 业务背景:日亿万级请求日志收集如何不影响主业务/

6.2 技术选型思路/

6.3 整体方案/

6.4 小结/

第7章 秒杀架构/

7.1 业务场景:设计秒杀架构必知必会的那些事/

7.2 整体思路/

7.3 小结/


第3部分 基于常见组件的微服务场景实战

第8章 注册发现/

8.1 业务场景:如何对几十个后台服务进行高效管理/

8.2 传统架构会出现的问题/

8.3 新架构要点/

8.4 ZooKeeper宕机了怎么办/

8.5 小结/

第9章 全链路日志/

9.1 业务场景:这个请求到底经历了什么/

9.2 技术选型/

9.3 注意事项/

9.4 小结/

第10章 熔断/

10.1 业务场景:如何预防一个服务故障影响整个系统/

10.2 覆盖场景/

10.3 Sentinel 和Hystrix/

10.4 Hystrix的设计思路/

10.5 注意事项/

10.6 小结/

第11章 限流/

11.1 业务场景:如何保障服务器承受亿级流量/

11.2 限流算法/

11.3 方案实现/

11.4 限流方案的注意事项/

11.5 小结/


第4部分 微服务进阶场景实战

第12章 微服务的痛:用实际经历告诉你它有多少陷阱/

12.1 单体式架构VS微服务架构/

12.2 微服务的好处/

12.3 微服务的痛点/

12.4 小结/

第13章 数据一致性/

13.1 业务场景:下游服务失败后上游服务如何独善其身/

13.2 最终一致性方案/

13.3 实时一致性方案/

13.4 TCC模式/

13.5 Seata中AT模式的自动回滚/

13.6 尝试Seata/

13.7 小结/

第14章 数据同步/

14.1 业务场景:如何解决微服务之间的数据依赖问题/

14.2 数据冗余方案/

14.3 解耦业务逻辑的数据同步方案/

14.4 基于Bifrost的数据同步方案/

14.5 小结/

第15章 BFF/

15.1 业务场景:如何处理好微服务之间千丝万缕的关系/

15.2 API层/

15.3 客户端适配问题/

15.4 BFF(BackendforFront)/

15.5 小结/


第5部分 开发运维场景实战

第16章 接口Mock/

16.1 业务场景:第三方服务还没完成,功能设计如何继续/

16.2 解决思路/

16.3 Mock服务端设计/

16.4 Mock服务客户端调用设计/

16.5 小结/

第17章 一人一套测试环境/

17.1 业务场景:测试环境何时能释放出来使用/

17.2 解决思路/

17.3 使用流程/

17.4 小结/

第18章 结束语:如何成为不可或缺的人/

18.1 无关职责,帮领导解决技术难题/

18.2 理解领导的非技术问题/

18.3 弄清领导对你的期望值/

18.4 小结/


短评

物流很快,书更不错。书中内容从实际场景出发,结合实战经验,通俗易懂,是一本好书!

2022-03-16 16:41:50

书内容以项目案例问题来描述架构问题,案例有参考价值!

2022-03-15 13:05:57

非常实用!实际场景+实战,通俗易懂,值得深读和收藏。

2022-03-15 14:36:20

产品特色