登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

2023年10月出版新書

2023年09月出版新書

『簡體書』Java微服务实战

書城自編碼: 3088187
分類: 簡體書→大陸圖書→計算機/網絡程序設計
作者: 赵计刚 著
國際書號(ISBN): 9787121328404
出版社: 电子工业出版社
出版日期: 2017-10-01
版次: 1

書度/開本: 16开 釘裝: 平装

售價:NT$ 497

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
荷马:伊利亚特(英文)-西方人文经典影印21
《 荷马:伊利亚特(英文)-西方人文经典影印21 》

售價:NT$ 490.0
我的心理医生是只猫
《 我的心理医生是只猫 》

售價:NT$ 225.0
股权控制战略:如何实现公司控制和有效激励(第2版)
《 股权控制战略:如何实现公司控制和有效激励(第2版) 》

售價:NT$ 449.0
成吉思汗传:看历代帝王将相谋略 修炼安身成事之根本
《 成吉思汗传:看历代帝王将相谋略 修炼安身成事之根本 》

售價:NT$ 280.0
爱丁堡古罗马史-罗马城的起源和共和国的崛起
《 爱丁堡古罗马史-罗马城的起源和共和国的崛起 》

售價:NT$ 349.0
人生解忧:佛学入门四十讲
《 人生解忧:佛学入门四十讲 》

售價:NT$ 490.0
浪潮将至
《 浪潮将至 》

售價:NT$ 395.0
在虚无时代:与马克斯·韦伯共同思考
《 在虚无时代:与马克斯·韦伯共同思考 》

售價:NT$ 260.0

