我对开发Web应用程序相对较新。
我希望您就以下架构考虑提出改进意见和建议。
我使用CLIPS开发了专家系统ES。现在我计划将这个提供给我们公司的各种用户作为Web应用程序。在开始详细介绍之前,我正在考虑应该涉及哪些技术。
目标是Web应用程序的用户面对类似聊天的动画,当他或她向ES提供越来越多的输入时,该动画将引导他获得最终结果。
在我自己进行一些研究后,我提出了以下想法
在后端,我使用PyCLIPS作为Python和CLIPS之间的接口
然后我使用DJANGO将我的python代码集成到网页中,动态地改变用户和ES之间的聊天。
有一件事特别让我感到困扰:如何管理很多并发用户?我是否应该使用一个ES,每个用户都有一组个别的事实,或者每个用户都有自己的ES实例?
对于这个可能优于此问题的问题,你有其他任何高级方法吗?
我期待着您对此事的经验和意见。
最佳
答案 0 :(得分:1)
将专家系统拆分为单独的"分片"通常是个好主意。
它使规则库更简单(因为您不需要区分事实所指的用户),并允许您在添加更多用户时水平扩展。
如果每个用户运行一个ES听起来有点过分,您可以根据例如用户姓氏或Id的第一个字母进行分片来降低粒度。
在设计类似的解决方案时,我倾向于使用排队系统将前端应用程序与ES解耦。这允许您修改群集布局,而无需更改公共API。
|烧瓶| ----> | RabbitMQ | ----> | ES工人|
如果您想要更改分片策略,只需重新配置代理队列布局,而不会影响客户端/最终用户。
答案 1 :(得分:1)
我建议以无状态模式运行专家系统。每次用户进行更改时,您都会将网页中的所有数据提交给专家系统,然后检索结果以显示在网页上。如果您有多个用户,那么这样做可以更好地扩展,如果用户想要更改响应,则可以更轻松地实现撤消逻辑。这是一个示例,说明如何使用http://www.clipsrules.net/?q=Downloads/CLIPSCGI处的CGI应用程序执行此操作。