高可用可伸缩微服务架构:基于Dubbo,Spring Cloud和Service Mesh
《高可用可伸缩微服务架构:基于Dubbo,Spring Cloud和Service Mesh》,电子工业出版社2019年5月出版,讲解如何通过Dubbo、Spring Cloud、Service Mesh等技术来构建微服务体系,并深入浅出地介绍了微服务架构发展历程、领域驱动设计、稳定性保证的常用手段、分散式事务的一致性方案。
基本介绍
- 书名:高可用可伸缩微服务架构
- 作者:程超 等
- ISBN:978-7-121-36213-2
- 页数:528
- 定价:108
- 出版社:电子工业出版社
- 出版时间:2019-05
- 装帧:平装
- 开本:16
内容提要
近年来微服务架构已经成为大规模分散式架构的主流技术,越来越多的公司已经或开始转型为微服务架构。《高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh》不以某一种微服务框架的使用为主题,而是对整个微服务生态进行系统性的讲解,并结合工作中的大量实战案例为读者呈现一本读完即可实际上手套用的工具书。《高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh》中的理论部分介绍了微服务架构的发展历程,通俗地讲解了领域驱动设计,帮助读者更好地利用DDD来建模和划分服务;微服务稳定性保证的常用手段和微服务下如何保证事务的一致性这两章凝聚了作者多年的积累和思考,相信读者看完后会有不一样的感触和收穫;书中实战部分的内容非常丰富,以项目为基础,逐层介绍常见的Dubbo、Spring Cloud和Service Mesh框架的具体使用方法,并对实现原理进行剖析;书中还以具体案例全面介绍了微服务双活体系建设、微服务监控与告警、微服务编排、百亿流量微服务网关的设计与实现,以及基于支付场景下的微服务改造等,并让读者了解如何藉助微服务来增强和重构现有的遗留系统。不管是刚接触微服务的新手,还是正在尝试藉助微服务解放生产力的开发人员或运维人员,甚至是立志于构建高可用可伸缩的微服务体系的技术Leader和架构师,阅读本书,对读者必有裨益。
目录
第1章 微服务架构概述 11.1 什幺是架构 11.2 几个相关概念 31.3 从软体的生命周期看架构设计 71.4 架构的形式与特点 91.5 架构的目标与方法 131.6 架构的不同风格 18第2章 微服务领域驱动设计 302.1 领域驱动设计 312.1.1 领域驱动设计概览 312.1.2 问题域与解决方案域 342.1.3 限界上下文 352.1.4 上下文映射 402.1.5 领域架构 432.2 微服务的设计 482.2.1 限界上下文的边界 482.2.2 限界上下文即微服务 512.2.3 识别限界上下文 532.2.4 微服务之间的协作 592.3 小结 63第3章 Apache Dubbo框架的原理与实现 643.1 Dubbo框架的选型与使用 643.1.1 Dubbo框架的选型 643.1.2 Dubbo框架的使用 653.2 Dubbo框架的原理分析 703.2.1 总体架构分析 703.2.2 Dubbo Bean的载入 733.2.3 Dubbo Extension机制 773.2.4 Dubbo消费端 913.2.5 Dubbo服务端 1263.2.6 Dubbo的通信机制 1443.3 基于Dubbo的自动化Mock系统 1653.3.1 Mock模拟系统的产生 1663.3.2 Dubbo Mock的使用 1673.3.3 Dubbo Mock的原理解析 1683.3.4 自动化Mock系统的实现 170第4章 Spring Boot/Spring Cloud实践 1774.1 Spring Boot原理剖析 1784.1.1 Spring Boot Quick Start 1784.1.2 Spring Boot之SpringApplication 1804.1.3 spring-boot-loaded模组分析 1864.1.4 spring-boot-autoconfigure模组分析 1904.1.5 Spring Boot Conditional注解分析 1954.2 Dubbo Spring Boot Starter 1984.2.1 Dubbo Spring Boot Starter简介 1984.2.2 Dubbo Initializr及sample 1984.2.3 dubbo-spring-boot-autoconfigure模组 2014.2.4 dubbo-spring-boot-actuator模组 2044.3 Spring Cloud栈 2114.3.1 为什幺微服务架构需要Spring Cloud 2124.3.2 Spring Cloud技术栈总览 2144.3.3 spring-cloud-scaffold基础库集合 2154.4 基于Maven Archetype的脚手架 2394.4.1 Maven Archetype 2394.4.2 脚手架的搭建 2404.4.3 生成脚手架 247第5章 微服务稳定性保证的常用手段 2505.1 微服务的稳定性 2505.2 高可用 2505.2.1 限流原理与实现 2505.2.2 断路器原理与实现 2565.2.3 逾时与重试 2605.3 高并发 2625.3.1 异步 2635.3.2 快取 2705.4 总结 272第6章 微服务下如何保证事务的一致性 2736.1 从本地事务到分散式事务的演变 2736.2 强一致性解决方案 2766.2.1 二阶段提交协定 2766.2.2 三阶段提交协定 2786.3 最终一致性解决方案 2806.3.1 TCC模式 280
6.3.2 补偿模式 2856.3.3 可靠事件模式 2866.4 开源项目的分散式事务实现解读 2886.4.1 Apache RocketMQ 2886.4.2 ServiceComb 289第7章 百亿流量微服务网关的设计与实现 2937.1 API网关概述 2937.1.1 分散式服务架构、微服务架构与 API 网关 2937.1.2 API网关的定义、职能与关注点 2967.1.3 API网关的分类与技术分析 2987.2 开源网关的分析与调研 3007.2.1 常见的开源网关介绍 3007.2.2 四大开源网关的对比分析 3087.2.3 开源网关的技术总结 3097.3 百亿流量交易系统API网关设计 3107.3.1 百亿流量交易系统API网关的现状和面临问题 3107.3.2 业务网关的设计与最佳实践 313第8章 微服务编排 3178.1 Netflix Conductor 3178.2 Netflix Conductor的架构 3198.3 Conductor的使用案例 3208.4 Netflix Conductor源码分析 3288.4.1 Client层源码分析 3308.4.2 Server端源码分析 3378.4.3 core端源码分析 344第9章 微服务数据抽取与统计 3569.1 案例小故事 3569.2 数据仓库概述 3589.2.1 什幺是数据仓库 3589.2.2 数据仓库架构 3609.2.3 数据仓库建模方法 3619.2.4 数据抽取、转换和载入 3619.2.5 数据统计 3629.3 数据仓库工具Hive 3629.3.1 安装Hive 3649.3.2 Hive资料库 3669.3.3 Hive表 3679.4 使用Sqoop抽取数据 3699.4.1 安装Sqoop 3709.4.2 将MySQL表数据导入Hive表 3729.5 ETL作业调度 375第10章 微服务双活体系建设 37710.1 系统高可用 37710.2 双活数据中心 37910.2.1 单机房部署 37910.2.2 双机房部署 38010.2.3 基于支付场景的双活体系建设 383第11章 基于支付场景下的微服务改造与性能最佳化 39911.1 支付场景的介绍 39911.2 支付业务建模和服务划分 40011.3 支付场景下微服务架构的详解与分析 40211.3.1 业务架构分析 40211.3.2 技术平台详解 404
11.4 从代码层面提升微服务架构的性能 40711.4.1 从代码和设计的角度看 40711.4.2 从整体架构的角度看 41811.5 微服务架构中常见的一些故障分析技巧 421第12章 遗留系统的微服务架构改造 42612.1 代码分层结构的转变 42612.2 遗留系统的债券与思考 43012.3 从单体系统拆分服务的方法论 43112.4 遗留系统的微服务架构改造 43612.4.1 从代码重构开始 43612.4.2 拆分服务需要面向服务进行架构设计 43712.4.3 改造是一个渐进的过程 43712.4.4 单元测试是基石 44012.4.5 面向失败的设计 44012.4.6 前后端分离 44112.4.7 共享现有资料库 44112.4.8 灰度发布的必要性 44212.4.9 日誌聚合与全链路监控 442第13章 Service Mesh详解 44313.1 Service Mesh是什幺 44313.2 Service Mesh的背景 44313.3 Service Mesh介绍 44413.3.1 Service Mesh架构 44413.3.2 Service Mesh能做什幺 44513.4 Service Mesh的价值 44613.5 Service Mesh现状 44713.6 Service Mesh存在的问题 44813.7 Istio详解 44913.7.1 Istio架构 44913.7.2 数据平面 45013.7.3 控制平面 45513.7.4 Isito案例 45813.8 Service Mesh展望 461第14章 微服务监控实战 46314.1 APM原理与套用 46414.1.1 什幺是APM 46414.1.2 APM监控点 46414.1.3 APM深入解析 46414.2 Prometheus监控系统介绍 49214.2.1 Prometheus的主要特点 49314.2.2 Prometheus的架构及组件介绍 49314.2.3 Prometheus的安装 49414.2.4 使用Prometheus对MySQL进行监控 49814.2.5 Prometheus的告警机制 501
作者简介
程超,网名小程故事多,现任某公司高级架构师,超过12年的Java研发经验,8年技术管理和架构经验,熟悉支付和电商领域,擅长微服务生态建设和运维监控,对Dubbo、Spring Cloud和gRPC等微服务框架有深入研究,帮助多家公司进行过微服务建设和改造。合着作品《深入分散式快取》,阿里云MVP、云栖社区外部专家、Codingfly社区特聘技术专家、CSDN博主专家。
梁桂钊,现任某网际网路公司高级开发工程师,参与过内容分发、K12 教育、淘系电商等项目。目前,专注于新零售电商服务的业务摸索和电商服务创新实践。具有Java核心技术、微服务、分散式、高并发等领域一线实战经验,并对新兴技术方向和各种开源框架有浓厚兴趣。秦金卫(KimmKing),现任某公司高级技术总监/Apache Dubbo PPMC,阿里前架构师/某商业银行北京研发中心负责人。关注网际网路、电商、金融、支付、区块链等领域,10多年研发管理和架构经验,对于中间件、SOA、微服务,以及各种开源技术非常热衷,活跃于Dubbo、Fastjson、Mule、ActiveMQ等多个开源社区。方誌斌,现任某物联网公司高级研发工程师。目前专注于大型物联网平台架构的设计与开发工作。对于微服务、分散式、集群有一定的研究和实战经验。对Java领域的开源框架有浓厚的兴趣,喜欢深入分析、总结框架源码。SpringForAll社区核心成员,组织多次社区技术专题、问答等活动。张逸,架构编码实践者,微服务架构设计者,领域驱动设计布道师,大数据平台架构师。着译作包括《软体设计精要与模式》《恰如其分的软体架构》《人件》等。杜琪,网名阿杜,现任蚂蚁金服高级研发工程师,2015年6月毕业于南开大学,计算机系统结构硕士。毕业后开始接触分散式业务系统开发,曾在有赞负责用户中心基础服务,对分散式业务系统的稳定性、可靠性有丰富的经验。喜欢研究底层技术,喜欢研究疑难技术问题,例如JVM记忆体问题排查、GC调优,等等。殷琦,网名涤生,现任“美团点评”技术专家,2015年3月毕业于东华大学,软体工程硕士。2015年3月加入“美团点评”基础架构部,开始接触微服务架构,之后一直从事服务框架的研发工作,对微服务架构发展与演进有非常深刻的认识。个人比较喜欢研究并分享新技术,时刻关注并实践微服务架构最前沿的技术,如Service Mesh、Serverless 等。肖冠宇,曾就职于小米、人民网等网际网路公司,具有丰富的大数据一线实战经验,专注大数据处理技术及机器学习算法研究。着有《企业大数据处理:Spark、Druid、Flume与Kafka套用实践》《Python3快速入门与实战》等书籍。