微服务拆分原则之AKF

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

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:www.cnblogs.com/
Courage129/p/14344151.html

1d860ad847a371f51ec090c498058be0.png


当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点、单实例、单机有哪些问题?

  • 单点故障

  • 容量有限

  • 可支持的连接有限(性能不足)

  • ......

为了解决这些问题,我们需要对服务器进行集群,一变多,具体怎们扩充服务器呢?

这儿引入一个概念,微服务设计原则之一——AKF原则

微服务拆分原则之AKF

首先来看单节点的单点故障 这个问题,既然单节点容易挂,那么就可以进行复制,一变多,这儿设计到三个概念,主从、主主、主备,也是三种方式,简单来说,主主相当于多台服务器同时对外提供读写:

714b8292a366ec3b94caf6eaa010ec36.png

主从,主机可以读写,但是一般只对外提供写,从机对外提供读:

86db80398f8458cf4e949fd9f37b1324.png

主备,主机提供读写,备机不对外提供服务,当主机挂了的时候,备机通过选举产生主机对外提供服务。

d54ababc3e6b0bcb397c1fd5e25eafa9.png

X轴拆分

可以看到的是,这几种拆分一台机器可以看成另一台机器的镜像,基本具有全量数据,这种拆分模式就是AKF拆分模式之一:X轴拆分

85d01cdc5864b42b1217e9256d1175d3.png

上图就是AKF拆分示意图,为了解决单点故障,所以弄几台全量数据的机器做备份,例如之前说到的主主、主备等,特点是任何两台包含的数据是差不多的,一台可以看成另一台的镜像。

Y轴拆分

这时候又有新的问题,例如一台服务器中,可能某些功能被频繁访问,涉及到的数据频繁读写,其他数据基本不怎么访问,这时候可以将这部分数据独立出来,也就是根据功能、业务继续拆分服务器,这种拆解就是AFK中的Y轴拆分

特点是Y轴纵向来看不同的Redis负责的功能是不同的,也就是所包含的数据也是不同的,另外仅仅扩展出一个Y轴上的业务服务器,又可能会存在单点问题,所以可以结合AFK的X轴拆分原则,继续对刚拆分的Y轴上的点进行X轴拆分。

915df27a233e4dca1ed06b81b08dda1a.png

Z轴拆分

在上面的AFK原则X-Y拆分之后,对服务器显示做了主从主备复制,然后做了业务拆分,不同的Redis负责不同的业务请求,这时候还会有一个新的问题,例如对于Y轴上一个Redis,它负责某一样业务,但是这天这个业务的数据访问巨大,贼大,那就只好对数据请求进行AFK的Z轴拆分 ,例如先分析下数据请求的情况,然后根据访问来源,分为北京的、上海的,这样不同的Redis虽然是负责不同的数据,但是负责的业务是一样的。AFK拆分图示:

2cd928efdd35590b0f1fdc65b3b8254b.png

AFK总结

X轴拆分:水平复制,就是讲单体系统多运行几个实例,做集群加负载均衡的模式,主主、主备、主从。

Y轴拆分:基于不同的业务拆分

Z轴拆分:基于数据拆分。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

5d018354d948f36b04a4b4f2bd03ed31.png

已在知识星球更新源码解析如下:

46d99b2d440ce52e4b7cea9160e643e7.png

7347d8d478f2984b83d1791c1c75a8e9.png

f6759130b76e12c45a9b9e97915a77c1.png

b0bacf2e6a0ec90eb5f251f0601fa508.png

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 自适应卡尔曼滤波(AKF)是一种优化卡尔曼滤波器的算法。卡尔曼滤波器是一种经典的状态估计算法,用于从一系列不完全或不准确的输入数据中估计目标系统的状态。然而,在实际的应用中,系统参数可能会随时间变化,卡尔曼滤波无法很好地应对这种情况。为了使系统更具适应性,AKF算法引入了可变的卡尔曼滤波参数。 AKF算法的关键是通过适当地选择卡尔曼滤波器的参数来提高估计的准确性。在AKF中,参数更新基于滤波器的不确定性和输入数据的统计特性。AKF可以适应系统模型和测量误差的变化,从而获得更好的估计结果。 AKF的优点包括能够适应不同的系统和测量误差特性,使得滤波器更为稳健和准确。它还可以自适应地调整模型,并且在处理非线性系统时能够提供更好的估计。然而,在应用AKF算法时需要对系统模型和滤波器参数进行仔细的调试。 总之,AKF算法是一种可以优化卡尔曼滤波器的适应性滤波算法。其能够自适应地调整参数以适应不同的系统和测量误差特性,从而提高估计的准确性和稳健性。 ### 回答2: 自适应卡尔曼滤波(Adaptive Kalman Filter, AKF)是一种卡尔曼滤波(Kalman Filter, KF)的变种,也是一种优化滤波方法。与传统卡尔曼滤波不同的是,AKF中的噪声协方差矩阵并不是固定的,而是变化的。AKF通过在线估计噪声协方差矩阵,不断调整卡尔曼滤波器的状态估计和误差协方差矩阵,从而实现更好的滤波效果。 AKF的优点在于它能够适应噪声的变化,使得卡尔曼滤波器更加精确地估计状态量,从而提高系统的准确性和鲁棒性。AKF广泛应用于导航、目标跟踪、机器人控制等领域,特别是在存在噪声较大或噪声难以建模的情况下,AKF的优势更加明显。 需要指出的是,AKF相较于传统卡尔曼滤波,计算量会有所增加。此外,AKF需要对噪声进行估计,因此噪声估计的准确性会直接影响卡尔曼滤波的效果。因此,在使用AKF时,必须充分考虑实际应用场景,以及噪声的具体特性,才能达到最好的效果。 ### 回答3: 自适应卡尔曼滤波(Adaptive Kalman Filter,AKF)是基于卡尔曼滤波算法的一种变种。卡尔曼滤波是一种递归滤波算法,用于估计和预测控制系统中的状态量,通过测量噪声和系统模型的状态方程来优化状态估计。AKF算法主要是为了解决卡尔曼滤波中无法确定噪声模型和参数的问题。 AKF自适应性体现在其可以根据输入数据的动态特性来自适应地调节卡尔曼滤波的噪声参数。其核心思想是根据测量噪声方差与系统动态特性之间的关系来自适应地调节噪声方差,从而提高滤波的性能。AKF算法相对于传统的卡尔曼滤波算法,具有更高的鲁棒性和适应性,并且能够更好地适应非线性系统和非高斯噪声的情况。 AKF算法的应用范围很广,比如在车载导航系统中,通过采用AKF算法可以提高定位和导航的精度,避免因航位漂移等因素导致的误差积累。在机器人导航和控制中,AKF算法也可以用来提高机器人的位置估计和控制精度。总之,AKF算法的出现为一些经典的过滤算法提供了新的思路,能够更好地解决实际问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值