国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何使用 Rust 來(lái)構(gòu)建微服務(wù)?

新聞 前端
Rust 是一門(mén)很棒的語(yǔ)言,也是我在 2019 年和 2020 年(截止當(dāng)前)學(xué)的最多的語(yǔ)言。Rust 幾乎可以和任何語(yǔ)言互操作,同時(shí)對(duì)于容器和在 Kubernetes 上運(yùn)行也非常友好。

 Rust 是一門(mén)很棒的語(yǔ)言,也是我在 2019 年和 2020 年(截止當(dāng)前)學(xué)的最多的語(yǔ)言。Rust 幾乎可以和任何語(yǔ)言互操作,同時(shí)對(duì)于容器和在 Kubernetes 上運(yùn)行也非常友好。

今天,我想展示下如何使用 Rust 構(gòu)建一個(gè)簡(jiǎn)單的微服務(wù)。本文中,我們將使用 Actix、Tokio-Postgress 和其他一些庫(kù),使用 Postgres 作為唯一數(shù)據(jù)源,同時(shí)為了便于開(kāi)發(fā),我們會(huì)將其運(yùn)行在 Docker 容器中。另外,我還會(huì)使用自己開(kāi)發(fā)的 Barrel 作為數(shù)據(jù)庫(kù)遷移工具。代碼將全部使用異步和非阻塞 IO 實(shí)現(xiàn)。

1. 總體架構(gòu)

如何使用 Rust 来构建微服务?

這里我們采用多層架構(gòu),業(yè)務(wù)規(guī)則和 REST 請(qǐng)求定義在 news-contract 中實(shí)現(xiàn)。SOA 約定定義在 news-contract + news-service,數(shù)據(jù)結(jié)構(gòu)(News)定義在 news-contract。REST 請(qǐng)求的 endpoint 和服務(wù)定義在 news-service 中。Postgres 持久化相關(guān)功能定義在 news-dao 中。

2. 代碼結(jié)構(gòu)

如何使用 Rust 来构建微服务?

我們一個(gè)有 5 個(gè)工程,最頂層是一個(gè)全局工作空間,作為第一個(gè)工程。其余工程有:

news-contract:SOA 約定部分,這里定義了其他工程使用的 News 結(jié)構(gòu)體。

news-dao:包含響應(yīng)式持久化代碼,基于 tokio-postgres 實(shí)現(xiàn)對(duì) News 資源的增刪改查操作。

news-migrations:我們使用 barrel 和自定義邏輯來(lái)創(chuàng)建表結(jié)構(gòu)和初始化測(cè)試數(shù)據(jù)。

news-service:這里我們有 endpoint、服務(wù)實(shí)現(xiàn)和包含 actix-web 框架配置的入口代碼。

每個(gè)工程都有自己的依賴,定義在其 Cargo.toml 文件中。

同時(shí),工程中還有 2 個(gè)處理 Docker 容器的腳本,一個(gè)用于運(yùn)行 Postgres,另一個(gè)用于運(yùn)行 psql。

3. 數(shù)據(jù)遷移

現(xiàn)在,讓我們來(lái)看看如何實(shí)現(xiàn)數(shù)據(jù)遷移(在 Postgres SQL 中創(chuàng)建表和插入記錄)。

如何使用 Rust 来构建微服务?

首先,我們需要連接運(yùn)行在 Docker 容器中的 Postgres 數(shù)據(jù)庫(kù),創(chuàng)建一個(gè)向量,向其中添加所有需要運(yùn)行的數(shù)據(jù)遷移邏輯。然后循環(huán)執(zhí)行其中的所有數(shù)據(jù)遷移邏輯,并檢查結(jié)果是否正常。

現(xiàn)在,讓我們看下一段代碼,數(shù)據(jù)遷移邏輯。

如何使用 Rust 来构建微服务?

