深入浅出分布式服务架构设计与实现+原理解析+实战实践
前言
分布式、微服务几乎是现在的技术人员必须要了解的架构方向,从理论上来讲确实解耦了很多结构,但另一方面,又会带来更多衍生的复杂度及难点。
如何保证事物的最终-致性?如何进行性能及容量预估?如何处理分布式系统的日志?如何进行线上应急?如果你曾有和我一样的困惑,那么相信你一样能从本书中得到非常宝贵的解答。
面对越来越复杂的系统和业务,分布式技术早已成为互联网时代的必学技术,然而,如果没有经历过大公司背景的实践和历练,则我们很难接触到分布式服务的设计和架构。本书恰恰可以为急于学习而又没有实践机会的从业者提供帮助。本书作者将分布式的原理、实践及个人的工作经验相结合,从分布式的一致性、系统容量评估和性能保障、日志系统、服务部署、线上应急等方方面面进行了鞭辟入里的分析。
正文
第一章:分布式微服务架构设计原理
介绍了从服务化到微服务架构的演进,并肯定了服务化和微服务架构是一脉相承的。微服务在服务化的基础上,对服务化的细节和方案进行了细化,重点突出无中心化管理的微服务架构,通过对服务进行有效的拆分来实现敏捷开发和自动化部署,并在海量的用户请求下,提高了微服务架构下较细粒度的水平伸缩能力。
第二章:彻底解决分布式系统一致的问题
如何让服务之间高效地通信和协作,如何解决系统之间状态的不一致,这些都是我们在本章中需要解决的问题。
第三章:服务化系统容量评估和性能保障
提供了一个基本的面向互联网技术评审的方法论,主要介绍互联网行业如何在完成产品功能的前提下,更好地满足用户对非功能质量的需求,特别是对性能和容量的需求,这是每个互联网程序设计人员和架构设计人员都应该掌握的一项基本技能。
第四章:大数据日志系统的构建
一开始介绍了开源日志框架的背景、 实现结构、使用方式;接下来分析了大数据日志系统的原理与设计,从给出构建大数据日志系统的一个通用架构讲述其中各个模块的职责、设计和架构,包括日志采集器、日志缓冲队列、日志解析器;最后介绍了当前最流行的开源日志框架ELK,也介绍了Elasticsearch、 Logstash 和Kibana的安装、配置和基本使用方法等,为读者构建大数据日志系统起到抛砖引玉的作用。
第五章:基于调用链的服务治理系统的设计与实现
介绍开源的APM项目及市场上流行的商业APM产品开始,介绍了APM的功能和特性;然后重点讲述了谷歌的Dapper论文提到的调用链跟踪原理,并讲解了业务链实现的原理;最后,基于调用链跟踪的原理,总结了实现调用链系统的通用架构、方法论及最佳实践。
第六章:Java服务的线上应急和技术攻关、
介绍了线上应急和技术攻关的必要性、思路和方法论,强调了线上应急的目标是快速恢复系统,减少影响和损失,而不是彻底解决问题;也通过海恩法则和墨菲定律提出互联网行业中技术攻关的重要性。
第七章:服务的容器化过程
讲解了到虛拟机与容器之间的区别,以及容器给我们带来的好处,并通过实战操作,学习了Docker的常用命令,本章主要介绍了镜像、容器、磁盘卷、网络、服务和集群的实战操作;然后介绍了Docker 目前主要的管理工具: Swarm、 Kubernetes 和ApacheMesos;最后介绍了wordpress 博客系统的容器化的实现过程。
第八章:敏捷开发2.0的自动化工具
讲解了常用的4种开发模式:瀑布式开发、迭代式开发、螺旋式开发和敏捷开发;然后介绍了当下炙手可热的DevOps及其详细流程;最后介绍了敏捷开发2.0和它的优势,以及我们常用的自动化工具。