內容簡介:
本书分为三部分:基础框架篇(1~6章)、服务框架篇(7~10章)、监控部署篇(11~13章),由浅入深来讲解微服务的相关技术。基础框架篇从微服务架构的基本概念与技术选型出发,详细的介绍了微服务基础框架SpringBoot、自动化API文档生成工具Swagger、动态数据源和缓存系统,并深入的分析了SpringBoot启动过程的核心源码,这一部分是整本书的基础;服务框架篇详细的介绍了服务注册与发现框架Consul、热配置管理框架Archaius、服务降级容错框架Hystrix,以及服务通信框架OkHttp、AsyncHttpClient和Retrofit,这一部分是整本书的核心;监控部署篇详细的介绍了ELK日志系统的实现、Zipkin全链路追踪系统的实现,*后介绍了持续集成与持续部署系统的实现,这一部分是开发运维的部分。
關於作者:
赵计刚,现任网易高级Java开发工程师。2016年7月毕业于哈尔滨工业大学软件学院。2016年3月加入51信用卡,开始接触微服务架构,之后一直在从事微服务的开发与研究,学习与总结了不少微服务架构相关的理论与实践经验。个人是开源技术的拥趸,对新技术充满浓厚的兴趣,尤其是微服务架构相关技术。
目錄
目录
第1章 微服务概述1
1.1 初识微服务1
1.1.1 什么是微服务1
1.1.2 为什么需要微服务2
1.1.3 微服务架构的缺点3
1.2 微服务中的组件与技术选型4
第2章 微服务基础框架10
2.1 SpringBoot的优势10
2.2 SpringBoot入门10
2.2.1 搭建项目框架10
2.2.2 开发第一个SpringBoot程序11
2.2.3 运行SpringBoot项目14
2.3 再学一招:使用Maven依赖树验证SpringBoot自动引包功能15
第3章 微服务文档输出17
3.1 Swagger概述17
3.2 如何使用Swagger17
3.2.1 搭建项目框架17
3.2.2 SpringBoot集成Swagger18
3.2.3 分析Swagger生成的API文档23
3.2.4 使用Swagger进行接口调用23
3.3 再学一招:使用Lombok消除POJO类模板代码24
第4章 微服务数据库26
4.1 单数据源26
4.1.1 搭建项目框架26
4.1.2 建库和建表27
4.1.3 使用Mybatis-Generator生成数据访问层27
4.1.4 SpringBoot集成Mybatis29
4.2 多数据源38
4.2.1 建库和建表39
4.2.2 使用Mybatis-Generator生成数据访问层40
4.2.3 结合AbstractRoutingDataSource实现动态数据源41
4.2.4 使用AOP简化数据源选择功能47
4.2.5 实现多数据源的步骤总结48
4.3 再学一招:Mybatis-Generator基本用法49
第5章 微服务缓存系统52
5.1 常用的缓存技术52
5.1.1 本地缓存与分布式缓存52
5.1.2 Memcached与Redis53
5.2 Redis2.x客户端分片53
5.2.1 安装Redis53
5.2.2 SpringBoot集成ShardJedis54
5.3 Redis3.x集群59
5.3.1 搭建Redis集群59
5.3.2 SpringBoot集成JedisCluster62
5.3.3 JedisCluster关键源码解析64
5.4 再学一招:使用GuavaCache实现本地缓存66
第6章 SpringBoot启动源码解析69
6.1 创建SpringApplication实例70
6.1.1 判断是否是Web环境71
6.1.2 创建并初始化ApplicationInitializer列表71
6.1.3 创建并初始化ApplicationListener列表74
6.1.4 初始化主类mainApplicationClass75
6.2 添加自定义监听器75
6.3 启动核心run方法76
6.3.1 创建启动停止计时器77
6.3.2 配置awt系统属性78
6.3.3 获取SpringApplicationRunListeners79
6.3.4 启动SpringApplicationRunListener80
6.3.5 创建ApplicationArguments80
6.3.6 创建并初始化ConfigurableEnvironment81
6.3.7 打印Banner87
6.3.8 创建ConfigurableApplicationContext87
6.3.9 准备ConfigurableApplicationContext89
6.3.10 刷新ConfigurableApplicationContext91
6.3.11 容器刷新后动作93
6.3.12 SpringApplicationRunListeners发布finish事件94
6.3.13 计时器停止计时94
6.4 再学一招:常用的获取属性的4种姿势94
第7章 微服务注册与发现96
7.1 初识Consul96
7.2 搭建Consul集群97
7.2.1 安装Consul97
7.2.2 启动Consul集群97
7.2.3 启动Consul-UI99
7.3 使用Consul实现服务注册与服务发现100
7.3.1 搭建项目框架100
7.3.2 配置服务注册信息102
7.3.3 实现服务启动注册104
7.3.4 实现服务发现106
7.4 服务部署测试108
7.4.1 编写测试类108
7.4.2 服务打包部署109
7.4.3 运行测试111
7.5 使用Consul与Actuator实现健康检查111
7.5.1 健康检查机制111
7.5.2 健康检查查错思路111
7.6 再学一招:Consul健康检查分类及原理112
第8章 微服务配置管理114
8.1 初识Archaius114
8.1.1 为什么要使用Archaius114
8.1.2 Archaius原理114
8.2 使用Consul-KV实现配置集中管理115
8.3 使用Archaius实现动态获取配置116
8.3.1 搭建项目框架116
8.3.2 创建配置信息读取源118
8.3.3 实现服务启动时读取配置信息120
8.3.4 动态获取配置信息122
8.3.5 将配置信息动态加入Spring属性源的思路123
8.4 再学一招:Archaius关键源码解析123
8.4.1 构造动态属性源123
8.4.2 动态获取属性127
第9章 微服务进程间通信129
9.1 常见的三种服务通信技术129
9.2 创建一个简单的被调用服务130
9.2.1 搭建项目框架130
9.2.2 实现一个简单的被调用接口132
9.3 使用OkHttp实现服务通信134
9.3.1 搭建项目框架134
9.3.2 创建OkHttp调用实体类135
9.3.3 实现服务通信功能136
9.3.4 SpringBoot指定服务启动端口的三种姿势138
9.4 使用AsyncHttpClient实现服务通信139
9.4.1 搭建项目框架139
9.4.2 创建AsyncHttpClient调用实体类139
9.4.3 实现服务通信功能140
9.5 使用Retrofit实现服务通信141
9.5.1 搭建项目框架141
9.5.2 创建调用接口并实例化接口141
9.5.3 实现服务通信功能143
9.6 再学一招:Retrofit源码解析143
9.6.1 构造RestAdapter144
9.6.2 初始化RestAdapter.Builder属性146
9.6.3 创建RestAdapter实例149
9.6.4 构造请求方法的接口类150
9.6.5 校验service接口的合法性151
9.6.6 使用动态代理创建对象152
9.6.7 进行请求调用152
9.6.8 获取RestMethodInfo实例154
9.6.9 进行方法调用154
9.6.10 加载RestMethodInfo的剩余属性156
9.6.11 构建请求参数retrofit.client.Request160
9.6.12 利用clientProvider进行真正的调用161
9.6.13 处理响应162
第10章 微服务降级容错163
10.1 初识Hystrix163
10.1.1 为什么要使用Hystrix163
10.1.2 Hystrix工作原理164
10.1.3 Hystrix执行流程166
10.2 使用Hystrix实现服务降级容错167
10.2.1 搭建项目框架167
10.2.2 创建AsyncHttpClient调用实体类170
10.2.3 服务通信框架集成服务降级容错功能171
10.2.4 验证服务降级容错功能173
10.3 搭建Hystrix监控系统176
10.3.1 使用Hystrix-Metrics-Event-Stream发布监控信息176
10.3.2 使用Hystrix-Dashboard展示监控信息177
10.3.3 使用Turbine聚合监控信息179
10.1 再学一招:Hystrix常用配置184
10.1.1 设置配置参数的两种方法184
10.4.2 常见配置项的配置方式184
第11章 微服务日志系统187
11.1 初识ELK187
11.1.1 为什么要用ELK187
11.1.2 ELK最常用的两种架构188
11.2 搭建ELK系统189
11.2.1 安装配置启动Redis190
11.2.2 安装配置启动Elasticsearch190
11.2.3 安装配置启动Logstash-Shipper192
11.2.4 安装配置启动Logstash-Indexer194
11.2.5 安装配置启动Kibana195
11.3 使用LogbackAppender发送日志196
11.3.1 搭建项目框架196
11.3.2 配置logback.xml文件198
11.3.3 创建LogbackAppender发送日志199
11.3.4 验证日志输出查询功能201
11.4 Kibana常见用法203
11.4.1 日期选择203
11.4.2 自动刷新204
11.4.3 查询语法204
11.5 再学一招:使用Curator定时删除日志205
11.5.1 安装Curator205
11.5.2 配置Curator206
11.5.3 配置crontab定时任务208
11.5.4 验证定时任务208
第12章 微服务全链路追踪系统210
12.1 初识Zipkin210
12.1.1 为什么要使用Zipkin210
12.1.2 Zipkin工作流程211
12.1.3 Zipkin数据模型213
12.1.4 Zipkin工作原理213
12.2 使用Zipkin搭建全链路追踪系统215
12.3 使用Brave AsyncHttpClient实现全链路追踪217
12.3.1 搭建项目框架217
12.3.2 使用服务端拦截器补充追踪信息219
12.3.3 使用客户端拦截器创建销毁追踪信息223
12.3.4 使用Zipkin-webUI查询链路追踪信息225
12.4 使用MySQL持久化追踪信息227
12.4.1 创建三张追踪信息表227
12.4.2 使用Brave-MySQL存储追踪信息230
12.5 使用Brave-OkHttp实现全链路追踪230
12.5.1 搭建项目框架231
12.5.2 使用服务端与客户端拦截器收集追踪信息233
12.6 再学一招:Brave关键源码解析236
12.6.1 span的生命周期236
12.6.2 使用reporter创建span237
12.6.3 使用collector收集span242
12.6.4 使用collector发送span244
第13章 微服务持续集成与持续部署系统248
13.1 初识持续集成与持续部署系统248
13.2 系统总体架构249
13.2.1 初识GitLab249
13.2.2 初识Jenkins250
13.2.3 初识Docker-Regsitry250
13.3 持续集成与持续部署系统工作原理250
13.3.1 使用jar包部署项目的整体流程250
13.3.2 使用Docker镜像部署项目的整体流程250
13.4 搭建持续集成与持续部署系统251
13.4.1 安装启动Docker251
13.4.2 安装配置启动GitLab252
13.4.3 安装启动Jenkins254
13.4.4 配置Jenkins全局信息与安装插件256
13.4.5 安装配置启动Docker-Registry257
13.5 使用jar包方式部署服务258
13.5.1 搭建项目框架258
13.5.2 使用GitLab创建组和项目260
13.5.3 使用GitLab管理代码263
13.5.4 使用Jenkins编译打包服务264
13.5.5 使用webhook实现服务的持续集成267
13.5.6 使用Jenkins Shell实现服务的持续部署269
13.6 使用Docker镜像方式部署服务273
13.6.1 搭建项目框架273
13.6.2 编写Dockerfile文件创建镜像275
13.6.3 通过Jenkins Shell使用镜像实现持续部署276
13.6.4 分析Jenkins构建日志277
13.7 再学一招:Docker常用命令278
內容試閱
前言
微服务架构这个概念的提出已经有一段时间了,但是由于资料的匮乏以及其实现的复杂性,使得大部分企业望而却步。
我是幸运的,从毕业至今,一直在与微服务打交道,期间参与了大大小小多个微服务的开发,是为数不多的有机会在实际生产环境中运用微服务架构的幸运儿。在使用微服务架构的过程中,我深深的体会到了这种架构对于一个中大型企业的好处:快速的开发与部署、轻量级的通信机制、有针对性的水平扩展、高度的解耦等等,这加速了一个项目的快速迭代,很好的实现了敏捷开发,这正是企业所需要的。但是微服务架构的实现也是有一定的复杂性的:服务拆分的边界怎么来定义;原本的单机事务在服务拆分之后变成了分布式事务,这怎么来处理;由于服务拆分了,服务之间的通信需要走网络,怎样尽可能的减少网络通信的消耗;怎样防止服务雪崩;怎么梳理链路调用关系、快速定位导致调用链发生错误的服务;怎样监控服务的健康状态等等,这都是使用了微服务架构后需要解决的问题。本书结合我在实际使用微服务架构中积累的经验给出了其中大多数问题的解决方案,可以为读者朋友提供一个参考。
不可否认的是,正如文章开头所讲的,国内对于微服务架构的开发学习资料与课程都非常有限,这使得微服务架构在国内的推广并没有想象中的那样火热。而且,国内的相关资料大多以理论为主或者没有实战基础。所以,当电子工业出版社博文视点的付睿老师提议写一本以实战为主的微服务书籍之后,我毫不犹豫的抓住了这个机会。本书以实战为主,以理论为辅,真正的给出了能在实际生产中使用的技术方案。由于篇幅限制以及以实战为主的特点,我不会介绍太多的理论(哪怕这个理论很重要),比如在介绍Consul的时候,我不会去详细的介绍Raft一致性协议,但是会介绍与其相关的一些在使用中需要注意的问题,如果有兴趣的朋友可以去查看相关的论文资料。
本书的组织结构
本书从组织结构上来讲,分为三部分:基础框架篇(1~6章)、服务框架篇(7~10章)、监控部署篇(11~13章)。
第1章 微服务概述
本章首先介绍了微服务架构的概念与优缺点,之后大致的介绍了微服务中需要的各种组件与常见的技术选型。
第2章 微服务基础框架
本章首先介绍了SpringBoot在做微服务方面的优势,之后笔者通过从零开始开发一个SpringBoot项目来介绍SpringBoot的基本使用,使没有使用过SpringBoot的同学可以快速入门。最后在再学一招部分,笔者介绍了一个非常好用的Maven命令:maven依赖树,该命令是查看SpringBoot-Starter的依赖以及处理依赖冲突的一件利器。
第3章 微服务文档输出
本章首先介绍了自动化文档输出工具Swagger的概念,之后介绍了Swagger与SpringBoot的集成以及Swagger的常用注解。最后在再学一招部分,笔者介绍了一个很好用的消除模板化代码的框架Lombok的安装与使用。
第4章 微服务数据库
本章以Mysql为例,首先介绍了单数据源的情况下,SpringBoot与Mybatis的集成,之后笔者使用AbstractRoutingDataSource实现了对多数据源情况的处理,并简要的介绍了实现多数据源的原理。最后在再学一招部分,笔者介绍了Mybatis-Generator的基本用法。
第5章 微服务缓存系统
本章首先介绍了常用的缓存技术的优缺点与选型方案,之后介绍了当使用Redis2.x版本时,使用SpringBoot集成ShardJedis实现客户端分片的方法,然后介绍了Redis3.x集群的搭建与使用SpringBoot集成JedisCluster实现服务端集群的方式,最后简要的分析了JedisCluster的源码。在本章的再学一招部分,介绍了使用GuavaCache实现本地缓存的方式。
第6章 SpringBoot启动源码解析
本章详细的分析了SpringBoot启动过程的源码,掌握这一章,对于后续章节的阅读至关重要。在本章的再学一招部分,简要的介绍了在开发过程中获取配置信息的4种姿势。
第7章 微服务注册与发现
本章首先介绍了Consul的基本概念和功能,之后搭建了服务提供者和服务调用者两个项目来实现使用Consul进行服务注册和服务发现的功能,最后介绍了使用Consul与SpringBoot-Actuator实现服务健康检查的功能。在本章的再学一招部分,简要的介绍了Consul自身提供的几种健康检查的方式及原理。
第8章 微服务配置管理
本章首先介绍了为什么要使用Archaius以及Archaius实现服务热配置的原理,之后展示了使用Consul-KV实现配置中心的方式以及结合Archaius实现配置动态获取的方式,最后提供了一种将Archaius配置信息与Spring的PropertySource结合的方案。在本章的再学一招部分,笔者详细的分析了使用Archaius构造动态属性源以及动态获取属性的源码。
第9章 微服务进程间通信
本章首先介绍了三种服务通信框架:OkHttp、AsyncHttpClient和Retrofit,之后分别展示了使用三种框架进行服务通信的代码编写,最后在本章的再学一招部分,详细的分析了使用Retrofit进行服务通信的核心源码。
第10章 微服务降级容错
本章首先详细的介绍了为什么使用Hystrix、Hystrix的工作原理以及执行流程,之后展示了在实际项目中如何使用Hystrix实现服务降级容错,最后展示了怎样结合Turbine来搭建一个完整的Hystrix监控系统。在本章的再学一招部分,介绍了设置Hystrix配置参数的两种方法以及最常使用的11个配置项的详细介绍。
第11章 微服务日志系统
本章首先详细的介绍了为什么使用ELK以及ELK最常用的两种架构,之后搭建了ELK缓冲系统,然后展示了怎样将项目中的日志发送到日志系统中,最后简单的介绍了Kibana的常见用法。在本章的再学一招部分,介绍了怎样使用Elasticsearch-Curator进行日志的定时删除。
第12章 微服务全链路追踪系统
本章首先详细的介绍了为什么使用Zipkin、Zipkin的工作流程、数据模型以及工作原理,之后搭建了Zipkin全链路追踪系统,然后分别展示了使用AsyncHttpClient和OkHttp做服务通信时进行链路追踪的方式,并且介绍了将追踪信息进行持久化的方式。在本章的再学一招部分,详细的分析了Brave(Zipkin的官方java客户端)的核心源码。
第13章 微服务持续集成与持续部署系统
本章首先详细的介绍了为什么需要搭建持续集成与持续部署系统,之后介绍了构建这套系统的技术选型:GitLab、Jenkins、Docker-Registry与总体架构,然后分别介绍了使用jar包部署服务和使用Docker镜像部署服务时持续集成与持续部署系统的工作原理。之后,搭建了这套系统,最后分别展示了使用jar包部署服务和使用Docker镜像部署服务时,持续集成与持续部署系统的实现方式。在本章的再学一招部分,介绍了最常用的10条Docker命令。
目标读者
本书面向的读者群:
? Java技术爱好者
? Java工程师
? 微服务架构爱好者
本书特点
? 以实战为主,理论为辅,代码编写占了绝大部分的篇幅
? 代码由浅到深,会介绍表层代码下的核心源码实现
? 除了第一章,每章的结尾,都会提供一个再学一招部分,介绍好用的技术或者解析源码
勘误与支持
由于作者经验水平均有限,书中难免有错误之处。在本书出版后的任何时间,若你对本书有任何问题,可以发邮件到1197596604@qq.com,我会对所有问题给予回复。也可以加入QQ群:341027254,进行技术交流!
致谢
感谢51信用卡,感谢你为我提供这样一个平台,让我能够学习到很多感兴趣的技术,并能将这些技术应用到实际的项目中,也感谢在51中并肩作战的伙伴们,能在这里与一群NB的人一起工作让我感到非常自豪。
感谢51信用卡首席架构师孔晨,你敢为人先的精神和雄厚的技术沉淀使得在国内并不盛行的微服务架构在51内部运行的炉火纯青,也感谢你不辞辛劳的指导,打通了我在技术上道路上的诸多症结。
感谢电子工业出版社博文视点的付睿老师,如果没有你的提议和引导,就不会有这本书,你严谨认真的工作态度让我非常敬佩。
感谢我亲爱的老婆,是你的支持与谅解,才会让我能够有足够多的时间来完成这本书!
谨以此书献给我最敬佩的技术人、最亲爱的家人,以及众多热爱微服务的朋友们!

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2024 (香港)大書城有限公司 All Rights Reserved.