找回密码
 立即注册

QQ登录

只需一步,快速开始

15725821270 悬赏达人认证 活字格认证

银牌会员

41

主题

687

帖子

2518

积分

银牌会员

积分
2518

微信认证勋章活字格认证圣诞拼拼乐悬赏达人

15725821270 悬赏达人认证 活字格认证
银牌会员   /  发表于:2021-11-8 23:37  /   查看:1928  /  回复:7
100金币
请问各位,有办法在一个服务端命令中实现类似前端命令里面的异步一样的效果么,就是同时调用多个其他的服务端命令?

我目前测试是把多个定时命令执行时间设置成同一时间,但是测下来发现这些命令并不是同时执行的而是逐个执行的。

最佳答案

查看完整内容

这个我来说,可以的,就是实现过程略微复杂。 不知道楼主是否了解redis。redis就是以内存为介质的、高性能key-value数据库,天生为了快速反应而生。楼主这个需求首先可以考虑通过redis来完成。 如果对redis不太了解,可以模拟redis的处理原理,自己写类redis的功能。 简单说: 1.就是建立一个数据库,把你需要执行的命令、开始执行的时间、try/catch/finally规则、数据的来源和出口都写在表里; 2.然后通过其他后端程序定 ...

7 个回复

倒序浏览
最佳答案
最佳答案
一眼望天涯
高级会员   /  发表于:2021-11-8 23:37:12
来自 5#
这个我来说,可以的,就是实现过程略微复杂。

不知道楼主是否了解redis。redis就是以内存为介质的、高性能key-value数据库,天生为了快速反应而生。楼主这个需求首先可以考虑通过redis来完成。

如果对redis不太了解,可以模拟redis的处理原理,自己写类redis的功能。
简单说:
1.就是建立一个数据库,把你需要执行的命令、开始执行的时间、try/catch/finally规则、数据的来源和出口都写在表里;
2.然后通过其他后端程序定时轮询、执行,比如通过活字格的计划任务、python的脚本、c#/java的各种框架等;
3.执行完毕后,对数据库进行复写,已执行的命令可以删除,执行失败的可以重新排队(修改排序id或重新添加到队列)。

这样可以实现楼主要求的“同时执行多个服务端命令”,而且执行时间可以自由定义,还可以支持自定义失败处理方式、记录日志等等功能。

需要注意的是,这种同时执行是有效率上限的。基于sql server、磁盘天生的IO限制、活字格的执行效率,少量任务同步执行的时间差基本可以控制在毫秒内。如果同步执行的任务过多(超过50个甚至更多),那么效率会明显下降,前后任务的时间差会达到秒级。这时候建议上redis,因为redis是基于内存进行处理的,速度是硬盘的几十倍、上百倍,任务之间的时间差是按纳秒计算。

如果感觉有帮助,记得选我为最佳答案哟
回复 使用道具 举报
COLD悬赏达人认证
高级会员   /  发表于:2021-11-9 08:42:40
2#
大佬 你都没办法了 我们更没办法了 至少我没想到
回复 使用道具 举报
15725821270悬赏达人认证 活字格认证
银牌会员   /  发表于:2021-11-9 09:43:54
3#
期待大佬们的解答中~~~~
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-9 09:52:31
4#
大佬能说一下场景不?为啥需要在服务端命令中异步调用?
回复 使用道具 举报
15725821270悬赏达人认证 活字格认证
银牌会员   /  发表于:2021-11-9 10:51:10
6#
David.Zhong 发表于 2021-11-9 09:52
大佬能说一下场景不?为啥需要在服务端命令中异步调用?

就是需要服务器这边同时调用n个调用第三方api的命令来获取数据嘞逐个获取这个效率太低嘞
另外就是前端可以异步调用,为啥服务端这边没这个功能呀……
回复 使用道具 举报
COLD悬赏达人认证
高级会员   /  发表于:2021-11-9 10:51:34
7#
一眼望天涯 发表于 2021-11-9 10:12
这个我来说,可以的,就是实现过程略微复杂。

不知道楼主是否了解redis。redis就是以内存为介质的、高性 ...

确实是没办法的办法
回复 使用道具 举报
David.Zhong讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-9 18:24:58
8#
大佬,建议在产品需求版块中发个帖子哈,我们可以记录一下这个需求~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部