AKF扩展立方体和AKF可用性立方体

很多人知道AKF扩展立方体是从《架构即未来》这本书开始。实际上akfpartners官方写过4篇关于AKF扩展立方体的文章,还有一篇介绍AKF可用性立方体。akfpartners官方在高可用、扩展性方面有很多专业技术文章,建议有空就翻翻看。

AKF扩展立方体和AKF可用性立方体都介绍了X轴、Y轴和Z轴。X轴核心是复制,Y轴核心是按业务拆分;Z轴核心是按算法拆分。AKF扩展立方体解决的问题是提供无限扩展性的解决方案;AKF可用性立方体解决的问题是提供无限高可用的解决方案。

AKF扩展立方体

fe2507a90db7c356575bc7553dcbaa05.png

X轴扩展是通过克隆和复制的方法来扩展。对应用来说,复制服务、负载均衡、浏览器存储session、对象缓存都是X轴扩展的例子;对数据库来说,数据库主从读写分离是典型的例子。

Y轴扩展是按业务来拆分,微服务就是一种Y轴扩展方式,DDD为扩展提供方式方法。扩展的大敌是瓶颈。所以微服务系统都要求将不同服务的数据库分开,来增强扩展性。

Z轴扩展是按算法规则扩展。对应用来说,单元化架构就是一种Z轴扩展方式;对数据库来说,分库分表就是一种Z轴扩展方式。

官方对三轴拆分的本质描述有一张图,清楚明白:

6e16e720e03a85d62f8f65b8f278b04d.png

AKF可用性立方体

a29b318842c3a5309d0e814514612d8e.png

AKF可用性立方体

X轴扩展可以大幅提高可用性。假如一个服务本身的可用性是4个9,根据 (总时间-不可用时间)/总时间 的可用性公式,可用性可被提高到下面这么多9:

b0af2d3e003b8ace6d0077c14eaf8d80.png

Y轴扩展对可用性是起副作用的。因为业务拆分之后,模块之间的跨系统交互会增加,增加通信失败的风险。服务、数据扇出和服务、数据熔断是典型的反模式。服务扇出是说一个服务是个中心节点,和很多服务有调用关系;数据扇出是要得到数据需要从多处获取数据,也是一个中心。这样,一旦这个服务发生故障,和其有调用关系的都受到影响,被熔断。这些可以通过额外的处理:限流、降级等进行规避。

