聊聊微服务拆分原则之 AKF
当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点、单实例、单机有哪些问题?
单点故障
容量有限
可支持的连接有限(性能不足)
......
为了解决这些问题,我们需要对服务器进行集群,一变多,具体怎们扩充服务器呢?
这儿引入一个概念,微服务设计原则之一——AKF原则
微服务拆分原则之AKF
首先来看单节点的单点故障这个问题,既然单节点容易挂,那么就可以进行复制,一变多,这儿设计到三个概念,主从、主主、主备,也是三种方式,简单来说,主主相当于多台服务器同时对外提供读写:
主从,主机可以读写,但是一般只对外提供写,从机对外提供读:
主备,主机提供读写,备机不对外提供服务,当主机挂了的时候,备机通过选举产生主机对外提供服务。
X轴拆分
可以看到的是,这几种拆分一台机器可以看成另一台机器的镜像,基本具有全量数据,这种拆分模式就是AKF拆分模式之一:X轴拆分
上图就是AKF拆分示意图,为了解决单点故障,所以弄几台全量数据的机器做备份,例如之前说到的主主、主备等,特点是任何两台包含的数据是差不多的,一台可以看成另一台的镜像。
Y轴拆分
这时候又有新的问题,例如一台服务器中,可能某些功能被频繁访问,涉及到的数据频繁读写,其他数据基本不怎么访问,这时候可以将这部分数据独立出来,也就是根据功能、业务继续拆分服务器,这种拆解就是AFK中的Y轴拆分
特点是Y轴纵向来看不同的Redis负责的功能是不同的,也就是所包含的数据也是不同的,另外仅仅扩展出一个Y轴上的业务服务器,又可能会存在单点问题,所以可以结合AFK的X轴拆分原则,继续对刚拆分的Y轴上的点进行X轴拆分。
Z轴拆分
在上面的AFK原则X-Y拆分之后,对服务器显示做了主从主备复制,然后做了业务拆分,不同的Redis负责不同的业务请求,这时候还会有一个新的问题,例如对于Y轴上一个Redis,它负责某一样业务,但是这天这个业务的数据访问巨大,贼大,那就只好对数据请求进行AFK的Z轴拆分,例如先分析下数据请求的情况,然后根据访问来源,分为北京的、上海的,这样不同的Redis虽然是负责不同的数据,但是负责的业务是一样的。AFK拆分图示:
AFK总结
X轴拆分:水平复制,就是讲单体系统多运行几个实例,做集群加负载均衡的模式,主主、主备、主从。
Y轴拆分:基于不同的业务拆分
Z轴拆分:基于数据拆分。
聊聊微服务拆分原则之 AKF相关推荐
- 微服务拆分原则之 AKF
当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点.单实例.单机有哪些问题? 单点故障 容量有限 可支持的连接有限(性能不足) ...... 为了解决这些问题,我们需要对服 ...
- 微服务拆分原则之AKF
点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...
- 微服务设计原则之AKF原则
在设计微服务的时候,我们一般会遵循以下4个原则: 1)AKF拆分原则 2)前后端分离原则 3)无状态服务 4)restful的通信风格 AKF 把系统扩展分为以下三个维度: X 轴:直接水平复制应用进 ...
- 迭代开发中的微服务拆分
微服务拆分是微服务架构绕不过的话题,随着架构演进,在迭代开发中拆分微服务有时非常必要,微服务拆分不仅仅是一项技术层面的重构,首先要选择的合适的时机,另外在拆分前一定要理清业务现状,制定好拆分的基本原则 ...
- 微服务拆分,选型与演进
微服务拆分原则 在微服务拆分中,核心需求在于拆开的微服务之间的联系越少越好,数据交互也是越少越好.因为微服务之间的数据一致性非常难处理,如果一致性方面的问题很少,整体做起来就比较简单了. 微服务架构选 ...
- 微服务拆分策略和原则
目录 微服务拆分目的 单体应用拆分成微服务的时机 拆分时指导原则 拆分的粒度把控 微服务拆分策略 微服务合并 拆分过程中要注意事项 注意:本文参考 微服务拆分策略和原则 - 简书 微服务拆分目的 不 ...
- 微服务拆分时机与原则
微服务拆分 微服务拆分时机 为了快速迭代 高并发场景 可重用 提交代码经常冲突 小功能要积累到大版本才能上线 服务拆分原则 原则一:高内聚和低耦合. 原则二:服务拆分正交性原则 原则三:服务粒度适中. ...
- 微服务及微应用拆分原则_七个微服务原则
微服务及微应用拆分原则 This post defines microservices via seven tenets, reverse-engineered from books, article ...
- 聊聊微服务架构及分布式事务解决方案
转载自 聊聊微服务架构及分布式事务解决方案 分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布 ...
最新文章
- 音频编码标准发展现状
- Spring控制反转(依赖注入)的最简单说明
- C# AutoResetEvent
- php查询字段的总和,ThinkPHP 多表查询-如其字段A相同,则把字段B相加
- 什么叫POE交换机?POE交换机使用方法介绍?
- ActiveMQ 的独占消费模式
- Python3 hex() 函数
- 英伟达推出全新DPU处理器 透露未来三年DPU发展路线图
- 计算机系统安装要点,电脑重新装系统要注意哪些要点 重装系统时的六大事项...
- OSDI 2022 Roller 论文解读
- ubuntu内部错误
- Pyltp的安装使用笔记
- 圣诞节计算机老师贺卡祝福语,祝老师圣诞节快乐贺卡 圣诞祝福语贺卡简短
- ie ajax十分卡,解决JQuery .ajax 在IE下卡死问题
- html5快速制作,html5动画制作(教你如何快速绘制HTML5动画)
- 卡尔曼滤波最完整公式推导
- 成功举办!805个团队参赛~
- realme手机配什么蓝牙耳机?realme蓝牙耳机推荐
- 【luogu P3426】SZA-Template(字符串)(KMP)
- Github加速访问
热门文章
- MyBatis分表分库插件的实现(推荐)
- SpringCloudConfig配置中心Client端加载文件不成功问题
- linux 卸载32位rar,让CentOS能用yum自动安装rar和unrar
- csv和excel php 解析_php读取csv中文
- Altium Designer:AD绘制板边框之任意倒角
- MOS管电路工作原理及详解
- 微信小程序---input 后面加单位
- 计算机模拟在铸造领域的应用,铸造过程计算机模拟研究应用现状与发展
- SQL server数据库关系图
- 酷我音乐盒html代码,【Duilib基础篇】:我是这样开发酷我音乐盒的!