V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
unknowfly
V2EX  ›  Python

消费计算型项目应该如何启动部署

  •  
  •   unknowfly · 2021-04-25 20:51:52 +08:00 · 1451 次点击
    这是一个创建于 1068 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:不断从 kafka 里获取一条一条人像数据(量很大),针对每一条调用算法模块分析得出结果然后存储

    想法:
    1. 简单通过进程池启动多个进程,每个进程做一个消费者
    2. 通过 celery 启动间隔很小的定时任务

    问题:
    1 的问题:怎么监控和守护任务进程
    2 的问题:担心消费速度过慢
    其他问题:有无其他框架或者系统可以推荐
    11 条回复    2021-04-26 16:54:26 +08:00
    ch2
        1
    ch2  
       2021-04-25 20:56:20 +08:00
    1 没问题,你再加一张表来记录每个任务的状态就行了
    v2exblog
        2
    v2exblog  
       2021-04-25 21:09:38 +08:00
    这是个复杂问题,首先算法模块部署到哪儿了?它的吞吐量是多少?会不会成为瓶颈。如果算法模块也在消费者那台机器上,就要考虑算法的资源占用情况了。
    liprais
        3
    liprais  
       2021-04-25 21:27:57 +08:00 via iPhone
    spark flink 都行
    unknowfly
        4
    unknowfly  
    OP
       2021-04-25 21:56:51 +08:00
    @v2exblog 目前的话是代码打包给我了,我是打算消费的同时计算,执行运行一次约 3~400 毫秒
    czfy
        5
    czfy  
       2021-04-26 02:32:12 +08:00
    人像数据是什么?人脸?
    为什么是一条一条过算法?人脸验证?
    akyle
        6
    akyle  
       2021-04-26 09:13:20 +08:00
    为什么不可以先缓存再批量处理?
    unknowfly
        7
    unknowfly  
    OP
       2021-04-26 09:38:19 +08:00
    @czfy
    @akyle
    需求是摄像头里每路过一个人要一秒内给出这个人分析结果
    ebingtel
        8
    ebingtel  
       2021-04-26 13:51:58 +08:00
    多进程+多协程……supervisor 应该够了
    mu666
        9
    mu666  
       2021-04-26 15:05:16 +08:00
    歪楼,楼主用的摄像头能推荐一下吗?是能自动识别人脸上传吗?还是要自己分析是否存在人脸。我之前也想实现类似功能不过用的摄像头不太行,算法也不太行,最后放弃了
    unknowfly
        10
    unknowfly  
    OP
       2021-04-26 15:41:18 +08:00
    @mu666 我们从平台直接订阅数据的,没涉及到硬件
    Alexf4
        11
    Alexf4  
       2021-04-26 16:54:26 +08:00
    跟楼主做过类似的项目,当时是为了实时处理日志的情景。
    1 Kafka 有个消费组的机制,我同一个 topic 有 N 个 parition, 每一个 partition 对应一个 python 进程( supervisor 管理所有的进程)。假如遇到了性能瓶颈就,新增 partition, 新增进程(包括机器)。这种比较简单粗暴
    2 后面优化这种流程,换了 golang 了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5358 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:50 · PVG 13:50 · LAX 22:50 · JFK 01:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.