微服务概览

康威定律

You build it. You fix it.

按照业务组织服务。

按照业务能力组织服务的意思是

去中心化

  • 数据去中心化
    • 隔离性: 每个服务要独享自己的存储设置。
  • 治理去中心化
    • 账号服务 服务发现
  • 技术去中心化
    • 收敛语言,go, C++

基础设置自动化

CICD

Prometheus/ELK/Control Panle

可用性&兼容性设计

Design for Failure,所有的依赖都可能会炸,所有可能出现err的地方都可能出现panic。

  • 隔离
  • 超时控制
  • 负载保护
  • 限流
  • 降级
  • 重试
  • 负载均衡

微服务设计

API Gateway

API版本升级,强耦合

面向用户的业务场景的API,而不是面向资源的API– 前轻后重

安全认证,限流

gRPC & 服务发现

第6课 评论系统架构设计

https://github.com/go-kratos

功能模块

理解整个背后的业务逻辑,理解业务的本质,事情的初衷。搞清楚系统背后的背景,才能做出最佳的抽象和设计。

在动手设计前反复思考,真正编码的时间只有5%?

不要在想的不清不楚的时候动手。

Mysql: OLTP 如果是group by等计算密集型查询的容易把数据库打垮

Binlog ?

架构设计等同于数据设计,梳理清楚数据的走向和逻辑。

尽量避免环形依赖。

malloc 申请2G的内存,是否真正绑定了2G物理内存。

什么是缺页中断。

架构设计

存储设计

可用性设计