你好,到这里专栏的学习已经进入尾声了,这一课时我们一起来梳理一下整个课程的内容。
广义的分布式系统是个非常宽泛的领域,涉及的技术栈有很多,而且有很多理论性的知识点,比如各类一致性算法、各种数据一致性模型。如果深入到某个技术栈,比如分布式存储或者分布式协同技术,那么各种细节的理论知识就更加庞杂了。
分布式技术的学习是有难度的,而且在面试时对候选人的区分度比较高,也是后端面试中的常客。在专栏内容的设计上,我是从一个一线开发者的角色出发,设计专栏目录和章节编排,可以说,专栏大纲本身就是一份学习提纲。
在“模块一:分布式基础”中,我们先从分布式理论的基础入手,首先了解了基础的 CAP 理论,然后是不同的数据一致性模型,经典的数据一致性算法 Paoxos、ZooKeeper 如何实现一致性,最后从区块链的角度入手,和你分享了数字货币中的共识问题,这一模块是学习分布式系统的理论基础,不需要死记硬背,深入理解才是第一位。
在“模块二:分布式事务”中,讨论了两阶段和三阶段提交协议,数据库的 XA 规范,实现分布式事务的 TCC 模型,最后通过两小节的内容,分析了 Redis 实现分布式锁相关的内容。数据一致性和分布式事务是互联网分布式系统设计中必须要考虑的,这部分要重点把握。
在“模块三:分布式服务”中,我和你一起从 RPC 远程服务入手,一起分析了服务网关、服务注册与发现、调用连跟踪、容器化调度、配置管理等微服务技术热点,并且了解了 ServiceMesh 等最新的技术热点。这一模块是大部分工程师在实际开发中应用最多的,也要重点去学习和理解。
在“模块四:分布式存储”中,我们一起探讨了分布式下关系型数据库的适配,这一部分在工作中也经常用到,包括分库分表、读写分离,还介绍了 NoSQL 数据库和 Elasticsearch 在开发中的应用。
在“模块五:消息队列”中,我从消息队列的应用场景入手,讲解了重复消费、消息幂等、时序性等热点问题,另外还对 Kafka 和 RokcetMQ 这两大技术组件进行了分析。希望你在使用消息队列时,也可以从这几个角度去思考系统设计的细节。
在“模块六:分布式缓存”中,我分享了缓存在分布式场景下的热点应用问题,包括缓存穿透、失效、雪崩的处理、缓存的负载均衡和高可用知识。在实际工作中,缓存的重要性不言而喻,这部分你也要重点掌握。
在“模块七:分布式高可用”中,我从双十一大促的场景入手,分享了系统限流、降级和熔断、负载均衡、稳定性指标,以及监控组件和统一日志系统等热门知识点。
为了帮助你更好地准备面试,我在每个模块后面,还单独添加了高频面试知识点梳理的加餐环节,如果你最近在准备面试,可以重点关注一下加餐部分。
我曾经发起过一个有书共读活动,最开始报名的有一百多人,但是最终坚持到最后的只有不到 10 个人。在专栏的学习上也一样,如果你能坚持学习完全部的课程内容,那我相信,你一定会有很大的提高,对分布式和系统架构有一个新的认识。
我一直认为,授人以鱼不如授人以渔,在进行专栏讲解的时候,一直都是结合工作场景中的实际问题来分析,希望你在学习的时候,也可以结合自己的实际工作去展开,厚积薄发、不断提高。
特别感谢拉勾的专栏编辑,在整个课程中一直持续跟进,每一课时的内容完成以后,都会进行编辑和审查,提出了非常好的想法和建议,一起打磨出了本专栏的内容。
分布式系统的学习是一个长期的过程,不可能毕其功于一役,这个专栏希望可以帮助你构建一个分布式知识的体系,有了这个知识的骨架之后,你就可以在自己的学习和工作中进行填充和润色,最终形成自己的一套知识体系。
雄关漫道真如铁,而今迈步从头越,希望专栏的每一位读者学习愉快,工作和生活顺利。