加入收藏 | 设为首页 | 会员中心 | 我要投稿 广元站长网 (https://www.0839zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

使用 Rust 来构建微服务?

发布时间:2021-03-03 13:06:39 所属栏目:外闻 来源:互联网
导读:我们一个有 5 个工程,最顶层是一个全局工作空间,作为第一个工程。其余工程有: news-contract:SOA 约定部分,这里定义了其他工程使用的 News 结构体。 news-dao:包含响应式持久化代码,基于 tokio-postgres 实现对 News 资源的增删改查操作。 news-migra




我们一个有 5 个工程,最顶层是一个全局工作空间,作为第一个工程。其余工程有:

news-contract:SOA 约定部分,这里定义了其他工程使用的 News 结构体。

news-dao:包含响应式持久化代码,基于 tokio-postgres 实现对 News 资源的增删改查操作。

news-migrations:我们使用 barrel 和自定义逻辑来创建表结构和初始化测试数据。

news-service:这里我们有 endpoint、服务实现和包含 actix-web 框架配置的入口代码。

每个工程都有自己的依赖,定义在其 Cargo.toml 文件中。

同时,工程中还有 2 个处理 Docker 容器的脚本,一个用于运行 Postgres,另一个用于运行 psql。

3. 数据迁移

现在,让我们来看看如何实现数据迁移(在 Postgres SQL 中创建表和插入记录)。我创建了一个名为 NewsMigration 的 trait,其中包含 new 函数(用于创建结构体)和 run 函数(用于运行数据迁移)。如你所见,然后创建了 CreateTableNewsMigration 结构体,使用 impl 关键字实现了这个 trait。这里我使用了 barrel 来创建表结构,barrel 将会生成 Postgres SQL 的 INSERT 语句。最后,我们使用 pg_client 在 Postres 中运行生成的脚本。这段代码看上去很绕:&news_table[..],这里我们在传递 String 类型 news_table 的引用,将其变成 slice 之后,传给 pg_client 的 execute 函数。

 




我们一个有 5 个工程,最顶层是一个全局工作空间,作为第一个工程。其余工程有:

news-contract:SOA 约定部分,这里定义了其他工程使用的 News 结构体。

news-dao:包含响应式持久化代码,基于 tokio-postgres 实现对 News 资源的增删改查操作。

news-migrations:我们使用 barrel 和自定义逻辑来创建表结构和初始化测试数据。

news-service:这里我们有 endpoint、服务实现和包含 actix-web 框架配置的入口代码。

每个工程都有自己的依赖,定义在其 Cargo.toml 文件中。

同时,工程中还有 2 个处理 Docker 容器的脚本,一个用于运行 Postgres,另一个用于运行 psql。

3. 数据迁移

现在,让我们来看看如何实现数据迁移(在 Postgres SQL 中创建表和插入记录)。

(编辑:广元站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读