胖胖的枫叶
主页
博客
产品设计
企业架构
全栈开发
效率工具
数据分析
项目管理
方法论
面试
  • openJdk-docs
  • spring-projects-docs
  • mysql-docs
  • redis-commands
  • redis-projects
  • apache-rocketmq
  • docker-docs
  • mybatis-docs
  • netty-docs
  • journaldev
  • geeksforgeeks
  • 后端进阶
  • 并发编程网
  • 英语肌肉记忆锻炼软件
  • 墨菲安全
  • Redisson-docs
  • jmh-Visual
  • 美团技术
  • MavenSearch
主页
博客
产品设计
企业架构
全栈开发
效率工具
数据分析
项目管理
方法论
面试
  • openJdk-docs
  • spring-projects-docs
  • mysql-docs
  • redis-commands
  • redis-projects
  • apache-rocketmq
  • docker-docs
  • mybatis-docs
  • netty-docs
  • journaldev
  • geeksforgeeks
  • 后端进阶
  • 并发编程网
  • 英语肌肉记忆锻炼软件
  • 墨菲安全
  • Redisson-docs
  • jmh-Visual
  • 美团技术
  • MavenSearch
  • 标签索引
  • 2024年

    • 配置Mac环境
    • 业务知识会计管理
    • 业务知识会计基础
    • 业务知识什么是财务
  • 2023年

    • 项目 Boi
  • 2022年

    • 企业架构故障管理
    • 企业架构开发债务
  • 2021年

    • Python3.8 Matplotlib员工数据分析
    • Python3.8 Matplotlib IP折线图
    • Python3.8 词云 IP地址
    • Redis RediSearch
    • Rust第一个CLI程序
    • Rust所有权
    • Rust函数与控制流
    • Rust变量与数据类型
    • Rust入门
    • 企业架构分布式系统
    • 编程式权限设计
    • Java JVM优化
    • SpringBoot MyBatis 批量
    • SpringBoot 测试Mock
    • SpringBoot Redis布隆过滤器
    • CentOS7 Jenkins 部署
    • SpringBoot WebClient
    • Docker Drone 部署
    • SpringBoot MyBatis
    • SpringBoot Redisson
    • SpringBoot MyBatis 雪花算法
    • Java Netty
    • Redis 扫描
    • CentOS7 Jenkins本地部署分级
    • Mac 安装 Neo4j Jupyter
    • Mac OpenJDK11 JavaFX 环境
    • Mac 安装 Jenv
    • SpringBoot Redis 延时队列
    • SpringBoot MDC日志
    • SpringBoot 定时任务
    • CentOS7 Nginx GoAccess
    • SpringBoot MyBatis 分析
    • SpringBoot Lucene
    • 企业架构分布式锁
    • 学习技巧减少学习排斥心理
    • SpringBoot 动态数据源
    • Docker Compose SpringBoot MySQL Redis
    • SpringBoot 阻塞队列
    • Docker Compose Redis 哨兵
    • Docker Compose Redis 主从
    • 网络通信
  • 2020年

    • SpringBoot 延时队列
    • MySQL基础(四)
    • Java 雪花算法
    • Redis Geo
    • 网络通信 Tcpdump
    • Spring SPI
    • Java Zookeeper
    • SpringBoot JMH
    • 网络通信 Wireshark
    • Docker Compose Redis MySQL
    • CentOS7 Docker 部署
    • Netty 源码环境搭建
    • MySQL基础(三)
    • CentOS7 Selenium运行环境
    • CentOS7 Nginx HTTPS
    • Java JMH
    • SpringBoot 修改Tomcat版本
    • Java Eureka 钉钉通知
    • SpringBoot 错误钉钉通知
    • Java JVM
    • Git 合并提交
    • CentOS7 OpenResty 部署
  • 2019年

    • Redis CLI
    • CentOS7 Nginx 日志
    • 编程式代码风格
    • IDEA 插件
    • Skywalking 源码环境搭建
    • SpringBoot Redis 超时错误
    • 编程式 gRPC
    • Java Arthas
    • Docker Compose Redis 缓存击穿
    • Docker ElasticSearch5.6.8 部署
    • Docker Mysql5.7 部署
    • Spring Redis 字符串
    • Docker Zookeeper 部署
    • Docker Redis 部署
    • SpringBoot Dubbo
    • CentOS7 CMake 部署
    • 应用程序性能指标
    • Java Code 递归
    • CentOS7 ELK 部署
    • CentOS7 Sonarqube 部署
    • Java Selenium
    • Java JJWT JUnit4
    • Spring 源码环境搭建
    • Java JUnit4
    • Java Web JSON Token
    • 编程式 FastDFS
    • Java XPath
    • Redis基础(二)
    • Redis基础(一)
    • Java MyBatis JUnit4
    • Java MyBatis H2 JUnit4
    • MyBatis 源码环境搭建
    • Git 配置
    • Java 核心
    • Java Dubbo
    • Java JavaCollecionsFramework
    • Java Maven
    • Java MyBatis
    • Java Spring
    • Java SpringMVC
    • MySQL
    • Redis
  • 2018年

    • Java HashMap
    • Java HashSet
    • Java Code 交换值
    • Spring Upgrade SpringBoot
    • Mac 编程环境
    • Java Log4j
    • 网络通信 Modbus
    • MySQL基础(二)
    • MySQL基础(一)
    • Java Stack
    • Java Vector
    • CentOS7 RabbitMQ 部署
    • CentOS7 Redis 部署
    • CentOS7 MongoDB 部署
    • CentOS7 基础命令
    • Java Eureka Zookeeper
    • CentOS7 MySQL 部署
    • Git 分支
    • CentOS7 Java环境配置
    • Java LinkedList
    • Java ArrayList
    • Spring Annotation Aop

企业架构分布式系统

分布式系统

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

  • 在没有系统学习分布式相关知识的情况,通常选择针对局部场景需求进行认知下局部最优解决。处理问题也没有十足的把握,在系统稳定性上只能通过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、时序数据库等相关组合配合。

分布式架构

分布式架构演变

最近更新: 2025/12/27 18:51
Contributors: 庆峰
Prev
Rust入门
Next
编程式权限设计