Skip to content

Latest commit

 

History

History
127 lines (88 loc) · 6.75 KB

File metadata and controls

127 lines (88 loc) · 6.75 KB

此次开源线上案例

小程序

为什么选择流量主小程序?

  1. 上线满足开通条件就能看到收益,正反馈及时。
  2. 轻量,不像 App 或者 Web,还需要纠结选哪种技术栈。

为什么选 Rust?

  1. 卓越的性能与零成本抽象

    • Rust 的运行效率与 C/C++ 相当,是系统级编程语言的性能标杆。
    • “零成本抽象”意味着高级的语言特性(如迭代器、闭包)在编译后几乎不会产生额外的运行时开销。
  2. 内存安全性与所有权系统

    • 这是 Rust 最核心、最革命性的优点。通过其独特的所有权借用生命周期概念,在编译阶段就能彻底消除悬垂指针、数据竞争等内存错误。
    • 无需垃圾回收机制,就能保证内存安全,避免了运行时因 GC 导致的性能抖动。
  3. 无畏并发

    • 所有权模型自然延伸到了并发领域。编译器会强制要求并发代码的数据访问是安全的,从而在编译期就杜绝了数据竞争。
    • 使得编写高效且安全的并发程序(如通道通信、锁、原子操作)变得更加容易和可靠。
  4. 强大的类型系统与模式匹配

    • 强大的静态类型系统在编译期能捕获大量错误,提高代码质量。
    • ResultOption 枚举强制开发者处理所有可能成功和失败的情况,避免了空指针异常和未处理的运行时错误。
    • 完备的模式匹配功能,使得复杂数据结构的解构和处理变得非常安全和简洁。
  5. 高效的 C 语言交互与无运行时

    • 拥有极小的运行时,并且无需垃圾回收,使得它与 C 语言的交互(FFI)非常高效且无缝。
    • 可以轻松集成到现有的 C/C++ 项目中,也可以被 C/C++ 代码调用,是理想的系统集成和扩展语言。
  6. 丰富的工具链与现代开发体验

    • Cargo: 内置的包管理器和构建工具,功能强大且易于使用,依赖管理、项目构建、测试运行、文档生成一键完成。
    • Rustfmt: 自动格式化工具,保证代码风格统一。
    • Clippy: 代码 lint 工具,能提供大量改进代码质量和性能的建议。
  7. 活跃的社区与清晰的未来发展

    • 社区非常活跃、友好且乐于助人。
    • 语言的发展通过 RFC 过程进行,透明且有序。每年发布的 Edition 机制在引入新特性的同时,保证了向后的兼容性。
  8. 广泛的应用场景

    • 系统编程: 操作系统、文件系统、浏览器组件(如 Firefox 的 Servo 引擎)。
    • 网络服务: 高性能 Web API、微服务、异步网络编程(得益于强大的 async/await 生态)。
    • 命令行工具: 得益于其高性能和强大的类型系统,可以构建出快速、可靠的 CLI 工具。
    • WebAssembly: 是编译到 WebAssembly 的首选语言之一,用于在浏览器和边缘计算中实现高性能。
    • 嵌入式开发: 凭借其高性能、低资源占用和内存安全,正在成为嵌入式领域的新兴力量。

简单讲就是快!省!

做流量主小程序最重要的是什么?上的小程序多!上的小程序多自然服务器资源消耗也多!一台2c2g的活动主机,用 nodejs 做服务端一台只能部署10来个?并发高了可能2、3个就得添加新服务器。 而 Rust 同样的主机应付这样的流量就很轻松。给出此次开源的流量主小程序 nestjs 和 rust 的对比。

语言 空间占用 内存占用 cpu
nodejs 344M 231M 3.1%
rust 12M 23M 0.5%

数据为腾讯云 2c2g Debian 12 下的真实数据

为什么选 PostgreSQL ?

  1. 高标准兼容性与强大 SQL 支持

    • 高度符合 SQL 标准,支持大多数 SQL:2016 核心功能及众多扩展。
    • 支持复杂的 SQL 查询,包括通用表表达式(CTE)、窗口函数、OVER 子句等。
  2. 丰富的数据类型

    • 除了标准的数值、字符串、日期时间等类型,还内置支持数组、JSON/JSONB、XML、HSTORE(键值对)等。
    • 特别地,JSONB 类型提供了高效的 JSON 数据存储和查询能力,使其在 NoSQL 场景下也表现优异。
  3. 卓越的扩展性

    • 允许用户使用多种编程语言(如 Python, JavaScript, C/C++ 等)编写自定义函数、存储过程和运算符。
    • 拥有庞大的扩展生态系统,例如 PostGIS(地理信息系统)、pgRouting(路径规划)等,极大地扩展了数据库功能。
  4. 强大的数据完整性与并发控制

    • 全面支持 ACID 事务属性,保证数据一致性。
    • 采用多版本并发控制(MVCC)机制,能够在高并发环境下高效处理读写冲突,提高性能。
  5. 卓越的性能与优化能力

    • 支持多种高效的索引类型,包括 B-tree、Hash、GiST、SP-GiST、GIN 和 BRIN,并可自定义索引。
    • 查询优化器非常先进,能够处理复杂的连接和子查询,并支持并行查询以加速大数据量操作。
  6. 可靠性与稳定性

    • 以其强大的稳定性和极低的崩溃率而闻名,适合承载关键业务和 7x24 小时运行的系统。
    • 提供了完善的预写日志(WAL)、复制(主从、级联复制)及时间点恢复(PITR)机制,保障数据安全。
  7. 活跃的开源社区与商业友好许可

    • 采用自由的 PostgreSQL 许可证,允许用户自由使用、修改和分发,无需担心版权问题。
    • 拥有庞大而活跃的开源社区,持续提供更新、补丁和新功能,文档全面且质量高。
  8. 高级功能支持

    • 支持表继承,可用于实现某种形式的表分区。
    • 提供全文搜索功能,内置多种文本搜索配置和词典。
    • 支持逻辑复制和发布/订阅功能,便于实现数据同步和异构系统集成。
  9. 强大的安全性

    • 提供灵活的权限管理系统,支持基于角色的访问控制(RBAC)。
    • 支持列级权限控制、SSL 连接加密、数据加密(如 pgcrypto)以及与外部认证服务的集成。

此次开源涉及到的知识点

  1. Rust 错误处理
  2. Rust 模式匹配
  3. Actix web 路由
  4. Actix web 文件上传
  5. Actix web 数据获取 (Query,Body,FormData)
  6. Jsonwebtoken Token签发和验证
  7. 小程序服务端 access token 获取
  8. 小程序 openid 获取
  9. PostgreSQL 普通查询、插入、更新
  10. PostgreSQL 多表联合查询

联系方式

项目地址

github

公众号

公众号