我創(chuàng)建了一個(gè)名為 NewsMigration 的 trait,其中包含 new 函數(shù)(用于創(chuàng)建結(jié)構(gòu)體)和 run 函數(shù)(用于運(yùn)行數(shù)據(jù)遷移)。如你所見(jiàn),然后創(chuàng)建了 CreateTableNewsMigration 結(jié)構(gòu)體,使用 impl 關(guān)鍵字實(shí)現(xiàn)了這個(gè) trait。這里我使用了 barrel 來(lái)創(chuàng)建表結(jié)構(gòu),barrel 將會(huì)生成 Postgres SQL 的 INSERT 語(yǔ)句。最后,我們使用 pg_client 在 Postres 中運(yùn)行生成的腳本。這段代碼看上去很繞:&news_table[..],這里我們?cè)趥鬟f String 類型 news_table 的引用,將其變成 slice 之后,傳給 pg_client 的 execute 函數(shù)。

4. SOA 約定

首先讓我們來(lái)看下約定的第一部分,News 結(jié)構(gòu)體。

如何使用 Rust 来构建微服务?

我們定義了一個(gè)名為 News 的結(jié)構(gòu)體,同時(shí)使用了 serde 和 serde_json,以便于該結(jié)構(gòu)體的序列化和反序列化。這個(gè)結(jié)構(gòu)體還實(shí)現(xiàn)了 Display trait,用于打印結(jié)構(gòu)體內(nèi)容。最后在文件的末尾有一個(gè)單元測(cè)試,用于測(cè)試結(jié)構(gòu)體的打印。

5. Endpoint 和服務(wù)

如何使用 Rust 来构建微服务?

這里我定義了一個(gè)基于 actix 的 HttpServer,然后定義了一系列處理器:index、list_news、insert_news、get_news_by_id 和 delete_news_by_id。服務(wù)將會(huì)運(yùn)行在本地的 8080 端口上。所有的信息都使用 log 和 env_logger creates 進(jìn)行日志記錄。

現(xiàn)在讓我們來(lái)看下 endpoint.rs,這里有 REST 請(qǐng)求的定義。

如何使用 Rust 来构建微服务?

這里我們使用宏來(lái)定義 REST 操作,例如 PUT、DELETE 和 GET。每個(gè)函數(shù)處理器都定義成公有且非常簡(jiǎn)單,僅僅調(diào)用對(duì)應(yīng)的服務(wù),將返回結(jié)果序列化成 json 結(jié)構(gòu)返回。

如何使用 Rust 来构建微服务?

這是服務(wù)的實(shí)現(xiàn),這里沒(méi)有任何 REST 或者 actix 框架的依賴。這里是實(shí)現(xiàn)校驗(yàn)、業(yè)務(wù)邏輯和代理請(qǐng)求 dao crate 的地方。所有函數(shù)的增刪改查操作都是異步的。

6. DAO

這里是魔法發(fā)生的地方,我們使用了 tokio-postgress 庫(kù)。先來(lái)看下代碼。

如何使用 Rust 来构建微服务?

這是 DAO 層的實(shí)現(xiàn)。這里有一個(gè)名為 connect() 的函數(shù)用于連接 Postgres 數(shù)據(jù)庫(kù),它使用異步非阻塞的方式實(shí)現(xiàn)。然后展示的是如何實(shí)現(xiàn) find_by_id 功能。在 Postgres 中 ID 使用 UUID 來(lái)生成,因此需要將其轉(zhuǎn)成字符串類型,這就是為什么代碼中會(huì)看見(jiàn) id::text=$1。同樣在這一行中,我將從入?yún)@取到的 ID 轉(zhuǎn)換成了 &[&id] 傳入。DAO 層還有很多函數(shù),有興趣的話可以在我的 GitHub 上查看完整代碼。

視頻:代碼走讀和功能演示

https://vimeo.com/384505355

完整代碼

https://github.com/diegopacheco/rust-playground/tree/master/rust-microservice

參考鏈接

http://diego-pacheco.blogspot.com/2020/01/building-microservice-with-rust.html

 

