将 CLIPS 专家系统公开为 Web 应用程序的架构选择

oce*_*ord 5 python django web-applications clips python-multithreading

我对开发网络应用程序还比较陌生。

我希望收到您对以下架构考虑因素的意见和改进建议。

我使用 CLIPS 开发了一个专家系统 ES。现在我计划将其作为 Web 应用程序提供给我们公司的各种用户。在开始讨论更多细节之前,我目前正在考虑应该涉及哪些技术。

目标是网络应用程序的用户面对一个类似聊天的动画,引导他或她向 ES 提供越来越多的输入,从而获得最终结果。

经过我自己的一些研究后,我提出了以下想法

在后端我使用 PyCLIPS 作为 Python 和 CLIPS 之间的接口

然后我使用 DJANGO 将我的 python 代码集成到网页中,动态改变用户和 ES 之间的聊天。

有一件事情至今仍然困扰着我:如何管理众多并发用户?我应该使用一个 ES,每个用户都有一组单独的事实,还是每个用户都应该有他或她自己的 ES 实例?

对于这个问题,您还有其他比这个更好的高级方法吗?

我期待您就此事提供经验和意见。

最好的

nox*_*fox 1

将专家系统分成单独的“碎片”通常是个好主意。

它使规则库更加简单(因为您不需要区分事实所指的是哪个用户),并允许您在添加更多用户时水平扩展。

如果每个用户运行一个 ES 听起来有些过分,那么您可以通过基于用户姓氏或 ID 的第一个字母等进行分片来降低粒度。

在设计类似的解决方案时,我倾向于使用排队系统将前端应用程序与 ES 解耦。这允许您修改集群布局,而无需更改公共 API。

| 烧瓶| ---->| 兔子MQ | ---->| ES工人|

如果您想更改分片策略,您可以简单地重新配置代理队列布局,而不会影响客户端/最终用户。