0%

EnterpriseArchitecture-Distributed-System

分布式系统

开发了几年的分布式系统,对其原理模模糊糊。大量的时间在研究场景下解决方案。并未深入总结过。本文梳理个人对分布式的认知理解。

  • 在没有系统学习分布式相关知识的情况,通常选择针对局部场景需求进行认知下局部最优解决。处理问题也没有十足的把握,在系统稳定性上只能通过case by case的方式处理。

  • 解决单机性能瓶颈。

  • 解决数据增加运维成本。

分布式理论

  • CAP
  • BASE
  • ACID

分布式计算

网络异步

  • 本地调用

  • 远程调用

    • 请求超时机制

    • 响应超时机制

    • 幂等性

    • 重试机制

无状态服务

  • 协同工作
    • 分布式锁
    • 系统时钟
      • 墙上时钟
      • 系统时钟 = 本地时间 = 时间服务器的返回时间 + 时间服务器响应的网络时延

负载均衡

  • 轮询
  • 权重
  • Hash
  • 一致性Hash
  • FAIR

配置中心

  • 统一配置文件
  • 降低运营出错率

系统雪崩

  • 快速失败
    • 熔断机制
  • 降级机制
    • 限流
  • 弹性扩容 增加系统服务能力
    • Docker
    • k8s

可观测性

  • 分布式系统监控
  • 分布式追踪Trace
  • 异常告警机制
  • 运行指标可视化

故障恢复

  • 混沌工程

分布式存储

分布式事务

  • 并发事务排序
  • 分布式主键

分布式锁

  • Mysql
  • Redis
  • Zookeeper
  • Etcd

数据分片

  • Hash
  • Region

数据复制

  • 主重复制
  • 一致性协议
    • Raft
    • Paxos
  • 去中心
    • Quorum
    • Vector Clock
  • 一致性级别
    • 线性一致性
    • 顺序一致性
    • 最终一致性

数据存储

  • 分布式文件存储
    • HDFS
    • GFS
  • 分布式消息列队
    • Kafka
    • Pulsar
    • RocketMq
  • 分布式缓存
    • Redis Cluster
  • Sql
    • Mysql
    • Sharing机制
  • NoSql
    • Redis
  • NewSql
    • TiDB

数据清洗

  • OLTP 联机事务处理
    • 对数据进行增删改查,SQL 查询优化,事务处理等就属于 OLTP 的范畴。它对实时性要求高,需要将用户的数据有效地存储到数据库中,同时有时候针对互联网应用的需求。需要设置数据库的主从架构保证数据库的高并发和高可用性。
  • OLAP 联机分析处理
    • 对已经存储在数据库中的数据进行分析,帮我们得出报表,指导业务。它对数据的实时性要求不高,但数据量往往很大,存储在数据库(数据仓库)中的数据可能还存在数据质量的问题,比如数据重复、数据中有缺失值,或者单位不统一等,因此在进行数据分析之前,首要任务就是对收集的数据进行清洗,从而保证数据质量。

分布式监控

监控系统在分布式场景下是非常重要切容易被忽视的一个环节,正确运用,它在故障事发前进行告警、在故障期间定位问题、在故障事后复盘。

监控的模式

监控贯穿了应用系统整个生命周期,可以归纳为系统、业务、数据三大监控板块。

业务监控
  • 定义业务指标。通过对业务进行埋点、数据统计的方式对业务情况反馈,比如ORI场景计算等等。
应用监控
  • 通过第三方探针或者内省的方式,将应用当前的运行特征暴露出来。比如通过端口等方式暴露运营信息比如SpringBoot Actuaotr 对应用运行特征暴露。Skywalking 通过探针对应用之间的链路处理过程进行暴露。
系统监控
  • 对物理主机、容器系统层面进行监控,比如CPU利用率、内存利用率、硬盘使用等等操作系统。
监控的方式
  • 健康检查监控
    • 对应用、中间件本身进行监控,比如心跳、运行特征状态等等。
  • 日志监控
    • 对应用、中间件日志进行监控,通过异常日志等信息告警或者其他处理。ELK相关解决方案。
  • 调用链监控
    • 应用、中间件之间存在调用、被调用的场景,对业务执行的时间、调用应用、中间件等信息进行记录。便于系统优化、故障排查等。Skywalking APM相关产品解决方案。
  • 指标监控
    • 建立不同的指标体系,对应用、中间件、操作系统运行信息聚合计算后,反应出一些重要的指标趋势。Prometheus、时序数据库等相关组合配合。

分布式架构

分布式架构演变