責(zé)任編輯:張燕妮 來(lái)源: 架構(gòu)頭條
相關(guān)推薦

2022-09-05 08:00:00

Java微服務(wù)AuraDB

2021-12-29 08:30:48

微服務(wù)架構(gòu)開(kāi)發(fā)

2018-04-23 14:31:02

微服務(wù)GraphQLBFF

2022-08-22 07:26:32

Node.js微服務(wù)架構(gòu)

2018-09-12 09:00:00

數(shù)據(jù)庫(kù)Redis微服務(wù)

2022-09-12 15:58:50

node.js微服務(wù)Web

2018-07-09 09:27:10

Spring Clou微服務(wù)架構(gòu)

2018-12-03 08:00:00

微服務(wù)gRPC

2023-06-01 15:14:55

架構(gòu)Python微服務(wù)

2021-11-22 09:00:00

后端開(kāi)發(fā)CMS

2023-04-10 07:23:24

軟件微服務(wù)網(wǎng)絡(luò)

2022-10-10 08:00:00

微服務(wù)Spring Boo容器

2023-04-19 07:39:55

RustHTTP服務(wù)器

2024-04-10 09:36:17

Spin開(kāi)源框架

2024-09-13 09:55:38

RustP2P網(wǎng)

2023-12-11 11:56:24

圖片服務(wù)器Rust

2023-04-13 15:04:57

Java微服務(wù)架構(gòu)

2021-07-26 08:10:24

微服務(wù)單體架構(gòu)

2021-10-19 14:02:12

服務(wù)器SpringSecurity

2021-03-29 10:36:52

機(jī)器人業(yè)務(wù)流程管理人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

