drools研究后记
在实际工作中,有关于达标推断的业务逻辑
就是谁谁谁 消费满了多少钱。就返多少钱的优惠券
声明:不是drools不好,仅仅是在我遇到的场景下,不合适,不够好
在使用drools的时候发现有例如以下问题:
1、效率低。这是最严重的问题。实际业务环境,用户数量要几十万。还有非常多业务相关的数据。他们要组合推断。实际情况是,插入working memory的fact数量超过万级,程序就開始hang住,gc日志打开后发现,系统不停的gc,用内存查看工具。发现drools生成了大量的内部对象。甚至有内存泄露的趋势。
这里推測。应该是drools为了实现通用性,会把全部的自己定义的实体。转化为它内部的节点。然后还有相关的一大堆附属。可是做得不够好,所以导致了上面的现象
这简直就是没法用了,时间有限,花大把时间把他源代码搞清楚,再看看有没有留出钩子,或者重写源代码,有这时间,还不如我自己实现达标推断了逻辑了呢,这样效率又能得到保证,运维成本还不高。毕竟关系到用户的钱,不能给算错了,遇到问题须要立即定位问题,万一遇到了一个drools的内部问题,说不定要多耽误事呢
实际自己实现的达标推断过程,在万级以内(就是在drools能承受的范围内)。我自己优化后的算法。要比drools实现快10倍
2、不方便。详细体如今数据insert的过程,为了可以满足drl文件里所描写叙述的数据结构以及他们的关系。必须提前构造相关的数据结构。非常费力。
并且这部分逻辑,写不好的话,也会写成一坨。尽管drl鼓吹的更易读,可是带来的副作用就是,外面的工作量非常大
另外就是数据装载,一般都是从数据库读取数据,这里也没有一些api对这里做支持。它的api很多其它是面向内存对象的,并没有考虑到这点
3、社区支持。
这个是我要吐槽的
说是社区活跃文档多啥啥啥的,太tm扯淡了。有个在线聊天的答疑的,进去喊话,从来没人吱声
文档写的那叫一个烂。就是堆砌,根本没考虑到读者的学习路径
drools研究后记的更多相关文章
- office2010安装不成功提示缺少MSXML 6.10.1129.0?
office2010安装 1. office重装 由于之前重装系统后安装office2010很顺利,这次删除office2010,由于没有删除干净,在程序删除面板中误点删除了其他文件所致,所以在此安装 ...
- 【LabVIEW技巧】LabVIEW中的错误1
前言 前几日,小黑充电学习意外的看到了下面的这个东东. 编程许久竟然没有见过这样子的错误枚举,甚为好奇,问刘大后才知道是Error Ring,为此恶补一下LabVIEW中与错误处理相关的内容. 错误的 ...
- 对一致性Hash算法,Java代码实现的深入研究
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...
- 《C编译器剖析》后记
这本书的序言.后记写的都让我很有感触!mark: 后 记 总有曲终人散时,不知不觉我们已经完成了对UCC 编译器的剖析,一路走来,最深的体会仍然是“纸上得来终觉浅,绝知此事要躬行”.按这个道理,理解U ...
- 简单研究Android View绘制三 布局过程
2015-07-28 17:29:19 这一篇主要看看布局过程 一.布局过程肯定要不可避免的涉及到layout()和onLayout()方法,这两个方法都是定义在View.java中,源码如下: /* ...
- windows 远程桌面研究
最近因为一个监控相关的项目,深入研究了一下 windows 的 远程桌面的相关知识. 1. 如何让关闭了远程桌面连接的用户,对应的 session 立即退出 windows server. 大家使用 ...
- Invoke-WebRequest Invoke-RestMethod 乱码研究
powershell Invoke-WebRequest Invoke-RestMethod 乱码 encoding sharset CharacterSet Invoke-WebRequest和In ...
- Cocos2d-x内存管理研究<二>
http://hi.baidu.com/tzkt623/item/46a26805adf7e938a3332a04 上一篇我们讲了内核是如何将指针加入管理类进行管理.这次我将分析一下内核是如何自动 ...
- Java实现一致性Hash算法深入研究
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中”一致性Hash算法”部分,对于为什么要使用一致性Hash算法和一致性Hash算法的算法原 ...
随机推荐
- 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置
本文提要 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Docker ...
- tf.reduce_mean
tf.reduce_mean reduce_mean( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=N ...
- Python操作SQLAlchemy之连表操作
多对一连表操作 首先有两个知识点: 改变数据输出的方式:可以在表的类中定义一个特殊成员:__repr__,return一个自定义的由字符串拼接的数据连接方式. 数据库中表关系之间除了MySQL中标准的 ...
- whatweb.rb 未完待续
#!/usr/bin/env ruby #表示ruby的执行环境 =begin # ruby中用=begin来表示注释的开始 .$$$ $. .$$$ $. $$$$ $$. .$$$ $$$ .$$ ...
- Android 底部按钮BottomNavigationView + Fragment 的使用(二)
这里来试验BottomNavigationView + Fragment 底部按钮通过点击底部选项,实现中间的Fragment进行页面的切换. 使用BottomNavigationView 控件,实现 ...
- ActiveMQ队列特性:删除不活动的队列(Delete Inactive Destinations)
方法一 通过 ActiveMQ Web 控制台删除. 方法二 通过 Java 代码删除. ActiveMQConnection.destroyDestination(ActiveMQDestinati ...
- Java new Date() bug
往 MongoDB 中 upsert 记录,记录中的一个字段是 Date 类型的,这个字段是我 new Date() 放进去的. 然后落库的时候,发现这个时间比当前时间要晚 1h30min 左右. 我 ...
- 输//ip提示找不到应用程序
输//ip提示找不到应用程序??? (未测试)试试:环境变量的 PATH 中添加 C:\Windows\system32 (未测试)试试:默认程序里----协议关联里:管理ie
- sqlserver查看和解除表死锁
1,查看那个表死锁 select object_name(resource_associated_entity_id) as tableName, request_session_id as pid ...
- linux Nginx服务开机自启
linux Nginx服务开机自启 Nginx 是一个很强大的高性能Web和反向代理服务器.虽然使用命令行可以对nginx进行各种操作,比如启动等,但是还是根据不太方便.下面介绍在linux下安装后, ...