Kafka宕机引发的高可用问题 ---- 问题要从一次Kafka的宕机开始说起。 从Kafka部署后,系统内部使用的Kafka一直运行稳定,没有出现不可用的情况。 但最近系统测试人员常反馈偶有Kafka消费者收不到消息的情况,登陆管理界面发现三个节点中有一个节点宕机挂掉了。 Kafka 的多副本冗余设计 ---- 不管是传统的基于关系型数据库设计的系统,还是分布式的如zookeeper、redis、Kafka、HDFS等等,实现高可用的办法通常是采用冗余设计,通过冗余来解决节点宕机不可用问题 解决问题 ---- 绕了一大圈,了解了Kafka的高可用机制,终于回到我们一开始的问题本身,Kafka的一个节点宕机后为什么不可用? 所以,只要将Topic副本个数设置为和Broker个数一样,Kafka的多副本冗余设计是可以保证高可用的,不会出现一宕机就不可用的情况(不过需要注意的是Kafka有一个保护策略,当一半以上的节点不可用时
这里所说的某些情况,从严重程度依次为:Kafka 宕机、服务器宕机、机房地震、城市毁灭、地球毁灭。不要觉得树哥在危言耸听,如果你的服务器部署在乌克兰的首都,那是不是就会遭遇城市毁灭的风险了? 在这种情况下,如果 Leader 分片所在服务器发生宕机,那么这些已经发送的数据会丢失。 这时候如果 Kafka 所在服务器断电或宕机,那么消息也是丢失了。而如果只是 Kafka 服务崩溃,那么消息并不会丢失。 如果服务器宕机了,即使我们设置了每来一条消息就写入一次磁盘,那么也有可能在写入 PageCache 后、写入磁盘前这个关键点,服务器发生宕机。 对于大多数的应用,考虑服务器宕机级别的情况下,对于 Kafka 消息来说,只需要考虑如下几个内容即可: 生产者。 根据业务重要性,设置好 acks 参数,并做好业务重试,以及告警记录即可。
为防止 Kafka 集群在生产中出现不稳定的情况,我们决定将自托管的 Kafka 集群迁移到 Confluent Cloud,并将每个数据中心的单集群分割成多个集群。 为什么要云托管 Kafka 集群? 自管理一个 Kafka 集群并非易事,尤其是在执行一些任务时,例如重新平衡 brokers 之间的分区,或者升级 brokers 版本等,这些必须认真规划和实施。 透明的版本升级 Kafka 的代码库不断得到改进,尤其是专注于 KIP-500:元数据将存储在 Kafka 内的分区中,而不是存储在 ZooKeeper,控制器将成为该分区的 leader。 将 2000 个微服务切换到多集群 Kafka 架构 在 Wix,我们拥有一个标准的 JVM 库和代理服务,用于与 Kafka 进行交互,称为 Greyhound。 零宕机迁移 在实时流量中执行迁移,就意味着必须进行细致的规划和实施。
本篇博主带来的是Kafka的Producer API操作。 1. 消息发送流程 Kafka的Producer发送消息采用的是异步发送的方式。 完整代码 package com.buwenbuhuo.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; 群起zookeeper和kafka [bigdata@hadoop002 zookeeper-3.4.10]$ bin/start-allzk.sh [bigdata@hadoop002 kafka] 启动一个consumer控制台 [bigdata@hadoop002 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop002 代码 package com.buwenbuhuo.kafka.producer; import org.apache.kafka.clients.producer.*; import org.apache.kafka.common.serialization.StringSerializer
p=5107 问题要从一次 Kafka 的宕机开始说起。 Kafka 宕机引发的高可用问题 从 Kafka 部署后,系统内部使用的 Kafka 一直运行稳定,没有出现不可用的情况。 但最近系统测试人员常反馈偶有 Kafka 消费者收不到消息的情况,登陆管理界面发现三个节点中有一个节点宕机挂掉了。 Kafka 的多副本冗余设计 不管是传统的基于关系型数据库设计的系统,还是分布式的如 Zookeeper、Redis、Kafka、HDFS 等等,实现高可用的办法通常是采用冗余设计,通过冗余来解决节点宕机不可用问题 解决问题 绕了一大圈,了解了 Kafka 的高可用机制,终于回到我们一开始的问题本身,Kafka 的一个节点宕机后为什么不可用?
4.6 消息分发语义 在了解了生产者和消费者的工作方式之后,我们来讨论Kafka在生产者和消费者之间提供的语义保证。 Kafka的语义很直接。在发布消息时,我们有一个消息被“提交”到日志的概念。一旦提交已经发布的消息,只要把消息复制到分区的broker保持“活动”,它就不会丢失。 从0.11.0.0开始,Kafka还支持幂等传递选项,该选项保证重新发送不会在日志中导致重复条目。
kafka具备的分布式、高吞吐、高可用特性,以及所提供的各种消息消费模式可以保证在一个多节点集群环境里消息被消费的安全性:即防止每条消息遗漏处理或重复消费。 换句话说就是在分布式运算环境里kafka的消息消费是能保证唯一性的。 但是,保证了消息读取唯一性,消息的处理过程如果也放到分布式运算环境里仍然会面对数据完整性(data integrity)问题。 toMat(Sink.fold(0) { (accu, e) => if (e) accu + 1 else accu })(Keep.right) .run() 在上面的例子里,从kafka 这也应该是我们使用kafka的初衷嘛。在分布式环境里上面的这段代码等于是在多个节点上同时运行,同样会产生像多线程并行运算所产生的问题。 case x if (x >= '6' && x <= '8') => occur(2) = occur(2) + 1 case x if (x == '9'
之前在网上看过一篇文章,是讲Tomcat进程意外退出的,我看完感觉好奇,自己也测试了下,果然是有这种问题,所以自己也借此总结一下。
Kafka 高水位(简称 HW)是 Kafka 中非常重要的一个概念,今天来聊一聊 HW。 1 HW 简介 HW 是 Kafka 中 Offset 的一个值,HW 作为一个边界,Offset 小于 HW 的消息被称为已提交消息,这部分消息可以被消费者进行拉取消费,大于等于 HW 的消息被称为未提交消息 2 LEO 简介 Kafka 中跟 Offset 相关的还有一个重要概念叫 LEO(Log End Offset)。 3 HW 更新机制 对于 Kafka 的一个分区来说,分区的所有副本都有 HW 和 LEO 这 2 个重要属性,不光是 Leader 副本。
Kafka 0.9.0版本以后,这些数据维护在kafka的_consumer_offsets这个topic下。 因此,我们可以通过下面的工具脚本将消费者组的位移进行重置: bin/kafka-consumer-groups.sh --bootstrap-server kafka1:9092,kafka2:9092 Kafka消费能力不足 如果是Kafka消费能力不足,可以考虑给Kafka增加Topic的分区数,并同步增加消费者Consumer的实例数,谨记:分区数=消费者数(二者缺一不可)。 例如,下面通过kafka-topics.sh进行某个topic的分区数修改为5个(假设之前只有4个): bin/kafka-topics.sh --bootstrap-server kafka1:9092 ,kafka2:9092,kafka3:9092 --alter --topic test --partitions 5 注意:分区数可以增加,但是不能减少!
之前部署Kafka就必须得部署Zookeeper,而之后就只要单独部署Kafka就行了。 目前Kafka具体如下功能: 消息队列,Kafka具有系统解耦、流量削峰、缓冲、异步通信等消息队列的功能。 实时数据处理,Kafka提供了一些和数据处理相关的组件,比如Kafka Streams、Kafka Connect,具备了实时数据的处理功能。 2.Kafka和Zookeeper关系 Kafka架构如下图: 从图中可以看到,Kafka的工作需要Zookeeper的配合。那他们到底是怎么配合工作呢? ❝这个节点临时节点,一旦broker宕机,这个临时节点会被自动删除。
|grep -v PID|sort -rn -k +4|head image.png 因为是2G的学生机,于是开始杀一些已经用不到的后台和docker ps -ef |grep java kill -9
而在之前一年的2019 年9月,AWS在北弗吉尼亚州的US-EAST-1数据中心遭遇了断电,因而导致没有可用备份来恢复文件的所有亚马逊客户的数据丢失。
停机的时间,如图3所示: 4)对比tomcat停机的时间,查看操作系统的日志/var/log/messages在15:32:28相关日志内容,如图4所示,可以得出以下信息: 5)tomcat宕机 8)我们知道,tomcat在以下两种情况下会触发shutdownhook:(1)代码里面执行了System.exit;(2)tomcat进程接收到了除9以外的会引起退出的信号量;我们对第一种情况进行了代码扫描并逐一的排除 9)基于此,根据断开ssh的session会话的ip地址,定位到相应的操作者,获取到当时执行的操作命令项目,了解到采用seeyonupdate脚本执行启动;以下图示是更新脚本片段;从代码片段来看,在启动进程里面增加了一个 jstack堆栈快照 图7 jstack堆栈快照 图8 ctp.log日志片段 修改与建议 该问题的解决,也能解释之前项目现场其他环境下没有异常日志生成,却出现了tomcat异常宕机的情况
9059917216012421e8e89a4aa02f15b75346d2b7 为master数据库添加了一个监控 发现了2个slave(由此可以看出,哨兵无需配置slave,只需要指定master,哨兵会自动发现slave) 5、从宕机及恢复 20:09:33.509 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ taotaoMaster 127.0.0.1 6379 说明已经监控到slave宕机了 6、主宕机及恢复 哨兵控制台打印出如下信息: 2989:X 05 Jun 20:16:50.300 # +sdown master taotaoMaster 127.0.0.1 6379 说明master 服务已经宕机 2989:X 05 Jun 20:16:50.300 # +odown master taotaoMaster 127.0.0.1 6379 #quorum 1/1 2989:X 05 Jun 20:17:22.463 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ taotaoMaster 127.0.0.1 6381 发现6379已经宕机
苹果天气短暂“宕机”一事影响范围甚广,包括 iOS、watchOS 和 macOS 在内多个 Apple 平台上的天气应用受到影响,不仅国内用户无法在天气应用中查看选定地区的实时天气预报,全球多个地区的用户同样如此 对于苹果天气短暂“宕机”一事,苹果客服回应称没有接到相关反馈,请尝试对设备进行重启或将系统更新至最新版本。 精彩推荐
目录: (1).创建kafka生产集群 (2).msk简单使用 (1).创建kafka生产集群 MSK 是采用的滚动升级的方式 版本升级过程中是可以继续使用的。 cluster/arn%3Aaws%3Akafka%3Aap-northeast-1%3A332170830573%3Acluster%2Fkafka-biz-cluster%2F797f0e7c-aa9c create-topic.html sudo yum install -y java-1.8.0 wget https://archive.apache.org/dist/kafka/2.2.1/kafka _2.12-2.2.1.tgz tar -xzf kafka_2.12-2.2.1.tgz 对msk进行操作要做aws configure认证: 获取kafka相关信息: aws kafka describe-cluster --zookeeper "xxxxxx" --topic test 删除消费组 bin/kafka-consumer-groups.sh --bootstrap-server "kafka实例端口"
社交大佬Facebook最近有点烦,因为在美国当地时间4日清晨,有用户反映,再也无法刷新Facebook诸多社交网站,涉及到全球数十个国家和地区的用户,直到宕机近7个小时后,美国当地时间下午三点,Facebook 当地时间5日,Facebook表示4号一度出现大范围宕机故障的原因,是工程师错误地发出了一条指令,导致了错误的配置更改,切断了FB的数据中心在全球范围内的所有网络连接,但是目前没有证据表明用户数据因宕机而被泄露 external Community: 3303:1004 3303:1006 3303:3075 6453:3000 6453:3400 6453:3402 path 7FE1408ED9C8
Hadoop集群宕机恢复流程 一、NameNode宕机恢复 确认故障状态 检查日志(/var/log/hadoop)确认NameNode进程是否异常终止 验证Active NameNode是否无法响应 locations > fsck_report.txt # 生成块分布报告 hdfs dfsadmin -metasave metasave.log # 保存元数据镜像备份 DataNode宕机恢复 yarn rmadmin -transitionToActive --forcemanual rm2 # YARN资源管理器切换 故障原因通常有: 1)如果MR造成系统宕机。 调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物理内存量,默认是8192MB) 2)如果写入文件过快造成NameNode宕机。 那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。例如,可以调整Flume每批次拉取数据量的大小参数batchsize。
富途证券服务中断,创始人发 2000 字硬核长文解释技术故障 10 月 9 日凌晨,互联网券商富途证券 App 出现故障,用户无法登录进行交易。到了下午,富途证券发布了相关说明并致歉。 2022 年 1 月 4 日上午 9 时,西安“一码通”第二次崩溃。西安市开启新一轮核酸筛查,许多西安网友反应,“西安一码通”系统再次崩溃,无法显示疫情防控码。 今天(10 日)上午 8:31,平台监测到粤康码流量异常增大,最高达每分钟 140 万次,超出承载极限,触发系统保护机制,导致部分用户访问粤康码缓慢或者异常,运行保障团队紧急处置,于 9:04 部分缓解 ,9:56 完全恢复顺畅运行。 ,此次宕机长达近 7 个小时,刷新了 Facebook 自 2008 年以来的最长宕机时长。