av免费在线观| av网在线观看| 九九精品在线视频| 午夜精品久久久久久久男人的天堂 | 91香蕉亚洲精品| 久久人人爽人人爽人人片av高请| 国产精品久久久久久久久久免费| 少妇精品久久久久久久久久| 国产毛片久久| 亚洲午夜精品一区二区三区| 91chinesevideo永久地址| 国产精品白嫩初高中害羞小美女| 日韩中文理论片| 伊是香蕉大人久久| 国产欧美亚洲一区| 国产主播性色av福利精品一区| 国产精品人人爽人人爽| 亚洲欧美国产另类| 欧美性高潮在线| 狠狠精品干练久久久无码中文字幕 | 美女黄视频在线播放 | 九色综合日本| 免费成人进口网站| 国产资源在线播放| 黄色亚洲精品| 日韩丝袜美女视频| 成人欧美一区二区三区黑人| 天天操夜夜干| 成人免费高清完整版在线观看| 欧美亚洲国产日本| 水蜜桃一区二区三区| 欧美激情黑人| 久草这里只有精品视频| 亚洲精品国产精品自产a区红杏吧| 久久综合一区| 99久久久国产精品免费调教网站| 91色在线porny| 欧亚精品中文字幕| 在线观看的av| 美女网站一区二区| 久久久久久久久99精品| 九九精品久久| 国产盗摄在线视频网站| 91啪亚洲精品| 日韩三级影视基地| 九色中文视频| 日韩高清电影免费| 免费在线观看麻豆视频 | 亚洲成年人网站在线观看| 91手机在线播放| av在线最新| 99久久精品免费看国产免费软件| 欧美伊久线香蕉线新在线| 亚洲成人三级| 欧美国产乱子伦| 国产精品国模大尺度私拍| 亚洲欧美综合v| 98精品国产自产在线观看| 免费av高清| 国产福利91精品一区二区三区| 亚洲免费成人av电影| 特黄特黄的视频| 久久国产精品亚洲人一区二区三区 | 亚洲伦理久久| 樱桃视频成人在线观看| 一本色道88久久加勒比精品| 欧美亚洲国产精品| 日韩中文视频| 欧美性xxxxxxxx| 日本午夜免费福利视频| av一区二区三区在线| 日韩网站免费观看| 蜜桃91精品入口| 亚洲国产日韩在线| 色综合五月天导航| 自由日本语热亚洲人| 一本久久a久久免费精品不卡| 男人搞女人网站| 亚洲国产视频直播| 亚洲欧洲精品一区二区三区 | 国内免费精品永久在线视频| а√天堂官网中文在线| 亚洲一卡二卡三卡四卡无卡久久| 国产精品少妇在线视频| 91丨porny丨户外露出| 91麻豆精品国产91久久久更新时间| 欧美 日韩 国产在线| 国产精品激情| 久久综合色88| 日韩精品黄色| 精品久久久久久久久久久aⅴ| 欧美日韩一级片网站| 久久综合久久久久| 香蕉精品视频在线观看| 69久久99精品久久久久婷婷 | 久久在线播放| 国产亚洲精品91在线| 91精品国产黑色瑜伽裤| 日韩福利视频在线观看| 91电影在线播放| 亚洲国产成人精品一区二区 | 国产精品亚洲аv天堂网| 国产精品丝袜在线播放| 在线不卡欧美精品一区二区三区| 性欧美18一19内谢| 成人免费看视频| 69av二区| 日韩精品自拍偷拍| 亚洲制服国产| 日韩av中文字幕在线免费观看| 久热精品在线观看视频| 99re热视频精品| 国产精品久久久久久久久久ktv| 欧美美女啪啪| 国产精品久久久久久久久搜平片 | xxxx18hd亚洲hd捆绑| 免费亚洲视频| 国产中文日韩欧美| 色综合天天爱| 开心色怡人综合网站| 99久久99久久综合| 精品www久久久久奶水| 久久久久久久网| 一区二区三区四区五区精品 | 先锋影音网一区| 亚洲高清不卡在线观看| 精品国产欧美日韩一区二区三区| 91亚洲永久免费精品| 成人国产一区二区三区精品| 在线播放网站| 亚洲午夜久久久影院| 久草精品在线| 国产亚洲精品自在久久| 在线观看视频免费一区二区三区| 国产亚洲二区| 国产不卡免费视频| 中文字幕超清在线免费观看| 首页亚洲中字| 久久久另类综合| 国产精品观看在线亚洲人成网| 国产欧美日韩免费观看| 成人免费激情视频| 奇米影视一区二区三区小说| 视频一区视频二区视频三区视频四区国产 | 国产v日韩v欧美v| 97在线视频一区| 久久99精品久久久久久| 国外成人性视频| 搜成人激情视频| av一区二区在线看| 中文无字幕一区二区三区| 超黄网站在线观看| 91免费国产网站| av在线播放成人| 草莓污污视频在线观看| 欧美二区三区的天堂| 日韩高清一区| 美女被啪啪一区二区| 国产亚洲精品精华液| 黄视频在线播放| 久久九九有精品国产23| 91欧美大片| 国产无套内射久久久国产| 91精品国产一区二区三区| 亚洲国产欧美日韩在线观看第一区 | 激情深爱一区二区| 欧洲亚洲视频| 亚洲va国产va天堂va久久| 东京一区二区| 国产超碰91| 26uuu久久天堂性欧美| 成人免费网站观看| 成人精品久久久| 久久久国产一区二区三区四区小说 | 日韩美女爱爱视频| 欧美精品国产| 日本毛片在线免费观看| 国产欧美一区二区在线| 日韩亚洲欧美精品| 久久99久国产精品黄毛片色诱| 午夜精彩视频| 亚洲精品一区中文字幕乱码| 久久神马影院| 日本女优天堂99伊人| 久久人91精品久久久久久不卡| 日本视频一区二区三区| 黄色在线免费看| 精品免费国产| 欧美影院午夜播放| 免费欧美网站| 深夜福利成人| 亚洲欧美日本韩国| 日韩av在线免费观看不卡| 国内精品一区视频| 成人精品视频99在线观看免费| 久久精品一区二区三区av| 综合欧美精品| 一区二区三区我不卡| 欧美色窝79yyyycom| 欧美一区网站|