总得来说这本书按照微服务的各个内容介绍了一遍,但是只适合入门,并不适合深入了解。看完可以对什么是微服务有一个大致的了解,对于自己实现一个微服务架构还是需要更多的阅读。

第 1 章 原理

微服务架构的目的是为了解决传统单体应用在业务急剧增长时遇到的水平扩展问题。通过拆分服务,将微服务系统中的服务划分明确的职责,做到低耦合,高内聚。

微服务交互模式

  1. 读者容错处理
  2. 消费者驱动契约模式,服务提供者向所有消费者承诺遵守的约束,一旦消费者把具体期望告诉提供者,提供者无论在什么时间和场景下,都不应该打破契约。

两个概念:

  • 水平扩展,扩展单节点
  • 垂直扩展,功能拆分,专业的人做专业的事,将复杂功能拆分为多个单一,简单功能的组合

SOA 面向服务的架构

常见的 SOA 服务化架构

  • Dubbo
  • Thrift

第 2 章 分布式系统一致性问题

分布式系统 CAP 原理

  • Consistency 一致性,同一时刻,所有副本数据一致
  • Availability 可用性
  • Partition tolerance 分区容忍性,可容忍部分数据丢失,但系统仍然能够继续工作

三者不能同时兼得。

BASE 思想,满足 CAP 原理,牺牲强一致性获得可用性,通过最终达到一致性来满足业务

  • BA Basically Available 基本可用
  • Soft State 软状态,状态可以在一段时间内不同步
  • Eventually Consistent,最终一致性,在一定时间窗口内达到一致

解决方案:

  • [[两阶段提交]]协议
  • [[三阶段提交]]协议
  • TCC 协议

第 3 章 服务化系统容量评估末日性能保障

容量:按照峰值 5 倍冗余计算

MySQL

  • 单端口读 1000/s
  • 单端口写 700/s
  • 单表容量 5000 万

Redis

读写 40000/s

Kafka 单机 读 30000/s 写 5000/s

然后书上介绍了一些压测工具,ab,jmeter,mysqlslap,sysbench,dd,loadRunner,hprof 等等

第 4 章 日志

首先介绍了一些日志框架,然后是 ELK。

第 5 章 调用链

这部分没有细看,先开始介绍了 APM 的功能和作用,然后介绍了 Dapper 论文里面提到的调用链跟踪原理。

第 6 章 线上问题

[[海恩法则]]:

每一次严重事故的背后,必然有 29 次轻微事故和 300 起未遂先兆及 1000 起事故隐患。

[[墨菲定律]],这个条太熟悉了,星际穿越中就提及了

如果有两种或两种以 上 方式去做某件事情,而选择其中一种方式将导致灾难,则必定有人会做出这种选择。

墨菲定律实际上是个心理学效应,如果你担心某种情况会发生,那么它更有可能发生,久而久之就一定会发生。

后面介绍了 java 自带的调试工具,还有一些 Linux 下的常用命令。

后面作者举了一个真实的线上问题解决思路。

第 7 章 服务容器化

主要就是介绍 [[Docker]] 了。

第 8 章

关于敏捷开发,持续集成,持续交付和持续部署。然后是一些常用的开发,运维工具。