PPIO - Serverless AI 后端 二面 一小时

Q1: 请简单介绍一下自己的情况

实习经历:

  • 百度: 做架构相关和推理优化相关工作,包括模型路由(类似 Gateway)和推理性能优化
  • 腾讯云: 反入侵组,主要做了两个项目:门神防火墙的流能力支持规则库运营平台建设
  • Galxe: 链上相关工作,如交易并行化优化

开源经历: 参与 Apache Seata、Dubbo Admin、Kiwi 等项目,是 Apache Seata 的 Committer

Q2: 腾讯云的实习已经结束了吗?

A: 是的

Q3: 百度是在哪里实习?

A: 北京。

Q4: 你简历上写的路由转发系统能介绍一下吗?

A: 这是腾讯云门神防火墙的规则引擎部分。

系统架构:

  1. 流量从 STGW 网关接入
  2. 经过规则引擎(基于 Hyperscan 进行正则匹配)
  3. 再经过 Smart 引擎(在线小模型智能检测)
  4. 最后下放到具体的节流服务

我做的工作:

  • 流能力支持: 原有 Block 模式需要等待所有 chunk 到达才能匹配,产生额外时延改进为 Stream 模式,利用 Hyperscan 的 Stream 特性设计 Time Window 机制,按 3-5 个 chunk 进行顺序校准和合并实现流式匹配,无需等待完整请求

Q5: 这个项目你具体做了哪些事情?项目组多大?

A:

  • 项目组规模: 8-9 人
  • 我的工作: 负责 Time Window 部分,利用 Hyperscan 已有设施进行兼容性改造,让它能和门神的窗口适配

Q6: 高并发请求转发系统是基于开源的还是自己实现的?

A: 是自己实现的,但这是一个比较简单的设施。

背景:

  • 完成流能力后,发现 2M 以上的流量都没有报到门神
  • 原因是 STGW 设置了 max package size 约 2M
  • 开源组件大多是完整的流量网关,功能过于复杂
  • 我们只需要简单地将 STGW 漏掉的流量接入到防火墙

Q7: 涉及到负载均衡吗?

A: 没有,可以理解为一个流量接入的 Pipeline。

Q8: 做这个事情的难点在哪里?有什么价值点?

A:难点:

  • 不在开发本身(核心代码只有 200-300 行)
  • 在于排查哪一块开始有流量漏报

排查过程:

  1. 发现规则引擎流量出口开始有 2M+ 流量缺失
  2. 逐步用 Mock 模块替换功能模块,只做流量统计
  3. 从引擎出口 → 匹配模块 → 接入 Pad → STGW 逐层排查
  4. 最终确认 STGW 网关出口有缺失
  5. 与网关确认是 max package size 参数配置问题

价值:

  • 短期快速解决方案
  • 单台 SA2(4C8G)机器可达 2400+/分钟吞吐量
  • 每天 2000 万请求,5 台机器即可覆盖

Q9: 了解一致性哈希这个概念吗?

理解:

  • 通过环形结构进行哈希映射
  • 相比普通哈希,优势在于分布式环境下扩缩容时
  • 可以根据扩缩容情况动态调整环上的点
  • 保证哈希映射的正确性

Q10: 百度做的 Tarot 是什么?

A:背景:

  • 大搜下游有多种模型,通过不同方式/框架部署
  • Tarot 是流量接入层,统一请求格式

实现流程:

  1. 通过 NamingService 服务发现,解析获取 IP Port
  2. 根据请求类型(gRPC/Baidu RPC/OpenAI)判断
  3. 通过 Stub 做格式转换和封装成 Model Stub
  4. 交给调度组件做实际转发

我的工作: 主要是安全漏洞相关修复

Q11: 这个漏洞是你找出来的吗?

A: 安全部门定期扫描发现的,通过邮件抄送过来。

Q12: 所以你是修复了安全漏洞?重构配置解析逻辑是什么意思?

A:漏洞原因:

  • 配置传递逻辑问题
  • RouteTable 读取配置后,后续组件依赖这个配置传递
  • 某个逻辑触发时会将配置传给非必经组件,但传递时被 null 掉
  • 导致 NamingService 拿到的 Etcd 健全配置为空

隐蔽性:

  • Etcd V2 和 V3 API 不统一
  • 设置了相同的账号密码
  • V3 开启限权后,用 V2 API 访问依旧不需要认证
  • 所以即使逻辑触发,系统仍能正常运行

修复: 重构配置解析逻辑,规范化配置传递流程

Q13: Etcd 本身了解吗?它是做什么用的?

A:

  • 主要做注册中心
  • 本身是一个分布式 KV 服务

Q14: MVCC 这个概念了解吗?

Q15: MySQL 悲观锁怎么实现?

Q16: 乐观锁怎么实现?

Q17: 对容器 Docker 或 K8s 有接触吗?

Q18: 为什么需要用容器?有什么好处?

Q19: 环境隔离是怎么实现的?

A:

  • 通过 Linux 本身提供的机制
  • Namespace 和 CGroup

Q20: 对分布式事务是怎么理解的?

A:单机事务:

  • 在单节点保证一组操作同时成功或同时失败

分布式事务:

  • 在分布式环境下,跨节点保证事务组内操作同时成功或失败
  • 区别在于大部分情况保证的是最终一致性
  • 外部感知到是同时成功或失败,但中间过程不一定

Q21: 分布式事务实现上比较通用的算法有哪些?

A:

  • 最常用的是两阶段提交(2PC)/TCC
  • 大部分服务会自己定制 2PC
  • 接入 Seata 等框架成本较高

Q22: Seata 对数据源有要求吗?

A:

  • 取决于多 DB 支持情况
  • Java 端进度快,MySQL/PG 等常见 DB 基本都支持
  • Go 端进度慢,目前只有 MySQL 比较完整

Q23: 两阶段提交时,如果第二阶段有节点崩掉了,应该怎么恢复?回滚还是重试?

A:要看场景:

要求稳定性高的场景(如订单、支付):

  • 应该直接失败
  • 如果没有备份节点或升格节点,不应该影响整个事务流程
  • 避免重试影响用户体验

可接受延迟的场景(如后台任务):

  • 可以接受重试
  • 只要保证最终对账正确即可
  • 用户对此无感知

全部评论
带带我
点赞 回复 分享
发布于 今天 18:46 上海
耳目一新的面筋
点赞 回复 分享
发布于 今天 17:13 北京
蹲蹲哪家
点赞 回复 分享
发布于 今天 17:12 广东

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务