青训营笔记

190 阅读2分钟

后端Go框架设计与实现:

这是我参与【第五届青训营】伴学笔记创作活动的第7天。

3.走进 HTTP 协议:

常见的状态码有:

  • 1xx: 信息类
  • 2xX: 成功
  • 3xx: 重定向
  • 4xX: 客户端错误
  • 5xX: 服务端错误

6.微服务架构原理以及特征

单体架构

优势:

1.性能最高 2.冗余小

劣势:

1.debug 困难 2.模块相互影响模块 3.分工、开发流程

分布式架构

优势:
  1. 业务无关的独立服务
劣势 :
  1. 服务模块bug可导致全站瘫痪
  2. 调用关系复杂
  3. 不同服务元余

微服务架构

优势:
  1. 开发效率
  2. 业务独立设计
  3. 自下而上
  4. 故障隔离
劣势:
  1. 治理、运维难度
  2. 观测挑战
  3. 安全性
  4. 分布式系统
服务间通信

对于单体服务,不同模块通信只是简单的函数调用. 对于微服务,服务间通信意味着网络传输。

7.核心服务治理功能

服务发布的难点:

  • 服务不可用
  • 服务抖动
  • 服务回滚

服务发布:

  • 蓝绿部署(简单,稳定,但需要两倍资源)
  • 灰度发布(金丝雀发布)

稳定性治理:

  • 限流
  • 熔断
  • 过载保护
  • 降级

8.服务治理实践

重试的意义:

重试可以避免掉偶发的错误,提高SLA

  1. 降低错误率:
  • 假设单次请求的错误概率为 0.01,那么连续两次错误概率则为 0.0001。
  1. 降低长尾延时:
  • 对于偶尔耗时较长的请求,重试请求有机会提前返回
  1. 容忍暂时性错误:
  • 某些时候系统会有暂时性异常 (例如网络抖动),重试可以尽量规避
  1. 避开下游故障实例:
  • 一个服务中可能会有少量实例故障(例如机器故障)重试其他实例可以成功。

  • 可以设定一个重试比例阈值,重试次数占所有请求比例不要超过该阈值

  • 对于可能超时(或延迟高)的请求,重新向另一个下游实例发送一个相同的请求,并等待先到达的响应