第1章 微服务概述3 T% L7 G* b: ~' }/ U1 @% x1 u
1.1 什么是微服务
# M4 p& e% l: R; b' N1.2 为什么微服务
) L" j i, }8 v+ I1.2.1 区别
+ z; [3 P5 k' i& `8 w6 i1.2.2 从单体应用说起
P' n8 t2 R/ L1 Q2 V% S( k1.2.3 步切分
8 @" H6 U% p9 U9 _) D1.2.4 服务化所带来的问题: M Z5 P% l) a& `
1.2.5 微服务的可扩展性" k' a S& z% }% R f
1.2.6 微服务与SOA的区别
, E0 I/ V5 F( i1.3 常见的微服务组件8 Z4 s4 P; v( Z% E
1.4 常用的微服务框架# Z: w5 o) l2 m' p8 E( g& \9 S
1.4.1 Spring项目
3 ]& T k- n/ \" n$ K; M9 h- W1.4.2 背景, C' j0 G8 L* h9 A' p
1.4.3 社区活跃度. R6 o$ {" N& {
1.4.4 架构完整度
8 _' n( h2 A! u4 T: b1.4.5 总结+ ~/ Y+ B' D `
1.5 微服务架构设计模式
! A" {8 C4 d' u: d1.6 如何实施微服务
; x# D. I" u4 G" E7 X0 @4 R: _1.7 小结6 }- G f* t Q$ }6 z) k; c
第2章 微服务设计原则
* ~1 o* P5 d8 `2.1 设计原则之分层架构4 r$ [- T! [- a! }/ j
2.2 设计原则之统一通信协议; K7 C) L& q" Y
2.3 设计原则之单一职责
; W7 ~( H. e& e0 A Z" }2.4 设计原则之服务拆分1 f4 Z9 f) d6 S
2.5 设计原则之前后端分离
" |, k% D% K0 b j* c$ F, ^" Y9 J2.6 设计原则之版本控制
" q; g- t q1 h2 P4 P* ?3 ]* S2.7 设计原则之围绕业务构建
U! D/ h7 @, R; j" C( W& h2.8 设计原则之并发流量控制9 Z4 x. Y" v( |5 J0 l5 j
2.9 设计原则之CAP; z! u% m* `/ r" Y
2.10 设计原则之EDA事件驱动
* T, x/ u+ y3 r& g% p2.11 设计原则之CQRS
. R6 m9 A* s& W0 u5 K" B2 d$ u8 n2 y2.12 设计原则之基础设施自动化
, z: U; n, N) W' j) C: H: x) q' m2.13 设计原则之数据一致性5 w$ ?7 x: Y( ^7 A+ @& X* l. g3 g
2.14 设计原则之设计模式+ Q8 {- W- w3 t2 g3 @' i/ e
2.15 设计原则之DevOps
9 L4 E! g( f* A6 a% b, k2.16 设计原则之无状态服务( ^1 a s; }- x+ P5 P& S! H1 C4 @
2.17 小结
6 E0 _: l2 e- k' T2 h9 c( s第3章 微服务之Spring Boot8 J' z2 q' F, P% q
3.1 一切从简单开始, w4 R& G) h1 r: j4 M x* E
3.2 快速集成第三方的Starter+ G5 ]: [8 e8 P$ f
3.3 降低开发复杂度之面向切面( v j& c M' P. S
3.3.1 前置通知2 E" R- X: `, \2 H8 P. Y
3.3.2 后置返回通知
) l2 t' i+ {; c( V; e4 b3.3.3 后置异常通知) G: z# }; z( M) K8 b
3.3.4 后置终通知& T& Z( _& h3 k4 a
3.3.5 环绕通知
) c) U( `! R' |1 n3.3.6 AOP总结" k, `5 E1 S, H
3.4 并不复杂的持久化+ Y; Z* T% N( L+ p, [9 v
3.4.1 单数据源5 f% B+ X, R: A/ I' k! T' ^; o7 ^+ [! }
3.4.2 多数据源! n" f4 q$ ]& b4 j
3.4.3 JOOQ
! G, ?: e# E3 H+ u. _. R2 S) C3.4.4 事务处理
" ?1 P8 t& M1 @7 u8 k( M3.4.5 整合Redis. E1 O6 B5 U6 X* L& H
3.4.6 整合队列
7 @1 W, i c' _# t/ _3.4.7 操作MongoDB |/ x4 _# P7 x0 \
3.5 Web开发7 R" |1 Y; s$ ^' ]& `! J, k
3.6 懒人的接口文档管理
1 C. j- l. N0 Q3.7 优化的调度
! v+ ~1 p5 \# i3.8 健康是永恒的主题7 |+ U. S- c( g3 a1 q
3.9 强强联合之整合Dubbo F3 G2 ?1 D: c! Y# D
3.10 小结
, X, E5 R5 Y" C( r' ~第4章 微服务之Docker+ i1 ~7 {( b+ \
4.1 Docker原理
7 i; d$ Y, U, p% R- P1 a( w4.2 更轻量级的虚拟化/ h+ b; z: n6 |+ ~" z
4.3 三个概念理解Docker K1 O4 ]6 b, h2 Z9 z7 v# |
4.3.1 镜像(Image)
7 u6 G {! X7 P3 ]4.3.2 容器(Container)! w6 _. ]# o( ^/ Y: l3 z! V' d7 f
4.3.3 仓库(Repository)4 f" t. `) \' D; X6 Y, L3 b
4.4 Dockerfile定制一切
7 E R2 r( z; m' H5 D1 R; d4.4.1 Dockerfile语法6 I4 k8 B5 ?: h5 T5 g# E5 v) \
4.4.2 Dockerfile命令
+ L$ g% F8 k+ [; L4.4.3 Dockerfile构建过程
* Z( r: v( }- [1 u; I* K/ O$ u4.4.4 构建Java环境: s) x. g! }- J4 K; c0 [
4.4.5 Dockerfile小结. z |- O- W3 N% d
4.5 Docker网络
; l8 i6 y# ~" L, ]4.5.1 网络模式
- S! k( @$ b- C, m! S4.5.2 link9 I: V+ z3 q" G: j; Q3 a/ I" t/ I
4.5.3 跨主机访问
j* ~3 p- W0 E4.6 Docker数据卷 I) V" [1 z- X! y0 u( G
4.6.1 数据卷+ g, V. a$ x9 i6 V
4.6.2 数据卷容器! @; W0 B1 u7 {1 h$ L' o& y- L- C
4.7 Spring Boot与Docker
% L9 {- c* X- [# a" G7 [$ t1 ~4.8 搭建自己的镜像仓库 u# z5 s- \3 I2 |
4.8.1 安装和启动 {: F6 d3 V* w" u/ I6 o( z
4.8.2 使用" W# \% C: h$ v& N
4.9 Kubernetes
9 ~" H& }3 K4 [9 N4.10 私有云整体架构
5 X3 ^; O# p9 i2 X4.11 小结
0 _' t5 H- y0 ?1 h" ]第5章 微服务之Spring Cloud
2 M0 G) [1 X( M, \5 I! z0 w5.1 注册中心, X/ r& o' ?$ f$ w2 Y& j, S
5.1.1 常用的注册中心
2 _' ^( f; R. \% ]+ p) I0 F5.1.2 Eureka介绍0 L$ [/ R* t. T& ^( B& v& D6 W$ T
5.1.3 服务发现
4 S1 o( y" b+ k7 h' } _5.1.4 简单注册. Z% ]' k4 G$ O( h4 b# X5 i
5.2 负载均衡
8 ~7 Z6 q& |% e4 g5.2.1 Spring Cloud的负载实现
2 M0 u: L+ W$ K# i6 r5.2.2 Ribbon
9 p4 C% F& ?% m6 L+ a$ `8 {8 p5.2.3 Feign" e6 G4 R t$ i) S
5.2.4 加入core
- a7 g) d! g6 j# U% z8 D+ r5 }5.3 微服务容错(Hystrix)
' z1 V- M! p5 u0 |5.3.1 雪崩的形成6 B v: ]! f2 u8 x9 K* ^1 H4 a% ?
5.3.2 应对方案- N/ o$ r! h3 ^5 `! c
5.3.3 降级和熔断
* U1 o, ]5 g7 b4 e; ]. l. H! v5.3.4 Hystrix* D* x( N( H# |. Q9 Z2 _
5.3.5 集中监控& _) c2 {; U5 ?/ Q0 _. h
5.4 分布式配置中心3 ?0 a' b, u# e; e8 k' `
5.5 API网关
L) R- C( G' c8 Q$ W5.5.1 为什么需要网关
0 |" a' @; U& d# ~0 x( I$ ^3 h5.5.2 Zuul
* f' t \0 ]8 p: @5.6 消息总线(Spring Cloud Bus)
- z2 g5 X! H: v, ^& ?5.7 小结5 m. w: ? u% p6 D* M7 p
第6章 微服务之Spring Cloud其他框架$ ^ w0 M l( S( G3 _, H6 s$ {! `# k7 v
6.1 Spring Cloud Consul8 x s3 G" [+ {0 F+ w. _ `
6.2 Spring Cloud ZooKeeper3 Q3 }3 |( }) Y6 q% n
6.3 Spring Cloud archaius6 B* k' o0 L- S
6.4 Spring Cloud Task/ } ^8 _7 f+ j8 e
6.5 Spring Cloud Security
$ ^- R3 q8 j r0 n* |0 r- u6.5.1 HTTP Basic Authentication
9 { U# r% {; c2 N9 r [6.5.2 JWT
1 F4 x, p8 m0 V7 h6.5.3 OAuth 2
2 e& C2 @- r8 O' C6 w, p4 i- }6.5.4 Spring Cloud Security
Z- K4 H$ g# j# {; u6.6 Spring Cloud Sleuth/ m. _! f& e! {6 E4 ?6 q# Q
6.6.1 服务端
) F4 l5 Z( U8 W$ P5 u- t& @4 l6.6.2 客户端
0 I7 s8 O# Y4 ?# S' O; X# B6.7 Spring Cloud Stream
% w! P3 J- q1 Z' O% u9 `6.8 Spring Cloud Data Flow
- a1 O( E# N7 \: S( ~! y F, ?; d6.9 小结2 R, v5 _. c5 V! E
第7章 微服务之自动化测试与质量管理
4 i5 ^5 ^9 z% V4 H# T- Q% ~7.1 微服务测试
" m. R7 p& r& @( F; h2 r" _5 i7.2 单元测试- \, s* T3 ^8 L# r5 k9 r, i. @! U
7.2.1 单元测试及覆盖率评估
5 f7 d s9 o- P9 M7 U7.2.2 JUnit
' n+ s7 B: i2 Y( q& s# }1 V" a7.2.3 Spring Boot单元测试
) E! D) |6 A r+ V/ B9 v7.2.4 Mockito
5 X. e% P0 ~! B# Q) X6 V$ d8 b+ ]7.3 API测试
8 m1 d- N2 r: T r( Q7.3.1 Jmeter
1 }" y/ q" S5 P7.3.2 压力测试
& i+ m8 I( H- _' e1 e7.4 A/B测试
8 u1 O6 Q0 M, N2 J9 l7.5 冒烟和回归测试+ j, h. U. a. e, m
7.6 静态代码分析# d* n9 I! ?# ^* `2 r( Y
7.6.1 Checkstyle
) G( n, b' Z7 W$ y) Z+ c7.6.2 FindBugs8 n5 \0 }% R6 L* J% [6 V; I9 x
7.6.3 PMD } B& S; h' B! k
7.7 SonarQube质量监控) c% H' K1 w9 N: D! d6 C% v+ ?
7.7.1 为什么使用
! [1 A' g3 j k; |4 k7.7.2 安装和使用% R1 A& x* \2 a) m
7.7.3 安装插件0 v9 R& J1 i8 g. |/ H, m: y4 s/ E
7.7.4 运行流程5 z4 ^6 m e& K
7.8 小结
- w' b: X8 ~9 v/ O& ], r/ ]第8章 微服务之JHipster
* e4 X& z" H4 [8 p8.1 JHipster技术列表
' w2 K, j# b# T s2 _3 a7 a% }2 }8.1.1 客户端选项3 ^$ w* X( `8 ^2 K' [
8.1.2 服务端选项
& Y) D+ @6 f% G( s8.1.3 部署选项# k; s1 n& ]! w6 J/ l9 O& b
8.2 Angular简介
. g6 F+ B# {# X6 r8.3 快速开始JHipster% j/ |- _8 E' W5 I5 }) f2 F
8.3.1 安装
! n& R! I. `$ d4 n+ c' M' D8.3.2 使用9 n4 v6 _) L0 ^: Z
8.3.3 构建单体应用 e0 M, L; B+ b& Y
8.3.4 Entity sub-generator* H; V* C; c1 D ]# k; F
8.3.5 开发和运行
( `5 m- B( N: S: j- W; b) @8.3.6 插件安装
) c+ E9 C0 w# L3 t8.4 目录结构
+ U$ K" w! ^9 D/ m6 C8 n( g8.5 构建微服务应用
0 A- ]/ z6 Q3 o1 x- T2 H3 N8 ?8.5.1 注册中心) Z9 |, V2 u: Z7 j+ {# y$ B& v: w: ?, Y1 K
8.5.2 创建微服务网关
1 ?) z6 ?% J8 l( \8.5.3 Traefik
: A2 Z1 m+ R' y3 U# J+ C) m1 H; \8.5.4 JHipster UAA
- n; d- J* |5 ?9 P$ c. @% B g8.5.5 构建微服务应用
' ?* [ R% U% K1 \8.6 基础配置
4 u% Y# q+ p5 L0 |' b( |8.6.1 JHipster属性配置8 J3 ?$ ~0 x0 ^/ |* J/ n
8.6.2 作为Maven项目
* t6 _4 W( i8 ]" S- s8.6.3 数据库) i$ Q9 V% @7 A) Q" V; F
8.6.4 DTO6 R; T) N$ X% w, F+ w
8.6.5 分页0 L9 c* n0 G# I: v% g! E& _
8.6.6 文档3 d1 T6 d3 e4 [
8.7 小结/ q! a& U4 [! Q; ]: x1 Z5 V
第9章 微服务之自动化部署2 a7 c' S' b8 R& T
9.1 私有仓库搭建
# ^$ D8 H2 j8 ~- t( e6 K0 u9.1.1 Nexus介绍' a3 W4 Q! H; m# [
9.1.2 安装与配置8 Y$ y3 z4 j% F# w
9.1.3 在项目中使用
" o6 J8 r% d% v6 w) b& g. _) `$ f9.2 Ansible
2 c# H# `7 x2 y( f/ Y9.3 持续集成
# m/ ^5 D! x& H' S/ {$ B# W9.3.1 持续集成流程2 G5 ?: ~8 a) G- G
9.3.2 Jenkins介绍与安装% E: ?$ V( O4 m& M8 i
9.3.3 Maven介绍8 U B5 |$ g% Y, S# k* {
9.3.4 Jenkins系统设置
7 }$ j) p, X1 h/ i! D% s; W9.3.5 集成Sonar
/ R# A4 H. \% X$ i9.3.6 构建工程, a* j* g; c7 J. h6 G" w! o" ^: r
9.3.7 配置测试/ X5 {6 Y- g4 h, S0 {
9.4 灰度发布+ M: v# z; d; ^: v6 Y3 M- R: h
9.5 小结* T. J" T3 F* `0 a# I" N$ q
第10章 微服务之日志收集与监控
" @ L! E1 ]" t6 _# Y7 K10.1 ELK搜集与分析/ C5 I% @' i% R( z6 r& W( I$ b
10.1.1 工作流程+ H! O& _1 E- ?3 d2 R# P7 \; Q0 P
10.1.2 日志格式7 Z& K! Z. F. M* D# X d
10.1.3 平台搭建1 h& Y* C* b, q- A4 a w m
10.2 系统监控
3 U- H, j8 H% \10.2.1 监控策略和监控对象4 y* x. V) a3 L! {2 E" j8 \1 b& v
10.2.2 进程监控
% N( |% ]& G0 B+ U2 M; W10.2.3 数据波动监控5 N, X. ~4 I) I* r. g
10.2.4 常用监控命令
! D) H; f4 F' n0 m; p6 g8 U10.3 运维监控
|/ D; p4 n. Y2 o& C' D10.3.1 Zabbix
- y. ^: a6 H' b, w, y) B& j% n10.3.2 Open-Falcon
7 H" K. L6 q; S* Z5 e10.4 APM监控# J7 E& h& w: }- ?2 h- x# j2 _& Y
10.4.1 Pinpoint
, x. [% A5 ?' N4 z6 P: |10.4.2 SkyWalking
& X W7 @8 j3 d* A! r n) e10.4.3 Zipkin, R, p/ z. w N- w( C! m
10.4.4 CAT
3 W; k' ^3 p. D# g4 q4 D10.5 Pinpoint的安装与使用7 f' I( B, f) M0 P: s
10.5.1 Pinpoint的安装1 V2 ]: d% w" O
10.5.2 Pinpoint的使用
2 w: Q5 t9 p6 m# F- |2 e10.5.3 Pinpoint实现邮件告警3 j; o# Z- q, v
10.6 小结
g V2 Y( ^/ d; e第11章 完整示例( Z! f6 T+ {( u
11.1 安装Lombok7 ~. g l0 O+ G- U; j' U
11.2 PiggyMetrics
4 ]+ F: Y; J4 h+ c11.3 整体架构, \$ p9 ? Y! X) L/ F
11.3.1 配置Spring Cloud Config. z9 h1 l/ g; J
11.3.2 授权服务
. L2 A( }9 g: ]' O6 Z+ }4 M6 [4 ?11.3.3 API网关
" F: p A( N) j7 g, l% s: Z11.3.4 服务发现
) B" J+ o1 C/ A$ C) _11.3.5 负载均衡器、断路器和HTTP客户端
# ]1 H# p6 l5 N, N11.3.6 监控仪表盘
& j) [9 n; d! P: K, k11.3.7 日志分析 H* W9 h' z4 V) b+ [) N& I; {
11.4 安装和运行
5 }% [/ e0 o$ c) V11.4.1 配置Maven并导入工程- g" m1 o3 q3 Z! H; A
11.4.2 安装- N; s) C: r8 C1 o& n1 r
11.4.3 使用: W6 U+ ]! x3 S5 N; g }
11.4.4 如何变成自己的项目% p( R2 T# @3 W9 Y; A! e
11.5 小结4 l) R+ A5 m* z* Z0 I7 Q9 C4 }
第12章 微服务核心功能推荐$ Z9 P- q7 ?2 A' R4 X
12.1 工作流引擎' |8 u# I! R7 r$ `7 i. H
12.1.1 Activiti
^ s) t& ~5 \! F12.1.2 UFLO# p1 N) |* r* g" l9 A( ^9 |5 a
12.2 规则引擎' g/ W0 Y- K8 |$ d9 j/ M
12.2.1 Drools
% W. y: ]0 L) v- ^$ B1 j; U6 [12.2.2 URule6 N) ?! @4 ?$ Z8 T
12.3 调度系统
( J; U2 r; k' K. Q* v. t0 v12.4 消息推送0 i/ [$ J$ o3 O, Y E
12.5 网关中间件
. Q4 E, f6 z8 q+ t, y" }6 @12.5.1 Orange: c- R7 x! {" X
12.5.2 Kong# B0 n$ |& z$ J) R. u1 y
12.5.3 Zuul6 j* Y' B9 e9 G' b
12.6 分库分表中间件. E* U! g7 `6 u$ _9 t4 E
12.6.1 Sharding-JDBC$ x6 `5 _- ^' P& L
12.6.2 MyCat java8.com; d7 S$ f; x7 W4 G- z
12.7 报表引擎' [/ H$ p* j2 z" \* q0 R( |
12.8 数据处理4 n) X9 [! g: v
12.8.1 Spring Batch: G2 u% D+ a. U
12.8.2 Kettle
- j# b- C9 m l; A4 P; |' I12.9 并发编程/ w+ d- \$ B" K8 e; j4 j
12.10 分布式配置 _, @4 i( ^* H- u! J. |) ^
12.10.1 Disconf
/ o+ b& c# n4 [- _ [: t/ r. B4 T6 E8 ~12.10.2 Apollo
" s9 L+ ^, T: p [2 n) i6 Q12.11 CAS
& T7 A. ^# W, z12.12 WebFlux
; j3 f# F: o5 f- ?# j8 e12.13 小结4 u3 P* E! y0 g* E: K; j+ }
6 n- ]6 |& e2 v1 H
" j- a Y# y3 B5 E( Z% Y7 p