币安面经(2)

ops/2025/1/18 12:09:00/
  1. 自我介绍

  2. 项目介绍 qps 数据量 缓存一致性?

  • qps

    • 使用缓存: 将热点数据缓存在内存中,提高读取效率。

      负载均衡: 使用负载均衡器(如 Nginx)分配请求,避免某一节点过载。

      异步处理: 对非关键性任务进行异步处理,降低主线程压力。

      限流与降级: 设置请求限流策略,防止流量暴增导致系统崩溃。

  • 缓存一致性

    • 缓存更新策略:

      • 主动更新(Write-Through): 数据更新时,同时更新缓存和数据库。
      • 延迟更新(Write-Behind): 数据更新时先写缓存,延迟写数据库。
      • 失效淘汰(Cache Eviction): 定期让缓存数据失效,强制从数据库中读取最新数据。

      分布式锁:

      • 对关键资源加分布式锁(如 Redis 的分布式锁),确保同一时刻只有一个进程能更新缓存。

      双写一致性:

      • 更新时同时写入缓存和数据库,但需要确保两者操作具有事务性。
  1. dubbo 负载均衡有哪几种?如果你来实现这几种怎么做?具体算法
  • Dubbo 的负载均衡策略
    • Random (随机)默认策略,根据权重随机选择一个提供者。
    • RoundRobin (轮询),按照权重设置轮询调用,确保每个服务实例被均匀调用。
    • LeastActive (最少活跃调用数)
    • ConsistentHash (一致性哈希), 同一个请求(如同一个参数值)会始终发往同一个服务实例。
  1. rocketmq和kafka的选型 区别?

    • 选型建议:

      如果系统需要高吞吐量、持久化存储和大数据生态支持,选择 Kafka

      如果系统需要复杂路由、低延迟和可靠消息传递,选择 RabbitMQ

选择 Kafka 的场景

大数据处理: 日志聚合、事件流分析、实时数据管道(如 Spark Streaming)。

高吞吐场景: 每秒需要处理百万级消息。

消息持久化与回放: 需要重放历史消息(如事务重试)。

分布式系统: 构建扩展性高的流处理架构。

选择 RabbitMQ 的场景

微服务通信: 系统间可靠的消息传递与解耦。

任务队列: 异步任务处理,尤其是复杂路由规则的任务分发。

低延迟应用: 需要快速响应的实时系统(如订单处理)。

事务一致性: 对消息可靠性和事务性有严格要求。

  1. kafka吞吐量为什么大?

顺序写入磁盘:降低了 I/O 的开销

零拷贝机制:直接将数据从磁盘传输到网络缓冲区,而无需将数据复制到用户空间

批量处理:减少了每条消息的网络请求和 I/O 次数

分区并行处理:水平扩展机制使得吞吐量随分区数量增加而线性提升

  1. Linux零拷贝讲一下?
  • 传统数据传输流程
  1. 从磁盘读取文件到内核缓冲区:
    • 调用 read(),将数据从磁盘加载到内核缓冲区。
  2. 将数据从内核缓冲区拷贝到用户空间:
    • 操作系统将内核中的数据复制到用户程序的缓冲区。
  3. 将数据从用户缓冲区写入到内核网络缓冲区:
    • 调用 write(),将用户程序缓冲区的数据拷贝到内核中的 Socket 缓冲区。
  4. 从 Socket 缓冲区发送到网卡:
    • 最后,内核将 Socket 缓冲区中的数据传递给网卡,发送到目标设备。
  • 零拷贝的数据传输流程
  1. 从磁盘读取数据到内核缓冲区:

    • 内核直接将数据加载到缓冲区中。
  2. 直接将数据从内核缓冲区发送到网卡:

    • 使用零拷贝技术,数据不需要拷贝到用户空间,而是通过操作系统的机制直接从内核缓冲区传输到网卡。
  3. partition和consumer对应关系

Kafka 中的 partition 和 consumer 的关系主要通过分区分配策略决定。

