持续演进的Cloud Native (读书笔记04)

简介: 横向扩展(scale out)也叫水平扩展,指用更多的节点支撑更大量的请求。例如如果1台机器支撑10 000TPS,那么两台机器是否能支撑20 000TPS?纵向扩展(scale up)也叫垂直扩展,扩展一个点的能力支撑更大的请求,它通常通过提升硬件实现,例如把磁盘升级为SSD。

可扩展性设计


横向扩展


  • 横向扩展(scale out)也叫水平扩展,指用更多的节点支撑更大量的请求。例如如果1台机器支撑10 000TPS,那么两台机器是否能支撑20 000TPS?
  • 纵向扩展(scale up)也叫垂直扩展,扩展一个点的能力支撑更大的请求,它通常通过提升硬件实现,例如把磁盘升级为SSD。


如何扩展数据库


  • 主从复制集群
  • 分库、垂直分表
  • 分片(sharding)
  • 区间法(Range-Based)
  • 轮流法(Round-Robin)
  • 一致性哈希法(Consistent Hash)


如何扩展数据中心


  • 两地三中心
  • 同城多活
  • 异地多活



性能设计


比较常见的性能问题如下


  • 内存泄漏——导致内存耗尽。
  • 过载——突发流量,大量超时重试。
  • 网络瓶颈——需要加载的内容太多
  • 阻塞——无尽的等待。
  • 锁——通过限制。
  • IO繁忙——大量的读写、分布式
  • CPU繁忙——计算型常见问题。
  • 长请求拥塞——连接耗尽。


性能指标


  • 响应时间(Latency),就是发送请求和返回结果的耗时。
  • 吞吐量(Throughput),就是单位时间内的响应次数。

树立目标

寻找平衡点

  • 我们可以通过一组压力测试数据找到拐点。

定位瓶颈点

  • 压力测试
  • 日志分析
  • 监控工具

服务通信优化


  • 同步转异步
  • 阻塞转非阻塞
  • 序列化优化

通过消息中间件提升写性能

通过缓存提升读性能

  • 缓存的常用模式
  • Read Through模式
  • Write Through模式
  • Write Behind Caching模式
  • Cache-Aside模式
  • Cache-As-SoR模式
  • 为缓存数据设置合理的过期时间
  • 为缓存设置回收策略
  • 先预热数据


数据库优化


  • 通过执行计划分析瓶颈点
  • 为搜索字段创建索引
  • 通过慢查询日志分析瓶颈点
  • 通过提升硬件能力优化数据库
  • 目前各大互联网公司的数据库均使用SSD硬盘或者PCIE-FLASH,据说2012年的时候微博使用PCIE-FLASH支撑了Feed系统在春晚时的3.5万QPS。


简化设计


  • 转移复杂度
  • 从业务角度优化


一致性设计


事务


  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 未提交读(Read uncommitted)
  • 提交读(Read committed)
  • 可重复读(Repeatable reads)
  • 可序列化(Serializable)
  • 隔离级别
  • 持久性(Durability)


CAP定理


  • 一致性(Consistence)
  • 可用性(Availability)
  • 分区容错性(Partition tolerance)


分布式系统的一致性分类


  • 以数据为中心的一致性模型
  • 1.严格一致性(Strict Consistency
  • 2.顺序一致性(Sequential Consistency)
  • 3.因果一致性(Causal Consistency)
  • 4.FIFO一致性(FIFO Consistency)
  • 以用户为中心的一致性模型
  • 1.单调读一致性(Monotonic-read Consistency)
  • 2.单调写一致性(Monotonic-write Consistency)
  • 3.写后读一致性(Read-your-writes Consistency)
  • 4.读后写一致性(Writes-follow-reads Consistency)
  • 业界常用的一致性模型
  • 弱一致性
  • 最终一致性(Eventual Consistency)
  • 强一致性(Strong Consistency)
  • 如何实现强一致性
  • 两阶段提交
  • 三阶段提交(3PC)
  • 如何实现最终一致性
  • 重试机制
  • 本地记录日志
  • 可靠事件模式
  • Saga事务模型
  • TCC事务模型
  • 分布式锁
  • 基于数据库实现悲观锁和乐观锁
  • 基于ZooKeeper的分布式锁
  • 基于Redis实现分布式锁
  • 如何保证幂等性
  • 幂等令牌(Idempotency Key)
  • 在数据库中实现幂等性
相关文章
|
XML 前端开发 Cloud Native
Spring Framework 5.3.0正式发布,在云原生路上继续发力(下)
Spring Framework 5.3.0正式发布,在云原生路上继续发力(下)
Spring Framework 5.3.0正式发布,在云原生路上继续发力(下)
|
2月前
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
91 5
|
4月前
|
Kubernetes Cloud Native Java
探索未来编程新纪元:Quarkus带你秒建高性能Kubernetes原生Java应用,云原生时代的技术狂欢!
Quarkus 是专为 Kubernetes 设计的全栈云原生 Java 框架,凭借其轻量级、快速启动及高效执行特性,在 Java 社区脱颖而出。通过编译时优化与原生镜像支持,Quarkus 提升了应用性能,同时保持了 Java 的熟悉度与灵活性。本文将指导你从创建项目、编写 REST 控制器到构建与部署 Kubernetes 原生镜像的全过程,让你快速上手 Quarkus,体验高效开发与部署的乐趣。
102 0
|
存储 关系型数据库 数据库
分布式系统开发实战:CloudNative架构,Cloud Native成功案例分析
有非常多的公司在使用Cloud Native,这些公司包括国外知名企业如Amazon、Netflix等,也包括国内的知名企业淘宝。本节介绍这些企业如何从小企业转变成为Cloud Native的实践者?
|
消息中间件 Cloud Native Java
【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析
【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析
729 1
【深入浅出SpringCloud原理及实战】「SpringCloud-Alibaba系列」微服务模式搭建系统基础架构实战指南及版本规划踩坑分析
|
存储 缓存 网络协议
持续演进的Cloud Native (读书笔记02)
微服务架构并不是什么技术创新,而是开发过程发展到一定阶段对技术架构的要求,是在实践中不断摸索而来的。
持续演进的Cloud Native (读书笔记02)
|
消息中间件 缓存 算法
持续演进的Cloud Native (读书笔记03)
可靠性公式:A=MTBF /(MTBF+MTTR)。其中,MTBF的全称是Mean Time Between Failure,即平均无故障工作时间,指上一次故障恢复后开始正常运行到这次故障的时间平均值。MTTR的全称是Mean Time ToRepair,即平均故障修复时间,是指从出现故障到完全恢复的这段时间。
持续演进的Cloud Native (读书笔记03)
|
运维 监控 UED
持续演进的Cloud Native (读书笔记01)
观察任何一个企业都可以从三个角度出发,这三个角度分别是技术、流程、文化,三个方面都做好才能成为伟大的企业。Cloud Native也一样,需要从架构、研发流程、团队文化三个角度来实现,三者需要相互配合,缺一不可。
持续演进的Cloud Native (读书笔记01)
|
Cloud Native Java API
Spring Framework 5.3.0正式发布,在云原生路上继续发力(上)
Spring Framework 5.3.0正式发布,在云原生路上继续发力(上)
Spring Framework 5.3.0正式发布,在云原生路上继续发力(上)
|
弹性计算 缓存 算法
JVM性能提升50%,聊一聊背后的秘密武器Alibaba Dragonwell
你要知道的关于Alibaba Dragonwell一些重要优化措施。
JVM性能提升50%,聊一聊背后的秘密武器Alibaba Dragonwell