编辑推荐
1.从实际出发本书并没有过多的探讨理论性的东西,基于现有成熟框架,围绕实际项目中遇见的具体需求,以微服务分布式架构的角度去逐一分解并且实现这些需求。掌握这些知识的读者,接近有能力快速搭建出可靠、高效、灵活的微服务分布式架构。2.与行业动向接轨借助于现有框架进行微服务分布式架构实践的成本越来越低,并且正在逐渐成为主流架构。在进行框架及第三方库的选择时,也同样紧跟行业动向。3.简单易懂本书中的每一个示例都尽量用较少的代码和较快的的方式解决具体的问题,为读者呈现复杂系统中简单的一面。目的是为了快速接受并理解各知识点在微服务分布式架构中所处的位置及关系。
内容简介
随着第三方框架的逐渐完善,实施微服务架构的开发成本越来越低,分布式架构成为主流势不可挡。一个完善的架构或系统中包含了许多的知识点,而每一个知识点则又可以引出很好多的内容,过度地专注于细节反而会拖慢达成目标的步伐。为了更快地实施微服务,本书基于开源且稳定的第三方工具,介绍如何构建一个庞大且复杂的分布式系统,用于满足项目中的实际需求。每一个工具库为了适应更丰富的使用场景,通常都会把部分参数以配置文件的方式暴露出来,同时提供用于开发环境的默认配置。本书基于快速使用为主线,尽可能多地讲解配置参数的意义及它们之间的关系,帮助读者在掌握足够多的知识点后,建立起对微服务分布式架构的认知,以便为探求更深层次的知识点做好铺垫。本书适合Java工程师、初级架构师、大中专院校相关专业师生、Java培训班学员及独立kaifazhe与自学读者使用。每一个工具库为了适应更丰富的使用场景,通常都会把部分参数以配置文件的方式暴露出来,同时提供用于开发环境的默认配置。本书基于快速使用为主线路,尽可能多地讲解配置参数的意义及之间的关系。在掌握足够多的知识点后建立起对微服务分布式架构的认知,以便为探求更深层次的知识点做好铺垫。
作者简介
龚鹏,全栈GEEK,高中时期开始自学Java,痴迷互联网技术,曾服务奥美互动、百度、中青旅,在车联网设计、互联网*、电子商务系统开发方面积累了丰富的经验。
目录
- 1 微服务介绍1
- 1.1 什么是微服务架构 2
- 1.2 垂直应用与微服务 2
- 1.3 实现一个最简单的微服务框架 3
- 1.3.1 公共接口 4
- 1.3.2 服务端 4
- 1.3.3 客户端 7
- 1.3.4 完善框架 8
- 1.4 主流微服务框架介绍 9
- 1.4.1 Dubbo 9
- 1.4.2 Spring Cloud 10
- 2 模块拆分12
- 2.1 拆分逻辑 13
- 2.2 单模块 14
- 2.3 基础模块 14
- 2.4 复杂模块 15
- 3 Spring Boot16
- 3.1 目录结构 17
- 3.2 主要文件 18
- 3.3 编辑器集成 18
- 4 Dubbo20
- 4.1 注册中心 21
- 4.2 接口工程 22
- 4.3 服务端 23
- 4.4 消费方 28
- 4.5 网关 30
- 4.6 监控中心 33
- 4.7 服务管理 35
- 4.8 负载均衡 36
- 4.9 服务降级 37
- 4.10 集群容错 38
- 5 Spring Cloud40
- 5.1 注册中心 41
- 5.2 注册服务 44
- 5.3 调用服务 45
- 5.3.1 Ribbon 46
- 5.3.2 Feign 49
- 5.4 Zuul网关 51
- 5.5 Hystrix 断路器 54
- 5.5.1 Ribbon 54
- 5.5.2 Fegin 57
- 5.6 服务监控 58
- 5.7 应用监控 61
- 5.8 熔断器监控 62
- 5.8.1 单应用的熔断数据 63
- 5.8.2 使用Turbine聚合数据 64
- 5.8.3 Cloud Admin整合Turbine 65
- 5.9 统一管理配置文件 66
- 6 数据持久化70
- 6.1 Spring Data MySQL 71
- 6.1.1 依赖与配置 71
- 6.1.2 实体映射 72
- 6.1.3 Repository 76
- 6.1.4 JdbcTemplate 79
- 6.1.5 事务管理 80
- 6.2 Spring Data MongoDB 81
- 6.2.1 依赖与配置 81
- 6.2.2 实体映射 82
- 6.2.3 Repository 83
- 6.2.4 MongoTemplate 84
- 6.3 Spring Data ElasticSearch85
- 6.3.1 基本概念 85
- 6.3.2 安装与运行 86
- 6.3.3 基于HTTP交互 87
- 6.3.4 配置分词器 91
- 6.3.5 依赖与配置 94
- 6.3.6 实体映射 94
- 6.3.7 Repository 95
- 6.3.8 ElasticsearchTemplate 96
- 6.4 TCC 分布式事务98
- 6.5 Spring Data Redis 100
- 6.5.1 安装运行 100
- 6.5.2 依赖与配置 101
- 6.5.3 缓存支持 102
- 6.5.4 RedisTemplate 106
- 6.5.5 全局锁 107
- 7 表单验证110
- 8 定时任务113
- 8.1 Spring Task 单机定时任务 114
- 8.2 Cron 表达式 114
- 8.3 QuartZ 分布式定时任务 116
- 9 分布式会话122
- 10 消息队列124
- 10.1 安装及配置RabbitMQ 125
- 10.2 配置及使用 128
- 11 构建Web应用130
- 12 异常处理133
- 13 安全认证139
- 13.1 OAuth2.0 协议介绍 140
- 13.2 shouquan模式 141
- 13.3 在Dubbo中使用OAuth 2.0142
- 13.4 在Spring Cloud 中
- 使用OAuth 2.0 151
- 13.4.1 shouquan中心 151
- 13.4.2 服务模块配置 154
- 13.4.3 网关配置 157
- 13.4.4 测试运行 159
- 14 日志管理161
- 14.1 Spring Boot 日志 162
- 14.1.1 日志格式 162
- 14.1.2 输出到文件 163
- 14.1.3 扩展配置 163
- 14.2 分布式日志管理 166
- 14.2.1 ELK 搭建 167
- 14.2.2 Spring Boot 配置 169
- 15 热部署171
- 16 接口文档管理173
- 16.1 Dubbo中使用Swagger2174
- 16.2 Spring Cloud中使用
- Swagger2178
- 16.2.1 微服务模块配置179
- 16.2.2 网关模块配置181
- 17 Nexus私库184
- 17.1 Nexus 安装 185
- 17.2 从Nexus私库下载jar包187
- 17.3 上传jar包到Nexus私库 189
- 18 发布系统191
- 18.1 Jenkins 安装配置 192
- 18.2 构建任务 194
- 19 分布式架构总结201