架构基本思想

成长的本质就是不断破墙而出的认知觉醒!

你以为你以为的就是你以为的吗?

——《这不是我的》

隔离

微服务的本质是隔离!

业务隔离

  • 业务分离
  • 层次隔离

服务隔离

  • 动静隔离
  • 读写分离

轻重分离

  • 核心隔离
  • 快慢隔离
  • 冷热隔离

物理隔离

  • 线程隔离
  • 进程隔离
  • 集群隔离

提效

微服务的目标是提效

开发效率

  • 模块化

  • 短信、push、消息、支付、订单……

  • 规范化

    • 开发规范
    • 代码规范
    • 日志规范
    • 架构规范
  • 工具化

    • 通用jar包(orm、utils)
    • 脚手架
      • springboot:https://start.spring.io
      • elementui:vue-cli
    • 插件(maven、chrome、ide)
  • 平台化

    • 日志平台
    • 链路追踪平台
    • 监控平台
    • 服务治理平台
    • 定时任务平台
    • 实时计算平台

测试效率

  • 单元测试

    junit

    mocktio

  • 流量染色

    流量染色是指根据流量协议设置对应的流量染色规则,对指定的流量进行染色标记,并在整个调用链中携带该标记。通过染色流量可以对特定的流量进行跟踪和路由

发布效率

  • CI/CD
    • Jenkins
    • GitLab CI
    • Travis CI
  • CR
    • Gerrit
  • 部署方式
    • 金丝雀发布(灰度部署)
    • 蓝绿发布
    • 滚动部署

运维效率

  • 全链路追踪
    • Skywalking
    • ZipKin
    • Pinpoint
  • 统一日志平台
    • ELK
    • Graylog
    • Loki
  • 统一监控平台
    • Promethues
  • 在线JVM诊断平台
    • Arthas(阿里)
    • Bistoury(去哪儿)
  • 服务治理平台
    • 服务注册
    • 服务发现

稳定

微服务的保障是稳定

超时保护

没有什么比挂起的请求 和无响应的界面更令人失望。这不仅浪 费资源,而且还会让用户体验变得更差。良好 的超时策略,可以尽可能让服务不堆积请求。

超时设置:设置过长,会造成线程阻塞,可能会造成OOM,设置过短会造成频繁失败。

  • nginx

  • RPC

  • httpClient

  • db

    超时传递:一个请求每个阶段开始前就要检查是否还有足够的剩余来处理请求。

http的header里填充req-timeout字段,在设置httpClient的时候动态设置上timeOut。

过载保护

系统过载是指当前的外部请求量超过了系统的最大处理能力。其最终目标是在系统过载时,服务还能提供一个稳定的较高的处理能力。

  • 过载预防:
  • 压测
  • 过载处置
    • 监控告警
    • 弹性扩容
    • 限流、熔断、降级
  • 过载恢复
  • 无状态应用:快速重启
  • 有状态应用:按一定策略将状态持久化,重启之后加载持久化的状态数据,状态恢复。

限流

  • 限流算法:

    • 令牌桶算法
    • 漏斗算法
  • 限流实现:

    • 单机限流(guava)
    • 分布式限流( redis+LUA)
    • 平台限流( sentinel)

熔断降级

  • 断路器模式
  • 舱壁隔离模式

重试策略

故障转移(Failover)

快速失败(Failfast)

安全失败(Failsafe)

沉默失败(Failsilent)

故障恢复(Failback)

并行调用(Forking)

广播调用(Broadcast)

负载均衡

轮循均衡(Round Robin)

权重轮循均衡(Weighted Round Robin)

随机均衡(Random)

权重随机均衡(Weighted Random)

一致性哈希均衡(Consistency Hash)

响应速度均衡(Response Time)

最少连接数均衡(Least Connection)

混沌工程

混沌工程是一种帮助我们获得更多的关于系统的新认知的实验方法。

它也可以视为流感疫苗,故意将有害物质注入体内以防止未来疾病,这似乎很疯狂,但这种方法也适用于分布式云系统。混沌工程会将故障注入系统以测试系统对其的响应。这使公司能够为宕机做准备,并在宕机发生之前将其影响降至最低。