开源了一个使用自己写的脚本语言实现的进程管理和调度服务 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
monkeyNik

开源了一个使用自己写的脚本语言实现的进程管理和调度服务

  •  
  •   monkeyNik
    Water-Melon Nov 2, 2023 1833 views
    This topic created in 909 days ago, the information mentioned may be changed or developed.

    最近使用 Melang 语言写了一个 supervisor 相似服务Meproc来管理进程。

    Meproc 有如下特性:

    • 使用 HTTP API 管理控制 Meproc 来管理进程
    • 跨平台,支持 UNIX/Linux 、Mac 、Windows 等平台
    • 支持 cron 类定时调度任务
    • 支持简单的任务间依赖关系
    • 无需安装,有 Melang 解释器即可,也有现成的 docker image 直接可用

    使用示范:

    首先启动 Meproc

    melang meproc.m 

    默认监听127.0.0.1:8606

    启动后我们可以启动一个仅执行一次的任务,拉起一组进程去 sleep 5 秒:

    curl -XPUT http://127.1:8606/proc -d '{"name": "sleep1", "cmd": "sleep 5", "type": "once", "replica": 2}' 

    然后再启动一个一次性任务 sleep 5 秒,但这个任务是依赖于上一个任务(sleep1)的。

    curl -v -XPUT http://127.1:8606/proc -d '{"name": "sleep2", "cmd": "sleep 5", "type": "once", "replica": 2, "deps": ["sleep1"]}' 

    我们也可以创建一个 cron 类型的定时任务,每分钟拉起一组进程,让他们 sleep 5 秒:

    curl -v -XPUT http://127.1:8606/proc -d '{"name": "sleep2", "cmd": "sleep 5", "type": "cron", "cron": "* * * * *", "replica": 2}' 

    也可以查询当前运行中的进程有哪些,以及使用 API 下发的任务有哪些:

    curl -v -XGET http://127.1:8606/proc 

    当然也支持停止任务:

    curl -v -XDELETE http://127.1:8606/proc?name=sleep1 

    或者重启某个任务,例如:

    curl -v -XPOST http://127.1:8606/proc?name=sleep2 

    一起看一个完整的示例,我们可以在启动 Meproc 后,执行如下命令:

    curl -v -XPUT http://127.1:8606/proc -d '{"name": "sleep1", "cmd": "sleep 5", "type": "once", "replica": 2}' curl -v -XPUT http://127.1:8606/proc -d '{"name": "sleep2", "cmd": "sleep 5", "type": "once", "replica": 2, "deps": ["sleep1"]}' curl -v -XPUT http://127.1:8606/proc -d '{"name": "sleep3", "cmd": "sleep 5", "type": "once", "replica": 2, "deps": ["sleep1", "sleep2"]}' curl -v -XDELETE http://127.1:8606/proc?name=sleep1 curl -v -XPUT http://127.1:8606/proc -d '{"name": "sleep1", "cmd": "sleep 5", "type": "once", "replica": 2}' curl -v -XPOST http://127.1:8606/proc?name=sleep1 curl -v -XPUT http://127.1:8606/proc -d '{"name": "sleep4", "cmd": "sleep 5", "type": "cron", "cron": "* * * * *", "replica": 2}' 

    随后我们就可以在 Meproc 的终端上看到如下输出:

    11/01/2023 10:28:28 UTC [INFO]: Listen: 127.0.0.1:8606 11/01/2023 10:28:31 UTC [INFO]: Task sleep1 started 11/01/2023 10:28:31 UTC [INFO]: Task sleep1 stopped 11/01/2023 10:28:31 UTC [INFO]: Task sleep2 started 11/01/2023 10:28:32 UTC [INFO]: Task sleep1 started 11/01/2023 10:28:32 UTC [INFO]: Task sleep1stopped 11/01/2023 10:28:32 UTC [INFO]: Task sleep1 started 11/01/2023 10:28:37 UTC [INFO]: Process 1533616 (sleep2:1) exit 11/01/2023 10:28:37 UTC [INFO]: Process 1533615 (sleep2:0) exit 11/01/2023 10:28:37 UTC [INFO]: Process 1533626 (sleep1:1) exit 11/01/2023 10:28:37 UTC [INFO]: Process 1533624 (sleep1:0) exit 11/01/2023 10:28:37 UTC [INFO]: Task sleep3 started 11/01/2023 10:28:42 UTC [INFO]: Process 1533685 (sleep3:0) exit 11/01/2023 10:28:42 UTC [INFO]: Process 1533686 (sleep3:1) exit 11/01/2023 10:28:45 UTC [INFO]: Task sleep4 started 11/01/2023 10:28:50 UTC [INFO]: Process 1533747 (sleep4:0) exit 11/01/2023 10:28:50 UTC [INFO]: Process 1533748 (sleep4:1) exit 11/01/2023 10:30:00 UTC [INFO]: Task sleep4 started 11/01/2023 10:30:05 UTC [INFO]: Process 1534633 (sleep4:0) exit 11/01/2023 10:30:05 UTC [INFO]: Process 1534634 (sleep4:1) exit 11/01/2023 10:30:20 UTC [INFO]: Task sleep4 stopped 11/01/2023 10:30:20 UTC [INFO]: Task sleep4 started 11/01/2023 10:30:25 UTC [INFO]: Process 1534878 (sleep4:0) exit 11/01/2023 10:30:25 UTC [INFO]: Process 1534879 (sleep4:1) exit 11/01/2023 10:30:32 UTC [INFO]: Task sleep4 stopped 11/01/2023 10:30:32 UTC [INFO]: Task sleep4 started 11/01/2023 10:30:37 UTC [INFO]: Process 1534999 (sleep4:0) exit 11/01/2023 10:30:37 UTC [INFO]: Process 1535000 (sleep4:1) exit ... 

    欢迎感兴趣的小伙伴访问 Meproc 的Github 仓库了解更多内容。

    No Comments Yet
    About     Help     Advertise     Blog     API     FAQ     Solana     5392 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 72ms UTC 07:32 PVG 15:32 LAX 00:32 JFK 03:32
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86