kafka 分布式存储测试

主要测试内容:
一、模拟场景:
     1、推送失败:推送失败次数(如3次,超过3次废弃);推送日志,消息报文(改报文),定时任务推送情况;
     2、宕机:A库--B库同步问题,写入宕机,是否强制同步到follower中,ISR列表写入是否完整。
     3、同步数据问题:未同步情况,开关测试,消息队列问题,同步出现的相关问题;

     4、数据丢失:报文受到攻击及报文发生变化,固定推送模式;日志改报文

      5、ISR列表验证:Follower 在 ISR 列表的写入检查是否完整,即Leader 写入成功以外,至少一个 ISR 里的 Follower 也写成功。

二、kafka背景原理:

1、kafka原理:

2、Kafka 分布式存储架构

 Kafka 有一个概念叫做 Partition,就是把一个 Topic 数据集合拆分为多个数据分区,可认为是多个数据分片,每个 Partition 可以在不同的机器上,储存部分数据,即把一个超大的数据集合分布式存储在多台机器上。

如Topic数据集:

user_access_log_topic  用户行为数据  如果每天写入几十 TB 的数据,需要分布式放到多台机器

order_tb_topic  订单表的变更记录

3、高可用架构

Kafka 会选举其中一个 Parititon 副本作为 Leader,然后其他的 Partition 副本是 Follower。只有 Leader Partition 是对外提供读写操作的,Follower Partition 就是从 Leader Partition 同步数据。一旦 Leader Partition 宕机了,就会选举其他的 Follower Partition 作为新的 Leader Partition 对外提供读写服务;

4、写入数据保证不丢失问题

有一条数据是没同步到 Partition0 的 Follower 上去的,然后 Partition0 的 Leader 所在机器宕机了。此时就会选举 Partition0 的 Follower 作为新的 Leader 对外提供服务,然后用户是不是就读不到刚才写入的那条数据了?因为 Partition0 的 Follower 上是没有同步到最新的一条数据的。这个时候就会造成数据丢失的问题。

 ISR 机制:自动给每个 Partition 维护一个 ISR 列表,这个列表里一定会有 Leader,然后还会包含跟 Leader 保持同步的 Follower。也就是说,只要 Leader 的某个 Follower 一直跟他保持数据同步,那么就会存在于 ISR 列表里。但是如果 Follower 因为自身发生一些问题,导致不能及时的从 Leader 同步数据过去,那么这个 Follower 就会被认为是“out-of-sync”,被从 ISR 列表里踢出去。 ISR 是什么,说白了,就是 Kafka 自动维护和监控哪些 Follower 及时的跟上了 Leader 的数据同步。

参数配置保证数据不丢失:每个 Partition 都至少得有 1 个 Follower 在 ISR 列表里,跟上了 Leader 的数据同步。每次写入数据的时候,都要求至少写入 Partition Leader 成功,同时还有至少一个 ISR 里的 Follower 也写入成功,才算这个写入是成功了。如果不满足上述两个条件,那就一直写入失败,让生产系统不停的尝试重试,直到满足上述两个条件,然后才能认为写入成功。按照上述思路去配置相应的参数,才能保证写入 Kafka 的数据不会丢失。

设计要点

第一条,必须要求至少一个 Follower 在 ISR 列表里。

那必须的啊,要是 Leader 没有 Follower 了,或者是 Follower 都没法及时同步 Leader 数据,那么这个事儿肯定就没法弄下去了。

第二条,每次写入数据的时候,要求 Leader 写入成功以外,至少一个 ISR 里的 Follower 也写成功。

大家看下面的图,这个要求就是保证说,每次写数据,必须是 Leader 和 Follower 都写成功了,才能算是写成功,保证一条数据必须有两个以上的副本。这个时候万一 Leader 宕机,就可以切换到那个 Follower 上去,那么 Follower 上是有刚写入的数据的,此时数据就不会丢失了。

其他:

Kafka 的数据丢失问题,涉及到方方面面。譬如生产端的缓存问题,包括消费端的问题,同时 Kafka 自己内部的底层算法和机制也可能导致数据丢失。但是平时写入数据遇到比较大的一个问题,就是 Leader 切换时可能导致数据丢失。所以本文仅仅是针对这个问题说了一下生产环境解决这个问题的方案;

备注:测试部分原创,Kafka原理背景,引用自https://blog.csdn.net/weixin_39657094/article/details/110802319,在此仅记录做为个人测试时使用。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph 存储的学习也就变的刻不容缓。 该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面: 1.     架构的介绍2.     集群的多种部署方式3.     块存储部署,客户端使用及快照、克隆和镜像4.     对象存储的部署及简单使用5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护7.     Ceph 基础知识的介绍,包括集群map,PG和身份验证8.     Ceph 集群的监控

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值