微服务拆分原则之AKF
点击上方“芋道源码”,选择“设为星标”
管她前浪,还是后浪?
能浪的浪,才是好浪!
每天 10:33 更新文章,每天掉亿点点头发...
源码精品专栏
原创 | Java 2021 超神之路,很肝~
中文详细注释的开源项目
RPC 框架 Dubbo 源码解析
网络应用框架 Netty 源码解析
消息中间件 RocketMQ 源码解析
数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
作业调度中间件 Elastic-Job 源码解析
分布式事务中间件 TCC-Transaction 源码解析
Eureka 和 Hystrix 源码解析
Java 并发源码
来源:www.cnblogs.com/
Courage129/p/14344151.html
微服务拆分原则之AKF
X轴拆分
Y轴拆分
Z轴拆分
AFK总结
当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点、单实例、单机有哪些问题?
单点故障
容量有限
可支持的连接有限(性能不足)
......
为了解决这些问题,我们需要对服务器进行集群,一变多,具体怎们扩充服务器呢?
这儿引入一个概念,微服务设计原则之一——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轴拆分:基于数据拆分。
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:
已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
微服务拆分原则之AKF相关推荐
- 微服务拆分原则之 AKF
当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点.单实例.单机有哪些问题? 单点故障 容量有限 可支持的连接有限(性能不足) ...... 为了解决这些问题,我们需要对服 ...
- 聊聊微服务拆分原则之 AKF
当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点.单实例.单机有哪些问题? 单点故障 容量有限 可支持的连接有限(性能不足) ...... 为了解决这些问题,我们需要对服 ...
- 微服务设计原则之AKF原则
在设计微服务的时候,我们一般会遵循以下4个原则: 1)AKF拆分原则 2)前后端分离原则 3)无状态服务 4)restful的通信风格 AKF 把系统扩展分为以下三个维度: X 轴:直接水平复制应用进 ...
- 微服务拆分,选型与演进
微服务拆分原则 在微服务拆分中,核心需求在于拆开的微服务之间的联系越少越好,数据交互也是越少越好.因为微服务之间的数据一致性非常难处理,如果一致性方面的问题很少,整体做起来就比较简单了. 微服务架构选 ...
- 微服务拆分策略和原则
目录 微服务拆分目的 单体应用拆分成微服务的时机 拆分时指导原则 拆分的粒度把控 微服务拆分策略 微服务合并 拆分过程中要注意事项 注意:本文参考 微服务拆分策略和原则 - 简书 微服务拆分目的 不 ...
- 微服务拆分时机与原则
微服务拆分 微服务拆分时机 为了快速迭代 高并发场景 可重用 提交代码经常冲突 小功能要积累到大版本才能上线 服务拆分原则 原则一:高内聚和低耦合. 原则二:服务拆分正交性原则 原则三:服务粒度适中. ...
- 微服务及微应用拆分原则_七个微服务原则
微服务及微应用拆分原则 This post defines microservices via seven tenets, reverse-engineered from books, article ...
- 现代微服务拆分与设计
现代微服务拆分与设计 一.AKF扩展立方体 Y轴 X轴 Z轴 二.前后端分离 早期未分离(JSP+Servlet) 半分离 完全分离 三.无状态服务 四.RestFul服务通信 在设计一个微服务的时候 ...
- 《微服务实战》微服务设计原则
微服务设计原则 文章目录 微服务设计原则 设计原则之分层架构 设计原则之统一通信协议 设计原则之单一职责 设计原则之服务拆分 设计原则之前后踹分离 设计原则之版本控制 设计原则之围绕业务构建 设计原则 ...
最新文章
- 九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)
- 卷积的C语言实现的MFC版本
- Wix学习整理(2)——HelloWorld安装添加UI
- easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
- oracle 日志切换太频繁,关于oracle日志切换的问题
- 3. 无重复字符的最长子串 golang
- 【算法】剑指 Offer 18. 删除链表的节点
- 地税某数据库异常重启和重启后数据库运行缓慢问题的解决过程
- 利用高级筛选功能巧妙删除Excel的重复记录
- ionic2+angular2中踩的那些坑
- 【HDU4312】Meeting point-2(切比雪夫距离和曼哈顿距离的转化+前缀和后缀和去绝对值)
- CAD软件下载,打版,服装CAD设计软件
- 【学术】CCF推荐的A类、B类、C类中文科技期刊目录
- 用c语言编写车牌识别系统,这算干货吗?写点车牌识别系统方案
- 怎么设置creative cloud的应用禁止自动更新
- error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio“: https://
- go import几种用法
- SpringBoot替换jar包中引用的jar包(Unable to open nested entry ‘BOOT-INF/lib/**.jar‘. It has been compressed)
- 酒仙网IPO被终止:曾拟募资10亿 红杉与东方富海是股东
- ncbi-genome-download在NCBI上批量下载基因组
热门文章
- 没有处理程序要使用以下任何注释:javax.persistence.PersistenceContext
- 续——老机焕发青春——win8 ramos 的本地安装 (涉及vhd差分盘)
- 运维脚本 内存管理统计(5)
- Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解
- 变压器的这些特性,你了解多少?
- 多周期时间序列分解算法——MSTL原理
- 0914WEB漏洞-二次,加解密,DNS等注入
- LabVIEW入门第六天(布尔控件及布尔量)
- IAR+DAP/Jlink 下载并调试K60 (详细)
- P/NP/NP完全/NP难问题