一个分区只能被一个消费者线程消费,而一个消费者可以消费多个分区。

选择分区数量和消费者数量时,需要根据业务需求和吞吐量合理设计,以实现负载均衡和高效消费。

  1. kafka怎么保证消息不丢失?

  2. 如果副本间同步 突然挂了怎么办?这时候的消息丢失怎么办

  3. 你们分库分表怎么做的?动态扩容怎么做?具体双写逻辑讲一下? 增删改查都说一下?

  4. 线程池核心参数 线程池怎么关闭超过keepalived 的线程?threadlocal 的原理 threadlocalmap的key是什么?

  5. MySQL索引,聚集索引和非聚集索引?具体讲讲叶子节点存储的具体区别?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


http://www.ppmy.cn/ops/151082.html

相关文章

SQLite 3.48.0 发布,有哪些更新?

SQLite 开发团队于 2025 年 1 月 14 日发布了 SQLite 3.48.0 版本,我们来解读一下新版本的改进功能。 EXPLAIN QUERY PLAN SQLite 使用 EXPLAIN QUERY PLAN 命令获取查询语句的执行计划,新版本改进了执行计划输出结果中的覆盖索引优化信息:…

Spring项目 spring-boot-actuators配置(健康检查)

文章目录 **结果展示**actuators (健康监查)1、添加配置2、配置管理 本文介绍了如何安装健康检查,和配置启用健康检查的info和health端点 有问题请私信问题或者评论区, 结果展示 http://127.0.0.1:8080/actuator {"_links…

b站视频(网页加客户端)+本地视频 生成回链

b站视频(网页加客户端)本地视频 生成回链 引言 基于上一篇博客方案 本地视频进度加入笔记根据进度快速锁定视频位置 我想着只有本地的话, 那b站上的视频, 不是每次都得下载下来吗? 如果是一套课程, 直接下载, 然后视频处理成mp3,还好, 如果只是一个视频, 每次这样处理就有点…

网络安全 | 什么是威胁情报?

威胁情报 威胁情报-介绍 威胁情报也称为“网络威胁情报”(CTI),是详细描述针对组织的网络安全威胁的数据。威胁情报可帮助安全团队更加积极主动地采取由数据驱动的有效措施,在网络攻击发生之前就将其消弭于无形。威胁情报可帮助组织更有效地检测和应对…

HttpClient和HttpGet实现音频数据的高效爬取与分析

一、案例背景 假设我们要爬取一个名为“MusicHub”的音乐网站上的热门歌曲音频数据。MusicHub是一个广受欢迎的音乐平台,提供了丰富的歌曲播放和下载服务。我们的目标是获取该网站上热门歌曲的音频文件,并分析其音频特征,以了解当前的音乐流…

二百八十四、Flink——Flink提交任务两种方式(亲测、附截图)

一、目的 在IDEA中开发好项目后,如何在Flink上提交打包的jar包,有两种方式,分别是WEB UI 界面提交和通过命令行来提交 二、WEB UI 界面提交方式 1 在Submit New Job,点击右侧的Add New,上传打包好的jar包 2 点击刚才…

NumPy;NumPy在数据分析中的应用;NumPy与其他库的搭配使用

NumPy;NumPy在数据分析中的应用;NumPy与其他库的搭配使用 NumPy:Python 数据分析的核心工具什么是 NumPy?NumPy 的主要优势 NumPy 在数据分析中的应用1. 数据处理与清洗2. 数学和统计分析3. 数组变换与矩阵运算 NumPy 与其他库的搭…

56_多级缓存实现

1.查询Tomcat 拿到商品id后,本应去缓存中查询商品信息,不过目前我们还未建立Nginx、Redis缓存。因此,这里我们先根据商品id去Tomcat查询商品信息。此时商品查询功能的架构如下图所示。 需要注意的是,我们的OpenResty是在虚拟机,Tomcat是在macOS系统(或Windows系统)上,…