oce*_*ord 5 python django web-applications clips python-multithreading
我对开发网络应用程序还比较陌生。
我希望收到您对以下架构考虑因素的意见和改进建议。
我使用 CLIPS 开发了一个专家系统 ES。现在我计划将其作为 Web 应用程序提供给我们公司的各种用户。在开始讨论更多细节之前,我目前正在考虑应该涉及哪些技术。
目标是网络应用程序的用户面对一个类似聊天的动画,引导他或她向 ES 提供越来越多的输入,从而获得最终结果。
经过我自己的一些研究后,我提出了以下想法
在后端我使用 PyCLIPS 作为 Python 和 CLIPS 之间的接口
然后我使用 DJANGO 将我的 python 代码集成到网页中,动态改变用户和 ES 之间的聊天。
有一件事情至今仍然困扰着我:如何管理众多并发用户?我应该使用一个 ES,每个用户都有一组单独的事实,还是每个用户都应该有他或她自己的 ES 实例?
对于这个问题,您还有其他比这个更好的高级方法吗?
我期待您就此事提供经验和意见。
最好的
将专家系统分成单独的“碎片”通常是个好主意。
它使规则库更加简单(因为您不需要区分事实所指的是哪个用户),并允许您在添加更多用户时水平扩展。
如果每个用户运行一个 ES 听起来有些过分,那么您可以通过基于用户姓氏或 ID 的第一个字母等进行分片来降低粒度。
在设计类似的解决方案时,我倾向于使用排队系统将前端应用程序与 ES 解耦。这允许您修改集群布局,而无需更改公共 API。
| 烧瓶| ---->| 兔子MQ | ---->| ES工人|
如果您想更改分片策略,您可以简单地重新配置代理队列布局,而不会影响客户端/最终用户。