陈天 · Rust 编程第一课
陈天
Tubi TV 研发副总裁
23196 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
基础篇 (21讲)
陈天 · Rust 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

45|阶段实操(8):构建一个简单的KV server-配置/测试/监控/CI/CD

日志文件路径和日志轮转配置
开关和日志级别的配置
触发 CD,包括 dev、staging、beta 和生产环境的部署
每次 push tag 时做 release
通过 jaeger 发现并解决了问题
使用 tracing 工具链和 opentelemetry 生态系统
发现并解决了客户端实现的小 bug
支持模糊测试和基于特性的测试
单元测试、集成测试、性能测试
清晰划分了网络层和业务层
实现了 AsyncRead / AsyncWrite / Stream / Sink 等高阶 trait
使用 trait 和泛型构建复杂的数据结构
下节课见
完成了第45次打卡
如何通过配置记录日志
使用 github action 对 Rust 代码做 CI
完善了 KV server 的配置、日志和性能监测
使用了 Rust 的强大测试工具链
从零构建了一个完整的 KV server
下节课
思考题
CI/CD
日志和性能监测
测试工具链
构建 KV Server
KV Server 系列知识关系脑图

该思维导图由 AI 生成,仅供参考

你好,我是陈天。
终于来到了我们这个 KV server 系列的终章。其实原本 KV server 我只计划了 4 讲,但现在 8 讲似乎都还有些意犹未尽。虽然这是一个“简单”的 KV server,它没有复杂的性能优化 —— 我们只用了一句 unsafe;也没有复杂的生命周期处理 —— 只有零星 'static 标注;更没有支持集群的处理。
然而,如果你能够理解到目前为止的代码,甚至能独立写出这样的代码,那么,你已经具备足够的、能在一线大厂开发的实力了,国内我不是特别清楚,但在北美这边,保守一些地说,300k+ USD 的 package 应该可以轻松拿到。
今天我们就给 KV server 项目收个尾,结合之前梳理的实战中 Rust 项目应该考虑的问题,来聊聊和生产环境有关的一些处理,按开发流程,主要讲五个方面:配置、集成测试、性能测试、测量和监控、CI/CD。

配置

首先在 Cargo.toml 里添加 serdetoml。我们计划使用 toml 做配置文件,serde 用来处理配置的序列化和反序列化:
[dependencies]
...
serde = { version = "1", features = ["derive"] } # 序列化/反序列化
...
toml = "0.5" # toml 支持
...
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了构建简单KV server所需的关键技术和实践方法。作者首先讨论了使用serde和toml处理配置文件的重要性,并展示了如何简化服务端和客户端的创建过程。接着,作者强调了集成测试的必要性,并展示了一个简单的集成测试代码,以确保客户端和服务器的完整交互正常工作。在文章的后半部分,作者介绍了如何进行性能测试,使用criterion库进行基本性能测试,并生成漂亮的报告。通过实际测试,读者可以了解服务器处理publish的速度,并通过性能测试结果进行优化。文章还介绍了如何使用jaeger进行性能监控和测量,以及如何通过修改代码来优化性能。文章内容丰富,对于想要深入了解构建KV server的读者来说,是一篇非常有价值的技术文章。文章还介绍了如何使用github action对Rust代码进行CI,以及如何在每次push tag时进行release。整个系列通过丰富的实例和详细的讲解,为读者提供了构建KV server的全面指南,使读者能够快速掌握关键技术和实践方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《陈天 · Rust 编程第一课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • Rayjun
    老师的工程底子是真的厚,我感觉整个课程下来,学 rust 是其次,更重要的是学到了老师做工程的方法,太棒了

    作者回复: 👍

    2021-12-13
    2
    16
  • 乌龙猹
    这确实是 Rust 编程的第一课 但确是每一个务实程序员的必修课 在做一项工程时,老师的思维方式拆解问题的方法都毫无保留的分享出来 值得我们反复去阅读 反复理解 等什么时候能达到融会贯通 举一反三的时候 那时候就离 300k 的 package 不远了

    作者回复: 加油!

    2021-12-13
    6
  • 吴云阁
    这节课的内容不仅仅是rust编程,更是毫无保留的分享工程方法。老师不仅仅是一个极其优秀的工程师,也是一个极其优秀的教学者。非常值得学习。

    作者回复: 谢谢!

    2021-12-15
    5
  • yyxxccc
    看到300k的pkg,又增加了持续反复啃的动力😂

    作者回复: 加油!

    2021-12-13
    4
  • 罗杰
    实操项目 120 分,我要抽出连续时间好好完成这个项目,该专栏真的值得看十遍。

    作者回复: 谢谢 :)

    2021-12-13
    1
  • 楠楠嘻嘻
    确实厉害!真的是rust in action!

    作者回复: :)

    2021-12-13
  • 进击的Lancelot
    思考题实现:https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=d6037374ea479690681fecf425424cbb
    2022-10-13归属地:广东
    1
  • 啦啦啦啦啦啦啦
    想问下老师在跑 性能测试在 mac下 不会抛出 `Too many open files (os error 24)` 错误吗
    2022-03-20
    2
    1
  • 风吟
    “在有 100 个 subscribers 的情况下,我们的 KV server 每秒钟可以处理 714k publish 请求”。陈老师,这里“714k”中的k怎么算的,不应该是每秒钟可以处理714个请求吗?
    2023-12-28归属地:北京
  • 心看世界
    真的,真的,真的不错,感谢老师的分享。
    2023-03-28归属地:陕西
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部