第1章 微服务概述
/ v! _6 t F- I$ U1 M5 B% C1 V1.1 什么是微服务
5 c! X0 Y0 l0 ]1 S1 m2 j+ \( J: f! r$ q9 U1.2 为什么微服务3 ?) ?9 y4 m/ x( A
1.2.1 区别
( W+ F5 O- _, z6 M& s7 C0 `1.2.2 从单体应用说起8 R9 N$ e& S, Q* m, O
1.2.3 步切分
& I! h2 n/ B1 w3 k1.2.4 服务化所带来的问题
+ A+ ?7 @9 h, a1 R1.2.5 微服务的可扩展性
$ L7 g/ ~+ \, @2 {; G3 c. [1.2.6 微服务与SOA的区别
. n7 j# h# ]' s& e8 E+ R0 }) A1.3 常见的微服务组件
9 \5 F8 p& X" r+ B1.4 常用的微服务框架- s# X7 P: T8 b
1.4.1 Spring项目" z& S' _# z) x9 v0 C
1.4.2 背景, [3 K. P1 b; W5 p" ~
1.4.3 社区活跃度
0 u$ g( g: z+ V$ v# J3 v7 i1.4.4 架构完整度
& w7 ^2 h- x1 j( B) H1.4.5 总结1 G! D7 J" g J
1.5 微服务架构设计模式
8 p% R8 _3 T4 U3 {' G& A) I9 m, ?1.6 如何实施微服务
4 t) F( u, n2 j$ k* t1.7 小结( ?9 O' ~; \. ~8 B
第2章 微服务设计原则
! r3 y: [7 W' |9 a) r7 x2.1 设计原则之分层架构
" j" q& G& a$ N$ B# p4 h2.2 设计原则之统一通信协议
/ G2 `* p' Y; g) Q$ `. H2.3 设计原则之单一职责/ ` t/ |2 }! X% l! q
2.4 设计原则之服务拆分/ U; s9 W8 K3 N8 |+ j4 o% P
2.5 设计原则之前后端分离; p# Z; K: ~8 q5 s# G
2.6 设计原则之版本控制
3 d2 [$ p$ h. F8 L2 o( f2.7 设计原则之围绕业务构建
6 c3 z- S" C- ?9 ], d2.8 设计原则之并发流量控制
, r! ]- O) J- j3 d2.9 设计原则之CAP( E" s* v y: M: X5 l7 t2 p8 g
2.10 设计原则之EDA事件驱动; I! k. k2 C2 j6 T0 o$ l
2.11 设计原则之CQRS$ m1 v, Y- K7 M K' e5 G
2.12 设计原则之基础设施自动化& q/ v, T G# ^; M) m
2.13 设计原则之数据一致性* P( A3 Z T1 u# ~1 c+ `5 w0 H) t
2.14 设计原则之设计模式4 @" h! Z- n5 W4 N0 C
2.15 设计原则之DevOps
3 u/ B$ w ]" @2.16 设计原则之无状态服务
9 V8 ]$ `" {; C2.17 小结
; B) i- b; z7 ~第3章 微服务之Spring Boot
4 u9 I% @- c- x( E3.1 一切从简单开始
1 U3 P, s: { V$ G: N0 P) ~) o3.2 快速集成第三方的Starter9 M* m ~+ Z7 x. J8 a" a( L
3.3 降低开发复杂度之面向切面
+ O5 z1 v( V( }# C8 R, G+ w: W3.3.1 前置通知7 v" L/ W, G9 ]8 p. D* H
3.3.2 后置返回通知( W& w R8 [# p9 @
3.3.3 后置异常通知
( D! Q, j& @! c- S D& i, F4 N% R3.3.4 后置终通知" ~. W; K, ]4 y0 [
3.3.5 环绕通知# q; a% {* K0 c6 ~4 b! W/ d
3.3.6 AOP总结
2 T6 b* H1 n P6 S4 [8 I S3.4 并不复杂的持久化
; \6 n% N4 y# z: K1 O$ k: G7 I3.4.1 单数据源7 u3 |7 | _# I7 H8 u
3.4.2 多数据源$ o" L# X4 s& ]" v3 T
3.4.3 JOOQ
1 l+ ~$ Q) d! a/ f, N3.4.4 事务处理
6 ~/ X) S- _1 S! \( {# u3.4.5 整合Redis
1 p, H+ W: ~5 E- j* E( ^1 W- e, A3.4.6 整合队列
$ k( \7 N# T. X# D1 q/ I3.4.7 操作MongoDB2 C" W) i( J6 @3 K6 L% V
3.5 Web开发
- _* N5 z4 G6 H3.6 懒人的接口文档管理
! {4 r* H: d: I- p! s3.7 优化的调度
% X4 ?6 w) T, ]3.8 健康是永恒的主题1 E% N$ N& X, ^6 B7 ]* T
3.9 强强联合之整合Dubbo
/ h0 ^- }" |( K. U3.10 小结
2 R- i, A B- A8 r2 d第4章 微服务之Docker
: B8 e6 f2 f% o: [7 {4.1 Docker原理
+ j0 x- a/ n0 b/ } ]4.2 更轻量级的虚拟化5 K. v( d# f) g$ k
4.3 三个概念理解Docker2 ]1 I( P/ \/ E! u3 `9 W
4.3.1 镜像(Image)0 A0 G1 \! ^# z% [0 T
4.3.2 容器(Container)
# N) U$ \( z) U9 p) ]/ K; J8 V6 z6 X4.3.3 仓库(Repository)' ]- Y) ?# x1 c
4.4 Dockerfile定制一切9 \ O/ R9 q& u1 F9 B9 }/ H9 G
4.4.1 Dockerfile语法6 P8 Y# I. \2 j+ D$ f
4.4.2 Dockerfile命令
, l N! D" _5 T6 `( c$ O4.4.3 Dockerfile构建过程9 E- j$ W& n [# |1 P6 [& ] [/ s
4.4.4 构建Java环境
! v& h3 S' y. O* z; w/ k4.4.5 Dockerfile小结
( v3 T8 ^9 r' |( L1 `2 Y8 F4.5 Docker网络
8 Z! R( ]9 |0 F4 A4 _. P+ }7 Z4.5.1 网络模式! p0 J3 `+ e6 [4 b
4.5.2 link
( v: a- ~& y; n* l$ A4.5.3 跨主机访问
( }: l$ _/ D+ W, X. x, |) Q4.6 Docker数据卷$ ?+ o% M0 |8 W: B- n+ M* G }
4.6.1 数据卷
0 S& L1 ] Q1 W4.6.2 数据卷容器8 ?- N. J1 I. O, @! z, Q
4.7 Spring Boot与Docker; V3 O) _0 f! ]; |
4.8 搭建自己的镜像仓库
2 F- |" V: ~0 l" w4.8.1 安装和启动* A: H% _2 v k! S9 C5 F
4.8.2 使用3 a. j( D& d4 E3 X% ^
4.9 Kubernetes
! r4 \# y0 m$ t, v- j! K! z4.10 私有云整体架构; a2 B" ` c j# h
4.11 小结
2 d2 a" f) {# n$ d' Y4 T第5章 微服务之Spring Cloud2 U& `* S3 v: d O) Y
5.1 注册中心
4 e2 d3 d5 `) G3 }8 n2 y5.1.1 常用的注册中心
2 _4 s3 l4 }0 k) r2 i9 m6 b" k5.1.2 Eureka介绍# ]3 M5 [7 { q' d1 g
5.1.3 服务发现% k" b, G: u7 n4 x0 l9 m
5.1.4 简单注册% q5 e: r4 b2 E4 l* ^
5.2 负载均衡
# @' m. A6 E# y2 H5.2.1 Spring Cloud的负载实现
/ L: y, [ E0 k9 |( t; |+ j6 p3 O5.2.2 Ribbon+ W" ^" x: p) X0 y4 t- A
5.2.3 Feign
& t/ _" {6 A0 m. w5.2.4 加入core! Q" w& j1 P4 n2 v- n" x4 ?+ Z6 c. \
5.3 微服务容错(Hystrix): ?& ?. ]4 q* v$ v6 ]. Y3 {
5.3.1 雪崩的形成# r0 A5 h- x/ N! \) E9 H
5.3.2 应对方案
M7 S9 L- R- G$ A+ g2 g+ `! W+ p5.3.3 降级和熔断7 w1 ~( J+ g9 g4 [) R N, Z
5.3.4 Hystrix- D$ G( L$ v9 q
5.3.5 集中监控0 |: J. M7 W6 J$ Q& q4 p0 M) Z
5.4 分布式配置中心; {' o! G( M S( t3 U4 ^2 ^
5.5 API网关
* g) _, I% r; Y$ X8 j/ ~5.5.1 为什么需要网关
; q. N* l- z, y8 `5.5.2 Zuul6 `' w" h( N6 u
5.6 消息总线(Spring Cloud Bus)) |+ S2 T% \( e
5.7 小结
; X5 ^1 h' O3 f第6章 微服务之Spring Cloud其他框架; V# X) Z5 D. [2 f
6.1 Spring Cloud Consul
2 ?, x% `7 n* H! t+ n6.2 Spring Cloud ZooKeeper
) l1 O: P" G0 ?/ e. I1 |, ?' e6.3 Spring Cloud archaius
4 }: q# f# N' G7 ~ k6.4 Spring Cloud Task* }4 a3 ~" v7 g0 V
6.5 Spring Cloud Security
, l# r: p/ ^, ]; Q Q6.5.1 HTTP Basic Authentication
1 S/ r0 a8 D# r% }9 I6.5.2 JWT
% K5 D! u. f9 B6.5.3 OAuth 2
9 i) `5 x* o1 R P6.5.4 Spring Cloud Security
1 o, B5 x& d$ ~" l% ]5 U' {6.6 Spring Cloud Sleuth
: c6 k' Z+ q* |( k$ U# V6.6.1 服务端
* e* R- b' P0 T7 Y9 r: S! i6.6.2 客户端9 m2 R6 ?5 H* h2 [/ t. B
6.7 Spring Cloud Stream
- { O0 {* Z# N; j1 h. F6.8 Spring Cloud Data Flow
7 f( {1 H: ]6 f5 R6.9 小结6 E# O8 Z- m7 Y, o% o; X& _
第7章 微服务之自动化测试与质量管理% w( d% u; m- u" L' D& n
7.1 微服务测试
" n( x* v. f t" n5 }& [7.2 单元测试' ~, T- [! C9 X/ w9 O# A7 u
7.2.1 单元测试及覆盖率评估7 ]$ b5 R$ v+ J( A: d
7.2.2 JUnit# X4 ?, F8 N$ h* {: ~# w! X: F
7.2.3 Spring Boot单元测试) C; n [2 ^6 q9 `# x
7.2.4 Mockito2 M; @9 p1 O) i8 o" k7 V4 k: Q
7.3 API测试
. @/ I: W4 \- D& `5 w7 N, ~7.3.1 Jmeter7 O0 b7 b" e" j W, h: O6 E! J1 I( ?
7.3.2 压力测试
* O7 d' f/ `7 g, Q0 L! p2 R0 K7.4 A/B测试
# D( X2 R9 A* b7.5 冒烟和回归测试- b$ \' c2 v! C, |
7.6 静态代码分析
5 w- J, |4 S9 X; g! j7.6.1 Checkstyle) O5 b O" v+ W9 \& m) K
7.6.2 FindBugs
0 T) ], I1 _( c2 [7 I2 l" A# p7.6.3 PMD7 v0 h0 T1 r* b1 x+ f$ `# L
7.7 SonarQube质量监控* [5 a! P" P" K
7.7.1 为什么使用
! l$ z6 C9 O* _( X7 a* n7.7.2 安装和使用
: O6 c* E$ o8 R7 ^7 h: j) Q8 L7.7.3 安装插件 u( a' g' g/ m1 ?7 N* v, t T
7.7.4 运行流程" s: d0 U7 m. B. w
7.8 小结0 C6 }2 q8 a6 r7 i U
第8章 微服务之JHipster
7 D; w" e4 z2 r8.1 JHipster技术列表
+ w" n: T4 p* Q- G% ^* M8.1.1 客户端选项, ]& i# s* L9 t9 a( `8 ^
8.1.2 服务端选项3 W8 R- n& M7 x5 V, _/ c ?5 |
8.1.3 部署选项3 k3 F( u; S; c3 I! F
8.2 Angular简介5 K5 ]/ A! b' R& |9 E$ I1 d/ U
8.3 快速开始JHipster& m8 l, E" E; }$ j2 Y
8.3.1 安装$ X: f C* p7 S$ g; N# i# C
8.3.2 使用$ z% ^9 }) S( t# S
8.3.3 构建单体应用$ v% v# w0 E" N, f$ H. t
8.3.4 Entity sub-generator3 l7 {& k& i# Z
8.3.5 开发和运行
! Z% M3 ^! w2 S5 V$ T6 n, q8.3.6 插件安装
& q9 n" K2 s0 Z* H5 I5 G8.4 目录结构: ]: O$ m7 {! X+ a ]0 F( `- I
8.5 构建微服务应用* |0 g1 R+ @0 b( M
8.5.1 注册中心6 _4 R' ~: w/ n5 \; W
8.5.2 创建微服务网关% U1 ~* L/ H1 P3 I% P2 ~& q
8.5.3 Traefik
" s D0 t$ ]$ ]. E8.5.4 JHipster UAA. K _5 X+ m2 N2 P& z
8.5.5 构建微服务应用
r, r1 V% M: d. A3 b' W% h; q( l8.6 基础配置
& X$ ], ]' u1 M" [ g8.6.1 JHipster属性配置3 W( [4 t U# S7 S7 G+ G
8.6.2 作为Maven项目
7 j. B. k3 z9 V8 ^8.6.3 数据库6 E9 M8 l) \' s: @, U0 Z' n
8.6.4 DTO
G4 ?. ]* ?, V- p; |, O9 N. E8.6.5 分页
) H1 B0 f& V7 Y4 ~& R2 `2 D( u2 J8.6.6 文档
+ t8 Z$ c+ A/ r- H# v' N8.7 小结
; H: A4 p3 j6 Q; y/ l* x. R; {第9章 微服务之自动化部署0 k1 @/ P% `9 V' K7 N
9.1 私有仓库搭建1 z2 { q; F! w1 g3 r. N
9.1.1 Nexus介绍6 M3 \% f+ M o7 x( x& D
9.1.2 安装与配置
4 B9 d+ z1 E' c9.1.3 在项目中使用
; o- H; |% w% X8 R Z" M+ L( V5 l9.2 Ansible& s' c2 m& l+ F, B* R* K$ |- Z6 K
9.3 持续集成; Z- H* [/ Y& I5 v
9.3.1 持续集成流程
' s9 q* t: U! x' _& l2 f9.3.2 Jenkins介绍与安装
( [2 a3 y' M% v/ c+ T9.3.3 Maven介绍( B* N# l: d7 o$ i8 S# K8 B8 d
9.3.4 Jenkins系统设置
1 @+ p+ [4 i) h8 r* a* u" ^1 I& {9.3.5 集成Sonar, G+ T* Q( u% @8 e
9.3.6 构建工程" p, N( H. i G; j% z
9.3.7 配置测试, V" z3 z: f* t% f: G5 t+ Y9 v
9.4 灰度发布" y& T7 n$ Y# Q7 u+ T$ ]. U) B- a
9.5 小结, R3 ^( i- v2 O6 N! h1 [4 Z1 _& w
第10章 微服务之日志收集与监控
5 i/ \" M' @) ]: c0 d, ]# L10.1 ELK搜集与分析 D$ t4 @& L+ |0 A: M3 B2 r
10.1.1 工作流程( y7 F' y; d6 u/ C1 |) E0 ]
10.1.2 日志格式- h7 V( c1 d) ^6 N! B
10.1.3 平台搭建
7 I7 M- k; x& i10.2 系统监控( |* h; s# _& a, g K% f
10.2.1 监控策略和监控对象
4 {7 M" w( d. o. f& \10.2.2 进程监控/ n$ ~; C6 x' j; a& |, g
10.2.3 数据波动监控3 g6 X- B3 O* F2 F9 @2 h6 [" w( l
10.2.4 常用监控命令2 W: V4 Z/ v4 r+ |6 H) y& B# t0 R
10.3 运维监控& E3 v( s2 {5 v) E7 ?1 h
10.3.1 Zabbix
! b2 h3 H' {* l# r. q+ [10.3.2 Open-Falcon
3 T; @# G2 F+ a. w0 x3 y4 e' x& X10.4 APM监控- c/ E }( `7 K7 |; J" s
10.4.1 Pinpoint
- H5 Z- Y2 c8 q+ G& @10.4.2 SkyWalking
8 D& A1 k& O% H: Q" ]+ }10.4.3 Zipkin
: D- q6 W% ~+ E9 h) O10.4.4 CAT
: g% L! Y0 R" g/ g6 y10.5 Pinpoint的安装与使用. J) z/ _. v6 f$ u2 n
10.5.1 Pinpoint的安装$ t" f; K$ X" l+ B% A4 T8 W
10.5.2 Pinpoint的使用$ u# F8 Z6 Y" T
10.5.3 Pinpoint实现邮件告警2 @3 |% ^: a5 a: m9 b2 K+ P9 E
10.6 小结9 {9 }& `2 u+ T! ?2 q% M
第11章 完整示例
* J: A! j' J c5 q: w" x9 ]% ~11.1 安装Lombok
# [7 ]2 M) Q: M; a! |$ X11.2 PiggyMetrics( g, X, Z5 X% Z: A
11.3 整体架构: X, I0 w h0 p0 |
11.3.1 配置Spring Cloud Config
5 P& l: f; o7 q f* V11.3.2 授权服务
?, H- V8 T0 [- a# L* A& h11.3.3 API网关; ~) s" g& C& _3 f6 T8 U4 M1 A! u
11.3.4 服务发现0 ^& M7 ^ u6 Y' w: D2 X9 M
11.3.5 负载均衡器、断路器和HTTP客户端
5 Y0 a4 O* n: _* p! \5 L, \11.3.6 监控仪表盘: L2 f) ?4 t5 _1 q# y7 ? y
11.3.7 日志分析# e- i$ N; g1 `; V1 s) c, d
11.4 安装和运行* [7 g( k# ~# O7 K* |; i& h
11.4.1 配置Maven并导入工程
1 K* d+ _$ |( P( F9 Q( `2 @5 ?11.4.2 安装! s' E' [- b* _" ]! X
11.4.3 使用
% I# y+ `( \6 j/ V& D11.4.4 如何变成自己的项目
+ I- J4 R* e& v11.5 小结: o+ w4 t* O# W. N$ S- o
第12章 微服务核心功能推荐
9 Z1 J% n" F) W8 W2 a. n* H( F1 y12.1 工作流引擎
6 ?0 f# E' u+ G4 C+ A12.1.1 Activiti
0 g u+ \9 q, ~5 O) U9 h* o12.1.2 UFLO) Q: p" f* I' W' E8 H
12.2 规则引擎 o( W. f M: L2 `2 T3 c$ E: w
12.2.1 Drools1 \3 n) w% _1 H& }. s2 S
12.2.2 URule
+ p% L) y" x5 N: o' [/ _' U: v$ A" D12.3 调度系统& ]* }) E2 u! R' z
12.4 消息推送
" E" c/ D; q3 T( e4 @8 }* \12.5 网关中间件
! R1 C8 u0 r/ C1 a# I ^- F1 m12.5.1 Orange2 U# n% i1 X$ u/ t" ^9 w+ B* Q
12.5.2 Kong9 o+ M* H9 }4 J& N* k) y, m5 u
12.5.3 Zuul
8 ]' n5 u8 G5 ?1 x1 ]. `12.6 分库分表中间件 H- h, O+ Z/ O5 a- ^
12.6.1 Sharding-JDBC! C3 Q' D; r( Y$ W8 @: p, _/ Q
12.6.2 MyCat java8.com
- A+ O/ R T1 b) T& U# a8 C12.7 报表引擎
, K) z& m4 z- l! `2 p12.8 数据处理
" }- m {5 c- R12.8.1 Spring Batch9 b4 e( w9 ]+ e7 C! _
12.8.2 Kettle( \9 R7 l5 z9 Z1 b( v/ v+ K5 l
12.9 并发编程
5 y( B) @& R. v! i12.10 分布式配置
+ W* V: @2 s" I2 l+ k1 [3 z% \% Z+ g1 u12.10.1 Disconf2 Y; C9 i W8 x7 G
12.10.2 Apollo
. E1 |- L3 K/ j2 F9 L12.11 CAS
% h7 Z2 K M! @- W3 a9 p: s0 M& z12.12 WebFlux( [4 x) j9 K$ f' d
12.13 小结7 g h* |, K% y5 l
$ H7 q9 `9 m$ |+ ^% R
; K% d, o# e: f( j" d' Y9 W- `* v