当前位置: 首页 > news >正文

A 股疯了?交易所系统都被买崩了!

大家好,我是鸭鸭。

今天一早就被消息刷屏了。

——什么?大牛市来了?

——什么?券商系统崩了?

——什么?是上交所被买崩了?

图片

今天这一上午,A 股可以说是跌宕起伏。早上A 股三大股指大幅高开。然而正当大家激情买入的时候,上午 10 点,上证指数成交量急剧萎缩 90%以上,指数直接拉成了横线。10:22 左右,更是出现交易异常情况,成交近乎停止。疑似是系统出现故障。直到 11 点半收盘前后,上交所交易才陆续恢复正常。

图片

有业内人士分析,这和目前市场委托量非常大有关,撤单委托可能无法及时收到明确结果,属于正常现象。

最近几天, A 股在利好的刺激下,继续高开走强,重新站上 3000 点,白酒、地产板块甚至迎来 涨停!。所以这是太多人入场买卖导致把证券系统搞崩了?

鸭鸭这算不算是见证了历史?……

为有效优化和解决这类问题,一般交易所和券商系统都会采用分布式架构,以便在高峰期间更灵活地分散请求压力。

道理是相通的,今天我们就以 Kafka 为例来看下高可用性的实现思路。

面试题:Kafka 的高可用性是如何实现的?当 Broker 宕机时,如何保证服务不受影响?

回答重点

Kafka 的高可用性主要通过以下几个关键机制来实现:

1)多副本机制(Replication):Kafka 中的每个分区都有多个副本(Replicas),这些副本分布在不同的 Broker 上。当一个 Broker 宕机时,其他持有该分区副本的 Broker 能够接管工作。

2)Leader-Follower 模式:每个分区有一个 Leader 副本和若干 Follower 副本。生产者和消费者只与 Leader 副本交互,而 Follower 副本则被用来备份数据。当 Leader 副本所在的 Broker 宕机时,一个新的 Leader 会被选举出来。

3)ZooKeeper 协调:Kafka 使用 ZooKeeper 进行分布式协调和元数据管理。当 Broker 宕机时,ZooKeeper 负责通知集群其他部分,并触发 Leader 选举过程。

当某个 Broker 宕机时,Kafka 保证服务不受影响的方式主要体现在以下几个方面:

1)自动选举新 Leader:ZooKeeper 会检测到 Broker 宕机,然后触发新 Leader 的选举过程。新的 Leader 选举出来后,继续对外提供服务。

2)数据冗余:由于存在多个副本,即使一个 Broker 宕机,其他副本仍然可以保证数据的完整性和高可用性。

3)分区再均衡(Rebalance):Kafka 会将宕机 Broker 上的分区自动重新分配到其他可用的 Broker 上,确保整个集群负载均衡。

扩展知识

为了更好地理解 Kafka 的高可用性,以下是一些相关的扩展知识点:

1)ISR(In-Sync Replicas,同步副本集):这是 Kafka 中用于维护高可用性的核心概念。ISR 是指所有与 Leader 副本保持同步的副本集合。只有在 ISR 中的副本才有可能被选为新的 Leader。

2)ACK 确认机制:Kafka 生产者在发送消息时可以指定不同的 ACK 确认机制,包括“0”表示不需要确认,“1”表示只需 Leader 确认,“-1”或“all”表示需要所有 ISR 成员确认。这种机制可以根据业务对延迟和容错的不同要求做出调整。

3)控制器(Controller):集群中会有一个指定的 Broker 作为控制器,负责管理分区的 Leader 选举和分区状态变更。控制器也是通过 ZooKeeper 选举出来的,如果控制器宕机,会由 ZooKeeper 选出新的控制器。

4)惰性故障检测:Kafka 采取惰性故障检测机制避免无谓的 Broker 重启操作。当 ZooKeeper 检测到某个 Broker 宕机时,并不会马上重新选举和再平衡,而是等待一段时间以避免因短时间内的小故障导致的频繁重选。

最后

再来推荐下我们的面试刷题网站和小程序:面试鸭 !已经有 8000+ 道面试题目啦,欢迎大家来阅读!

相关文章:

  • IT行业的现状与未来发展趋势
  • 高通平台修改Android 10源码获取root权限
  • Vmware VC登录报错:Vmware报错 HTTP状态 500 - 内部服务器错误
  • 机器学习笔记(李宏毅老师2021/2022课程)【更新中】
  • 安全的价值:构建现代企业的基础
  • Harbor使用
  • TCP编程:从入门到实践
  • 搜索软件 Everything 的安装与使用教程
  • css允许换行,且换行超出后省略号隐藏
  • 图像分割(九)—— Mask Transfiner for High-Quality Instance Segmentation
  • vue3使用provide/inject异步传递爷孙组件数据
  • 来自中国信通院的认可!奥哲与中冶长天携手摘得“鼎新杯”奖
  • 【Gitee自动化测试3】Git的本地使用,连接推送至Gitee上的仓库中
  • 【洛谷】AT_abc178_d [ABC178D] Redistribution 的题解
  • 【Elasticsearch】-实现图片向量相似检索
  • [deviceone开发]-do_Webview的基本示例
  • 【剑指offer】让抽象问题具体化
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • HTTP那些事
  • JavaScript中的对象个人分享
  • JS变量作用域
  • js作用域和this的理解
  • KMP算法及优化
  • MySQL几个简单SQL的优化
  • React+TypeScript入门
  • React的组件模式
  • Tornado学习笔记(1)
  • Vue实战(四)登录/注册页的实现
  • Web设计流程优化:网页效果图设计新思路
  • 阿里云应用高可用服务公测发布
  • 如何在 Tornado 中实现 Middleware
  • 手写一个CommonJS打包工具(一)
  • 数据可视化之 Sankey 桑基图的实现
  • 怎么把视频里的音乐提取出来
  • 怎样选择前端框架
  • kubernetes资源对象--ingress
  • 湖北分布式智能数据采集方法有哪些?
  • #AngularJS#$sce.trustAsResourceUrl
  • #mysql 8.0 踩坑日记
  • ${factoryList }后面有空格不影响
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (3)选择元素——(17)练习(Exercises)
  • (pytorch进阶之路)扩散概率模型
  • (苍穹外卖)day03菜品管理
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计高校学生选课系统
  • (六)激光线扫描-三维重建
  • (算法)硬币问题
  • (一)SvelteKit教程:hello world
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (译) 函数式 JS #1:简介
  • (转)四层和七层负载均衡的区别
  • (转)项目管理杂谈-我所期望的新人
  • .equals()到底是什么意思?