| 作者 |
| 范亚敏 傅健 王福强 |
| 丛书名 |
| 云计算与虚拟化技术丛书 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9782005229363 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 ---------------------------微服务之道:度量驱动开发--------------------------- 本书由资深架构师撰写,系统介绍级微服务设计与实现方法,融入了作者多年架构设计的经验。主要内容包括:第1章介绍微服务理论与原则,包括微服务概念、协议、特点等;第2章微服务实践方法,包括设计要点、应对变化、测试驱动的开发等;第3章通过案例讲解微服务实现的过程,包括一个完整实例;第4章介绍持续改进的方法,包括度量驱动的改进方法,用缓存提高性能,用NoSQL提高扩展性等;第5章介绍持续交付的方法,包括用脚本驱动开发方法,部署流水线等。 ---------------------------SpringBoot揭秘:快速构建微服务体系--------------------------- 本书以微服务的基本概念开篇,逐步引出Java平台下打造微服务的利器Spring Boot微框架,从Spring Boot微框架的出身和源头,循序渐进,一步步为大家剖析了Spring Boot微框架的设计理念和原理,并对框架的重点功能和模块进行了逐一讲解。 “框架,体系,生态”,三者循序渐进,相辅相成,本书最精彩的部分在于,在大家对Spring Boot微框架已经有了基本的认识之后,我们将一起探索如何基于Spring Boot微框架打造一套完备的微服务体系。 Spring Boot微框架依托Java平台和Spring框架,拥有良好的可扩展性和可定制性,为了说明这一点,我们单独开辟了一章内容,为大家介绍如何使用Scala和Spring Boot微框架来开发和交付相应的微服务,并且围绕着Scaia和SprlngBoot如何打造相应的工具,技术产品等支持来提高相应微服务的交付效率。 |
| 目录 |
---------------------------微服务之道:度量驱动开发--------------------------- 本书赞誉 前言 第1章 微服务入门 1 1.1 单体服务的特点 1 1.2 拆分服务 2 1.2.1 分而治之以降低复杂性 2 1.2.2 分而用之以提高可重用性 4 1.2.3 分而做之以提高开发效率 5 1.3 微服务的特点 5 1.3.1 微服务架构的特点 6 1.3.2 微服务架构的特征 7 1.3.3 微服务架构的风格 7 1.3.4 微服务的分类 7 1.3.5 多小的服务才是微服务 8 1.4 微服务之道 8 1.4.1 软件之道 8 1.4.2 关于微服务的思考 10 1.5 土豆微服务案例快速上手 11 1.5.1 土豆微服务构建计划 11 1.5.2 微服务构建一:土豆管理微服务 13 1.5.3 微服务构建二:土豆提醒微服务 24 1.5.4 微服务构建三:土豆网页微服务 30 1.5.5 部署土豆微服务 35 1.6 本章小结 38 第2章 微服务度量的基本概念 39 2.1 微服务的局限及其解决方案 39 2.1.1 微服务的局限 39 2.1.2 解决方案 40 2.2 微服务中度量的重要性 41 2.3 微服务度量的内容 42 2.3.1 按度量的目标划分 43 2.3.2 按度量的层次划分 44 2.4 微服务度量指标与术语 49 2.4.1 统计学指标 49 2.4.2 度量指标相关术语 53 2.4.3 度量处理相关术语 55 2.5 微服务度量策略选择 58 2.5.1 如何做度量 58 2.5.2 如何选择度量方案 60 2.6 本章小结 63 第3章 微服务度量的设计 64 3.1 微服务协议的选择与度量 64 3.1.1 协议概述 64 3.1.2 协议分类 65 3.1.3 协议分析 67 3.2 HTTP及其度量 71 3.2.1 HTTP简介 71 3.2.2 REST协议的度量要点 71 3.3 SIP及其度量 72 3.3.1 SIP简介 72 3.3.2 SIP的度量要点 73 3.4 RTP及其度量 73 3.4.1 RTP简介 73 3.4.2 RTP的度量要点 74 3.5 数据存储系统的选型 76 3.5.1 理论回顾 76 3.5.2 数据存储系统选型 78 3.5.3 数据存储系统特性 79 3.6 基于度量实现高可用性 80 3.6.1 分流——负载均衡 81 3.6.2 限流——速率控制 83 3.6.3 断流——熔断隔离 91 3.7 土豆微服务度量驱动的设计 95 3.7.1 为如何度量而设计 96 3.7.2 通过度量改进设计 101 3.8 本章小结 102 第4章 度量驱动的微服务实现 103 4.1 度量代码 103 4.1.1 代码度量标准 103 4.1.2 代码度量关键指标 105 4.1.3 小结 107 4.2 度量进度 108 4.3 度量性能 110 4.4 度量微服务的常用技术 123 4.4.1 利用切面记录度量日志 123 4.4.2 利用线程局部变量记录度量信息 124 4.4.3 利用过滤器找准度量点 126 4.4.4 提供JMX暴露内部度量指标 127 4.4.5 提供API或命令行接口暴露内部度量指标 131 4.4.6 阈值和采样率控制度量数据量 132 4.4.7 利用简单网络管理协议提供度量查询和报警支持 135 4.4.8 综合利用以上技术 135 4.5 度量常用类库 138 4.5.1 Dropwizard的Metrics-core 138 4.5.2 Pivotal的Micrometer 140 4.5.3 Spring Boot Actuator 142 4.6 土豆微服务度量实现 147 4.6.1 为土豆微服务提供代码度量 147 4.6.2 为土豆微服务添加健康检查API 152 4.6.3 为土豆微服务提供资源使用率度量 156 4.6.4 为土豆微服务提供使用量的度量 157 4.6.5 为土豆微服务提供性能度量 159 4.6.6 为土豆微服务提供错误度量 160 4.6.7 为土豆微服务提供业务KPI度量 160 4.7 本章小结 163 第5章 度量数据的聚合与展示 164 5.1 度量数据的聚合和存储 164 5.2 度量数据的清洗和处理 166 5.2.1 数据清洗的方法 166 5.2.2 数据清洗的案例 166 5.3 度量数据的可视化 170 5.3.1 图表的结构 170 5.3.2 图表的类型 170 5.3.3 如何选择图表 179 5.4 常用度量聚合与展示方案 181 5.4.1 TIG方案 181 5.4.2 ELKK方案 188 5.4.3 Collectd方案 193 5.4.4 Prometheus方案 198 5.5 土豆微服务的度量聚合与展示 200 5.5.1 土豆微服务支持多种度量聚合与展示系统的设计 200 5.5.2 基于TIG的土豆微服务度量聚合与展示 202 5.5.3 基于ELKK的土豆微服务度量聚合与展示 207 5.6 本章小结 214 第6章 度量数据的分析与报警 215 6.1 度量数据的分析 215 6.1.1 确定数据分析的目标 215 6.1.2 数据分析常见问题 218 6.2 实现报警常用的技术 222 6.2.1 Python数据分析技术栈 223 6.2.2 YAML配置文件 223 6.2.3 Elasticsearch API 224 6.2.4 Pandas DataFrame 226 6.2.5 Matplotlib 228 6.3 土豆微服务的报警实现 230 6.3.1 报警系统的设计 230 6.3.2 报警系统的实现 232 6.3.3 报警系统的优化 242 6.4 本章小结 244 第7章 度量驱动的运维 245 7.1 部署升级 245 7.1.1 何时能部署到产品线上 246 7.1.2 如何发布新功能 247 7.2 数据的运维 251 7.2.1 健康检查 251 7.2.2 度量报告 251 7.2.3 度量警告 252 7.2.4 故障处理 252 7.2.5 基于度量来发现和解决问题 255 7.3 配置调整 258 7.3.1 关于配置的思考 259 7.3.2 配置的版本管理 259 7.3.3 配置的载体 260 7.3.4 环境管理 262 7.3.5 配置微服务 262 7.3.6 配置管理实例 263 7.4 开源组件的度量 267 7.4.1 对Redis的度量 267 7.4.2 对Kafka的度量 270 7.4.3 对Cassandra的度量 273 7.5 土豆微服务的运维示例 276 7.6 本章小结 280 第8章 全链路度量 281 8.1 微服务的调用链路度量 281 8.1.1 3个关键信息 282 8.1.2 5个要点 283 8.1.3 3种标识 283 8.1.4 开源调用链分析方案 284 8.1.5 构建土豆微服务调用链的度量 285 8.2 客户端度量数据的采集 289 8.3 度量驱动开发的回顾与展望 291 8.4 本章小结 293 附录 常用的度量相关工具与软件库 294 ---------------------------SpringBoot揭秘:快速构建微服务体系--------------------------- 推荐序1 推荐序2 序言 前言 第1章 了解微服务 1 1.1 什么是微服务 1 1.2 微服务因何而生 2 1.3 微服务会带来哪些好处 4 1.3.1 独立,独立,还是独立 4 1.3.2 多语言生态 6 1.4 微服务会带来哪些挑战 8 1.5 本章小结 9 第2章 饮水思源:回顾与探索Spring框架的本质 11 2.1 Spring框架的起源 11 2.2 Spring IoC其实很简单 12 2.3 了解一点儿JavaConfig 14 2.3.1 那些高曝光率的Annotation 17 2.4 本章小结 18 第3章 SpringBoot的工作机制 19 3.1 SpringBoot初体验 19 3.2 @SpringBootApplication背后的秘密 20 3.2.1 @Configuration创世纪 21 3.2.2 @EnableAutoConfiguration的功效 22 3.2.3 可有可无的@ComponentScan 25 3.3 SpringApplication:SpringBoot程序启动的一站式解决方案 26 3.3.1 深入探索SpringApplication执行流程 27 3.3.2 SpringApplicationRunListener 30 3.3.3 ApplicationListener 31 3.3.4 ApplicationContextInitializer 32 3.3.5 CommandLineRunner 33 3.4 再谈自动配置 34 3.4.1 基于条件的自动配置 34 3.4.2 调整自动配置的顺序 35 3.5 本章小结 35 第4章 了解纷杂的spring-boot-starter 37 4.1 应用日志和spring-boot-starter-logging 39 4.2 快速Web应用开发与spring-boot-starter-web 40 4.2.1 项目结构层面的约定 41 4.2.2 SpringMVC框架层面的约定和定制 41 4.2.3 嵌入式Web容器层面的约定和定制 42 4.3 数据访问与spring-boot-starter-jdbc 43 4.3.1 SpringBoot应用的数据库版本化管理 46 4.4 spring-boot-starter-aop及其使用场景说明 48 4.4.1 spring-boot-starter-aop在构建spring-boot-starter-metrics自定义模块中的应用 49 4.5 应用安全与spring-boot-starter-security 58 4.5.1 了解SpringSecurity基本设计 61 4.5.2 进一步定制spring-boot-starter-security 66 4.6 应用监控与spring-boot-starter-actuator 68 4.6.1 自定义应用的健康状态检查 70 4.6.2 开放的endpoints才真正“有用” 73 4.6.3 用还是不用,这是个问题 75 4.7 本章小结 77 第5章 SpringBoot微服务实践探索 79 5.1 使用SpringBoot构建微服务 79 5.1.1 创建基于Dubbo框架的SpringBoot微服务 80 5.1.2 使用SpringBoot快速构建Web API 91 5.1.3 使用SpringBoot构建其他形式的微服务 104 5.2 SpringBoot微服务的发布与部署 110 5.2.1 spring-boot-starter的发布与部署方式 112 5.2.2 基于RPM的发布与部署方式 115 5.2.3 基于Docker的发布与部署方式 120 5.3 SpringBoot微服务的注册与发现 124 5.4 SpringBoot微服务的监控与运维 127 5.4.1 推还是拉,这一直是个问题 131 5.4.2 从局部性触发式报警到系统性智能化报警 132 5.5 SpringBoot微服务的安全与防护 133 5.6 SpringBoot微服务体系的脊梁:发布与部署平台 135 5.7 本章小结 138 第6章 SpringBoot与Scala 139 6.1 使用Maven构建和发布基于SpringBoot的Scala应用 140 6.1.1 进一步简化基于Maven的Scala项目创建 146 6.1.2 进一步简化基于Scala的Web API开发 167 6.2 使用SBT构建和发布基于SpringBoot的Scala应用 174 6.2.1 探索基于SBT的SpringBoot应用开发模式 175 6.2.2 探索基于SBT的SpringBoot应用发布策略 181 6.3 本章小结 184 第7章 SpringBoot总结与展望 186 |