微服务框架| 青训营笔记

49 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

一、本堂课重点内容:

  • 微服务架构介绍
  • 微服务架构原理及特征
  • 核心服务治理功能
  • 字节跳动服务治理实践

二、详细知识点介绍:

  • 单体架构性能最高,冗余小 debug困难 耦合高 开发慢
  • 垂直架构业务独立开发维护 多个单体架构合并
  • 分布式架构 加一层(业务无关的独立服务层
  • SOA架构 面向服务 (注册中心 服务注册和发现)
  • 微服务架构 开发效率高 故障隔离 彻底的服务化
  • 有状态、无状态服务 服务的实例是否存储了可持久化的数据
  • 对于单体服务,不同模块只是简单的函数调用。对于微服务,服务间通信意味着网络传输。
  • hardcode和DNS都有自己的限制 本地DNS存在缓存,导致延时,负载均衡,不支持服务实例的探活检查 域名无法配置端口
  • 新增一个统一的服务注册中心,用于存储服务名到服务实例的映射
  • 统一网关入口 内网通信多数采用RPC
  • 蓝绿部署 简单,稳定 但需要两倍的资源
  • 灰度发布(金丝雀发布)
  • 流量治理 负载均衡
  • 稳定性治理 线上服务总是会出问题的
  • 限流 熔断 过载保护 降级
  • 本地函数调用可能存在哪些异常 参数非法 out of memory 栈溢出 空指针 本地函数调用没有重复的需要
  • 远程函数调用的异常 网络抖动 服务治理 可能需要重试 因为下一次可能会成功 可以避免一些偶发的错误 降低长尾延时 容忍暂时性错误 避开下游故障实例
  • 重试的难点 幂等性 重试风暴 超时设置
  • 需要限制重试比例阈值 以应对重试风暴

三、课后个人总结:

  • 架构发展一直在向去中心化,低耦合发展,提高开发效率,故障隔离,提高可拓展性,降低的性能可以被取舍掉。

  • 在治理过程中,没有银弹。要根据实际的业务需要确定不同的服务治理策略。

  • 远程函数调用可能需要重试,但是重试也有一些问题需要解决