This is a high concurrency general framework for rapid feature collection and processing.
这是一个对json/csv数据进行快速特征搜集和处理的高并发通用框架。
- 是由于需要大量的数据搜集和处理工作。当数据量过大时,numpy和pandas无论在占用内存还是在操作性能上都无法达到要求。
- 这其中有大量的工作是较为零散的,一次性的工作,但是有很多步骤是高度近似的,如何提高可复用性,同时避免过度冗余,保证高性能,就是当前遇到的主要问题。
-
高度模块化,能够利用该库快速构建,而不是尝试将所有需要构建成一个大的复杂类。(可以考虑元类编程等)
-
高可用,将过程数据适当解耦,当一个部分出现问题,可以只修改一个部分(根据需要,适当解耦成多个进程,这样可以局部修改重启)
-
高并发,实现充分利用多进程,对于目前遇到的需要大内存的,使用redis共享内存,并考虑异步框架。(需要关注redis一致性问题,避免先读后写问题)(测试后发现,直接使用内存还是更快一些,考虑基于C实现一个python的共享内存库)
-
较好的通用性和可复用性,并且对于新实现的代码,使用得当,不会或极少存在冗余。
-
需要减少每个函数,类的复杂度,减少条件判断,在设计之初就完成选择,而不是增加运行代码的逻辑。否则在有新的特殊需求时,很容易不得不修改原先设计的代码,参数变得冗长复杂,或者使得早期工作的代码不可用。
-
需要一个便捷的思路拆分大文件。
-
适当增加一些自动化的能力,如根据实际的内存大小,核心数调整参数。(提供一个"auto"的选项)
-
异常和错误处理功能。
-
数据http查询和获取模块;(异步)
-
文件拆分模块;(异步)
-
数据推送和存储模块;(异步)
-
关键特征处理模块(异步,多进程)(主要用时部分)
待完善。
