首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法可以重用知识库,而不是用无状态知识会话重新插入所有事实?

是否有一种方法可以重用知识库,而不是用无状态知识会话重新插入所有事实?
EN

Stack Overflow用户
提问于 2013-08-18 14:51:27
回答 1查看 1.4K关注 0票数 1

我有一项服务,每分钟接收大约10k条信息,我需要实时处理这些信息。为了处理这些问题,我需要在知识库中找到几千个事实。

最初,我使用了一个有状态的知识会话,在其中加载了这些事实。我会插入一条消息,运行规则,撤回消息,然后重复。这起作用不错,但表演还不够。

我需要这个进程是多线程的,为此我理解我需要无状态会话。我在无状态会话中遇到的问题是,对于我处理的每一条消息,我现在都需要将这几千个事实重新插入到知识库中。

由于大多数运行中唯一改变的事实是新消息,所以我希望自己能有一个初始知识库,加载其他(非消息)事实,每个无状态会话都可以从这些事实开始,然后我只需要将消息本身加载到每个消息中,就像我使用有状态信息时所做的那样。

这个是可能的吗?

我正在使用批处理插入,据我所知,这似乎并没有真正扼杀我的性能,但似乎仍然是错误的,必须重新插入这几千个事实每分钟10k次。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-27 18:03:36

老实说,无状态会话只是封装有状态会话,并从其中删除一些功能(即不能弹出内容)。

插入大量事实通常是一个缓慢的过程。没有机制可以将它们快速加载到新的会话中。插入-评估-撤回解决方案可以相当快,因为他们使你迫使引擎平衡自己与最初的10k事实,所以额外的事实导致最小的重新评估。

多线程并不意味着您需要变成无状态。我建议只创建一个有状态会话池,其中已经插入了初始的10k事实。您只需要一点额外的逻辑,以确保每当这些基本事实中的一个被更改时,您就会更改所有的会话(听起来不像经常发生这种情况)。显然,这将使您的应用程序更加占用内存,但这是一种简单的扩展方法。

你也不会说有状态的会话有多慢。我使用了一个30秒响应时间的Drools应用程序,它在不到一秒钟的时间内提供了数百个响应。我不知道你的DRL编码技巧有多棒,据我所知,这可能只是你需要做一些规则重写。也许这是另一个问题的食物。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18300327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档