点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 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相关推荐

  1. 微服务拆分原则之 AKF

    当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点.单实例.单机有哪些问题? 单点故障 容量有限 可支持的连接有限(性能不足) ...... 为了解决这些问题,我们需要对服 ...

  2. 聊聊微服务拆分原则之 AKF

    当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点.单实例.单机有哪些问题? 单点故障 容量有限 可支持的连接有限(性能不足) ...... 为了解决这些问题,我们需要对服 ...

  3. 微服务设计原则之AKF原则

    在设计微服务的时候,我们一般会遵循以下4个原则: 1)AKF拆分原则 2)前后端分离原则 3)无状态服务 4)restful的通信风格 AKF 把系统扩展分为以下三个维度: X 轴:直接水平复制应用进 ...

  4. 微服务拆分,选型与演进

    微服务拆分原则 在微服务拆分中,核心需求在于拆开的微服务之间的联系越少越好,数据交互也是越少越好.因为微服务之间的数据一致性非常难处理,如果一致性方面的问题很少,整体做起来就比较简单了. 微服务架构选 ...

  5. 微服务拆分策略和原则

    目录 微服务拆分目的 单体应用拆分成微服务的时机 拆分时指导原则 拆分的粒度把控 微服务拆分策略 微服务合并 拆分过程中要注意事项 注意:本文参考  微服务拆分策略和原则 - 简书 微服务拆分目的 不 ...

  6. 微服务拆分时机与原则

    微服务拆分 微服务拆分时机 为了快速迭代 高并发场景 可重用 提交代码经常冲突 小功能要积累到大版本才能上线 服务拆分原则 原则一:高内聚和低耦合. 原则二:服务拆分正交性原则 原则三:服务粒度适中. ...

  7. 微服务及微应用拆分原则_七个微服务原则

    微服务及微应用拆分原则 This post defines microservices via seven tenets, reverse-engineered from books, article ...

  8. 现代微服务拆分与设计

    现代微服务拆分与设计 一.AKF扩展立方体 Y轴 X轴 Z轴 二.前后端分离 早期未分离(JSP+Servlet) 半分离 完全分离 三.无状态服务 四.RestFul服务通信 在设计一个微服务的时候 ...

  9. 《微服务实战》微服务设计原则

    微服务设计原则 文章目录 微服务设计原则 设计原则之分层架构 设计原则之统一通信协议 设计原则之单一职责 设计原则之服务拆分 设计原则之前后踹分离 设计原则之版本控制 设计原则之围绕业务构建 设计原则 ...

最新文章

  1. 九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)
  2. 卷积的C语言实现的MFC版本
  3. Wix学习整理(2)——HelloWorld安装添加UI
  4. easyui使用时出现这个Uncaught TypeError: Cannot read property 'combo' of undefined
  5. oracle 日志切换太频繁,关于oracle日志切换的问题
  6. 3. 无重复字符的最长子串 golang
  7. 【算法】剑指 Offer 18. 删除链表的节点
  8. 地税某数据库异常重启和重启后数据库运行缓慢问题的解决过程
  9. 利用高级筛选功能巧妙删除Excel的重复记录
  10. ionic2+angular2中踩的那些坑
  11. 【HDU4312】Meeting point-2(切比雪夫距离和曼哈顿距离的转化+前缀和后缀和去绝对值)
  12. CAD软件下载,打版,服装CAD设计软件
  13. 【学术】CCF推荐的A类、B类、C类中文科技期刊目录
  14. 用c语言编写车牌识别系统,这算干货吗?写点车牌识别系统方案
  15. 怎么设置creative cloud的应用禁止自动更新
  16. error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio“: https://
  17. go import几种用法
  18. SpringBoot替换jar包中引用的jar包(Unable to open nested entry ‘BOOT-INF/lib/**.jar‘. It has been compressed)
  19. 酒仙网IPO被终止:曾拟募资10亿 红杉与东方富海是股东
  20. ncbi-genome-download在NCBI上批量下载基因组

热门文章

  1. 没有处理程序要使用以下任何注释:javax.persistence.PersistenceContext
  2. 续——老机焕发青春——win8 ramos 的本地安装 (涉及vhd差分盘)
  3. 运维脚本 内存管理统计(5)
  4. Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解
  5. 变压器的这些特性,你了解多少?
  6. 多周期时间序列分解算法——MSTL原理
  7. 0914WEB漏洞-二次,加解密,DNS等注入
  8. LabVIEW入门第六天(布尔控件及布尔量)
  9. IAR+DAP/Jlink 下载并调试K60 (详细)
  10. P/NP/NP完全/NP难问题