Summer Blog

微服务架构设计模式--读书笔记

本篇为我阅读《微服务架构设计模式》的读书笔记。如觉得有帮助,请购买正版图书学习。

微服务概览

服务的拓展方式(拓展立方)

 Process1

  1. X 轴拓展:在多个实例直接实现请求的负载均衡
  2. Z 轴拓展:根据请求的属性路由请求。不同于 X 轴拓展,每个实例仅负责数据的一个子集
  3. Y 轴拓展:根据功能把应用拆分为服务,也就是功能性分解。微服务方式:把应用程序功能性的拆分为一组服务的架构风格。

好处:

  1. 高內聚,每个服务都比较小且容易维护
  2. 使大型的复杂应用程序可以持续交付和持续部署
  3. 每个服务独立,可单独部署和扩展
  4. 更容易实验和采纳新技术
  5. 更好的容错性,某个服务发生故障,不会影响全局

弊端:

  1. 服务拆分和定义是一项挑战
  2. 分布式系统本身带来的复杂性,使开发、部署、测试更困难
  3. 当部署跨越多个服务的功能时,需要更谨慎地协调更多的开发团队
  4. 什么阶段开始使用微服务

模式

模式是针对特定的上下文中发生的问题的可重用的解决方案。常用的模式结构包括三个方面:

  1. 需求:描述解决的问题和围绕这个问题的上下文
  2. 结果上下文:采用这个模式的结果,包括三个部分:好处,弊端,问题(引入的新问题)
  3. 相关模式:五种不同的关系:前导,后续,替代,泛化(针对一个问题的一般解决方案),特化(针对特定模式的具体解决方案)

微服务的模式语言

微服务架构模式语言的概括性视图

微服务模式组:

  1. 服务拆分
  2. 通信
  3. 实现事务管理的数据一致性
  4. 查询数据(多数据源数据聚合)
  5. 服务部署
  6. 可观测性(健康检查,日志聚合,分布式追踪,异常追踪,应用指标,审计日志)
  7. 自动化测试
  8. 解决基础设施和边界问题的相关模式
  9. 安全相关

带来的新问题模式组:

  1. 基础设施
  2. 应用基础设施
  3. 应用

Kafka概览

Kafka是订阅发布模式的消息队列。主要作用和其他消息队列一样主要有两个,解偶缓冲

作用

  1. 解偶
  2. 削峰
  3. 异步化

使用场景

  1. 日志

本地 docker 环境搭建

高效能设计

  1. 磁盘顺序存储读取数据的效率其实是很快的,现代操作系统提供预读和页缓存技术。而在内存中保持一个对象,通常的消耗要远远大于数据本身,而且随着堆数据越来越多,java垃圾回收变得越来越频繁和缓慢。由于这些因素,使用文件系统并依赖pagecache(页缓存)将优于缓存在内存中或其他的结构

他们的真实意思是什么

See this BBC video on YouTube, it’s really interesting. Here is the link. Video

Disguised requests

Not asking for information. Used to highlight something. This is less direct, and considered more polite.

Sarcasm

People say the opposite of what they mean, about the things thy don’t like.

signal

i.e.

A: Ah, it's nice to see the weather's fantastic again.[raining outside]
B: Yes, it's great isn't it?
A: Oh, it's a beautiful day.
B: I love days like these.