前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次 RPC 项目中的实践

记一次 RPC 项目中的实践

作者头像
用户4945346
发布2023-09-05 19:02:19
980
发布2023-09-05 19:02:19
举报
文章被收录于专栏:pythonista的日常pythonista的日常

背景说明:

在我们项目中有一些比较特殊的需求,需要访问其他服务器上的 bag 包资源信息,本身读取 bag 包就是一个非常耗时的操作,还在不同的机器上,所以就涉及到了远程过程调用,即 RPC ,调用远程函数就像调用本地函数一样,RPC 底层会做好数据的序列化与传输,从而能使我们更轻松地创建分布式应用和服务。

以文件注册为例

涉及到的服务有:

后端 API 服务,业务逻辑处理

任务守护进程,主要是进行新的异步任务扫描检测以及任务状态的更新

代理服务,这个是需要在每台服务器上都要部署

通俗来说就是在每台服务器上都启动了一个代理服务,接收 API 请求,解析出特定的指令操作,操作本服务器上的资源。以文件注册功能为例:

文件注册的核心功能是读取指定机器上的bag包信息,并将bag包文件信息写入到数据库中,这是个比较耗时的任务,实现流程如上图:

A:创建异步任务,将任务处理函数和需要的参数写入到数据库中的任务表

B:运行的守护进程会一直扫描任务表,检查出新的异步任务

C:找到对应的任务处理函数并执行,

D:处理函数中包括了请求代理服务的业务逻辑,会隔段时间请求代理服务等待结果返回,代理服务会将处理完的结果写到指定的json文件中,结果文件增加了 finish 标识

E:处理函数收到返回结果继续执行余下的业务逻辑

F:对于已经完成的异步任务会及时更新任务状态

对于任务表,我们增加了优先级的字段,相同处理函数和相同的任务参数我们视为同一个任务,如果任务正在运行则不会新增相同的任务,只会增加任务的优先级,比较任务重复。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 pythonista的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
API 网关
腾讯云 API 网关(API Gateway)是腾讯云推出的一种 API 托管服务,能提供 API 的完整生命周期管理,包括创建、维护、发布、运行、下线等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档