Z轴扩展可减小故障辐射半径,提高可用性。这种可用性手段又被称为舱壁模式或者泳道。被称为永不沉没的泰坦尼克,之所以叫永不沉没就是使用了舱壁,使用了16个舱壁,就算4个进水都不会有问题。设计上没有问题,据说是使用外包做了豆腐渣工程,导致了悲剧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/788864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++之结构体初始化10种写法总结(二百六十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

是否有替代U盘,可安全交换的医院文件摆渡方案?

医院内部网络存储着大量的敏感医疗数据,包括患者的个人信息、病历记录、诊断结果等。网络隔离可以有效防止未经授权的访问和数据泄露,确保这些敏感信息的安全。随着法律法规的不断完善,如《网络安全法》、《个人信息保护法》等,医…

[lesson02]C到C++的升级

C到C的升级 C与C的关系 C继承了所有的C特性C在C的基础上提供了更多的语法和特性C的设计目标是运行效率与开发效率的统一 C到C的升级 C更强调语言的实用性 所有的变量都可以在需要使用时再定义 int c 0; for (int i 1; i < 3; i) {for(int j 1; j < 3; j){c i * …

EVM Layer2 主流解决方案

深度解析主流 EVM Layer 2 解决方案&#xff1a;zk Rollups 和 Optimistic Rollups 随着以太坊网络的不断演进和 DeFi 生态系统的迅速增长&#xff0c;以太坊 Layer 2 解决方案日益受到关注。 其中&#xff0c;zk Rollups 和 Optimistic Rollups 作为两种备受瞩目的主流 EVM&…

【AAOS车载系统+AOSP14系统攻城狮入门实战课】:正式上线了(二百零三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

数据如何才能供得出、流得动、用得好、还安全

众所周知&#xff0c;数据要素已经列入基本生产要素&#xff0c;同时成立国家数据局进行工作统筹。目前数据要素如何发挥其价值&#xff0c;全国掀起了一浪一浪的热潮。 随着国外大语言模型的袭来&#xff0c;国内在大语言模型领域的应用也大放异彩&#xff0c;与此同时&#x…

使用docker部署MongoDB数据库

最近由于工作需要搭建MongoDB数据库&#xff1a;将解析的车端采集的数据写入到数据库&#xff0c;由于MongoDB高可用、海量扩展、灵活数据的模型&#xff0c;因此选用MongoDB数据库&#xff1b;由于现公司只有服务器&#xff0c;因此考虑容器化部署MongoDB数据&#xff0c;特此…

db2 使用jdbc建立连接时,指定schema,schema不存在也会连接成功

使用db2想指定schema&#xff0c;使用语句如下 jdbc:db2://" hostname ":" port "/" databaseName ":currentSchema" this.databaseSchema ";"; 切记&#xff1a;最后的分号一定要有&#xff0c;否则报错。 但是此处有…

Android手势密码–设置和校验功能的实现代码

效果图如下&#xff0c;大家感觉不错请参考实现代码 具体代码如下所示&#xff1a; private void setGesturePassword() {toggleMore.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {Overridepublic void onCheckedChanged(CompoundButton button…

【linux】lsof命令使用

1. 功能 lsof list open files, 列出被进程所使用的文件名称。 2. 基础语法 3. 参数含义 参数含义-a过滤出多个选项要同时满足的文件-U仅列出UNIX-like系统的socket文件类型。-u指定用户&#xff0c;比如-u atiaisi&#xff0c;会把用户atiaisi相关的进程使用的文件列出来。…

24/04/02总结

API: bigdecima: 方法名 说明 public static BigDecimal valueof( double val) 静态获取对象 public BigDecimal add(BigDecimal val) 加法 public BigDecimal subtract(BigDecimal val…

【路径规划论文整理(1)】Path Deformation Roadmaps(附带对PRM改进算法、同伦映射的整理)

本系列主要是对精读的一些关于路径搜索论文的整理&#xff0c;包括了论文所拓展的其他一些算法的改进思路。 这是本系列的第一篇文章&#xff1a; Jaillet, Lonard & Simon, Thierry. (2008). Path Deformation Roadmaps: Compact Graphs with Useful Cycles for Motion Pl…

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧

一、params 传参 参数是会拼接到url后面的请求 场景规范:url后面的key值<=3个参数的时候,使用params 传参 支持的请求方式:get(正规的是get方式)、post 都行 例如: http://localhost:8080/simpleParam?name=Tom&age=10 在postman里面的体现为 后端接收的接口…

格式化输出数据

JDK 5 新特性&#xff0c;格式化输出数据 长度不够前面补空格&#xff0c;超出长度按实际输出 System.out.printf(“格式控制部分”,表达式1,表达式2,,表达式n); 格式控制部分由格式符号、普通字符组成&#xff0c;普通字符原样输出&#xff0c;格式符号输出表达式的值 // …

Python+requests+Pytest+logging+allure+pymysql框架详解

一、框架目录结构 1)tools目录用来放公共方法存储,如发送接口以及读取测试数据的方法,响应断言 数据库断言 前置sql等方法;2)datas目录用例存储接口用例的测试数据,我是用excel来存储的数据,文件数据 图片数据等;3)testcases目录用来存放测试用例,一个python文件对应…

Python网络爬虫(一):HTML/CSS/JavaScript介绍

1 HTML语言 1.1 HTML简介 HTML指的是超文本标记语言&#xff1a;HyperText Markup Language&#xff0c;它不是一门编程语言&#xff0c;而是一种标记语言&#xff0c;即一套标记标签。HTML是纯文本类型的语言&#xff0c;使用HTML编写的网页文件也是标准的文本文件&#xff0c…

天盾网络验证源码+视频教程

最新版本为746&#xff0c;企业定制版。现在正在意义上的离线版已出来&#xff0c; 天盾746离线版不需要绑定电脑&#xff0c;提供母端&#xff0c;断网可用&#xff0c;可以理解为它是一款离线版的工具。它没有任何使用限制&#xff0c;和正版唯一的区别就是不需要连接作者服…

789. 数的范围 (二分学习)

题目链接 1.确定一个区间&#xff0c;使得目标值一定在区间中 2.找一个性质满足&#xff1a; &#xff08;1&#xff09;性质具有二段性 &#xff08;2&#xff09;答案是二段性的分界点 3.整数二分&#xff08;处理红色右端点和绿色左端点&#xff09; //代码1&#xff1a;…

Aop实现公共字段自动填充

文章目录 1、问题:2.常规冗余不利于维护操作&#xff1a;3.实现思路&#xff1a; 2、步骤&#xff1a;搭建一个简单的SpringBootMyPlus项目:表结构&#xff1a; 1. 依赖&#xff1a;2. 配置连接信息:3. 创建三层架构&#xff1a;4. 代码开发:4.1 **定义数据库操作类型枚举**4.2…

MySQL之索引详细总结

索引简介 索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用(指向)数据&#xff0c;这样就可以在这些数据结构上实现高级查法&#xff0c;这种数据结构就是索引 为什…