- 博客(100)
- 资源 (31)
- 收藏
- 关注
原创 规则引擎rule-engine(三)可视化api设计和实现解释
本文介绍了可视化规则设计服务的核心功能与API接口。系统采用拖拽式组件构建规则,支持决策分支、循环控制等结构化组件,以树状元模型组织规则逻辑。设计元素部分详细说明了变量、常量、语句、决策等组件的配置属性。API接口部分提供了完整的规则管理功能,包括规则搜索、组件获取、预览测试、保存发布等操作,支持多事实参数和复杂逻辑测试。所有接口均通过Postman示例展示,实现从规则设计、测试到发布的完整工作流程。
2025-07-17 09:32:51
642
原创 规则引擎rule-engine(二)可视化构建规则设计和实现解释
摘要:本文介绍规则引擎的可视化构建实现方案,重点阐述V2.0版本的可视化规则设计架构。系统采用逻辑元模型(CodeBlock)作为核心,支持组件化规则构建,通过变量、表达式、条件控制和远程调用四类元模型实现对业务规则的抽象。设计采用树状组件链结构,提供拖拽式可视化配置界面,包含变量选择、组件编辑和规则预览等功能模块。规则执行支持本地和分布式两种架构,通过代码生成器将可视化配置转换为JEXL等DSL代码。系统还提供类型系统、决策分支、参数配置等设计元素,实现业务规则与应用程序的解耦管理。(149字)
2025-07-04 12:30:27
1019
原创 规则引擎rule-engine v1.0实现解释(一)-规则,执行,容器
本文介绍了一种基于Common-JEXL的轻量级规则引擎实现方案。该方案将业务逻辑从应用中解耦,采用DSL定义规则,支持动态加载业务类作为执行事实。系统分为规则模型、执行器和执行容器三个核心模块,提供Spring Boot Starter集成方式,支持测试、预览和执行三种运行模式。相比Drools等重型方案,该引擎具有语法简单(类似JS)、使用便捷的特点,并计划通过可视化编辑和预置组件等方式提升规则编写效率。技术架构支持同进程和跨进程两种部署场景,配置上可通过XML或数据库管理规则脚本。
2025-06-12 17:23:33
1118
原创 报表/报告组件(二)-实例与实现解释
本文通过设备检测报告实例,详细介绍了报表/报告组件中指标/属性特性的实现方法。内容包括:1)指标模型设计,支持多字段合并显示、单位设置、参考范围和数值精度控制;2)数据模型构建,包括指标组定义、报告类型关联和实际数据录入;3)多种指标类型的具体实现,如合并显示(如RGB颜色值)、文本段落/表格、数值样式联动、测量数据(带精度和范围验证)、图片、列表(支持多行表格)和图表(如柱状图)等。文中采用MVC架构,通过单元测试演示了数据模型构建过程,并展示了各类指标在实际报告中的输出效果。
2025-06-03 09:22:47
851
原创 CDC增量同步框架与关系/neo4j增量同步设计
数据增量同步是ETL关键功能,在全量同步后,持续增量同步,保证数据的完整,正确和时效,通常有两种方式实现,双写和CDC双写 优点,实现简单, 写入源库同时写入目标库;缺点,代码侵入,影响正常业务CDC 优点,无侵入,读取数据库log,获取数据变更;缺点,复杂,需要引入CDC组件,从数据变更(表/行/字段变更)到目标增量变更(通常是DTO)需要复杂的映射Cdc组件本身通用设计,支持扩展redis,elasticsearch等数据库同步本文包括两部分,cdc组件设计和关系/图增量同步设计。
2025-06-01 13:28:35
954
原创 搜索引擎2.0(based elasticsearch6.8)设计与实现细节(完整版)
全量是有上下边界的大表,分页即分片,而增量是有下届没有上界的表,也可以使用与全量一样的分片,最上面的分片无上界,这里引入另一种方式,hash分片,worker分配取模数,worker获取文件数据,使用设定的字段取模,只处理等于分配的hash的记录,组件使用updateTime取模,这种适用于增量,分片不用改变,而增量的分片一次性,每次运行前重新计算分片上下界。=,like,in,range,prefix,not/and/or,大小括号,点(.)等操作符映射,解决es dsl难使用,难复用的痛点。
2025-06-01 13:27:15
1408
原创 一次页面假死分析
在工单和缺陷管理系统中,页面频繁出现假死现象,经分析发现每次假死都发生在getValidatorJSONInfo调用之后。该调用返回了DOM属性,前端在处理这些属性时可能进入了死循环,导致CPU负载持续升高。建议前端检查getValidatorJSONInfo返回后的逻辑,特别是计算属性是否引用了变量,从而避免渲染死循环。经过前端团队的深入分析,最终确认问题确实源于计算属性内部引用了变量,导致死循环,并已进行修复。
2025-05-18 21:03:52
297
原创 AI-Agent@spring ai概览
本文介绍了Spring AI的组件及其相互关系,涵盖了AI应用场景的技术和行业维度。Spring AI的核心包括抽象模型、推理框架、客户端/模型、向量数据库、RAG、MCP/Toolcalling和多Agent系统(MAS)。推理框架作为算法,支持大模型的有效思考,尽管Spring AI目前未实现推理框架,但未来将展示ReAct等示例。此外,功能组件如可观测性、提示词工程和ETL增强了AI Agent的便利性。Spring AI已接入多种大模型,包括聊天、图像、语音和Embedding模型,并持续快速发展。
2025-05-12 09:13:46
316
原创 报表/报告组件(一)-指标/属性组件设计
报表是数据的呈现,指标组件是其关键部分,用户对检测的数据有执着的要求,数值类型,样式,格式体现数据的专业,报告阅读者快速获得所需的信息,本指标组件实现高度自定义的数值模型,样式和格式,满足用户对专业检测报告的要求。本文解释指标组件设计和实现。
2025-03-23 13:41:56
425
原创 一次cpu飙高排查
有这个方向就容易想到,看一下线程快照,发现又4000多个nacos client线程,问题就明显了,接下来就要找到创建nacos client的地方,nacos client一般集成spring cloud实例,不会出问题,主要是找手动创建的代码。果然,创建了ConfigService,没有关闭,写这个代码的程序员是懂gc,认为服务会回收,但gc不会回收线程,ConfigService内嵌一个worker,打开线程不停刷最新的配置。公司有个系统大概两周左右cpu飙高,访问量不大。
2025-02-19 09:44:13
138
原创 rocketmq原理源码分析之dledger控制器模式-原理分析
RocketMQ 4.5 版本之前,RocketMQ 的broker是 Master/Slave部署架构,一组 broker 有一个 Master ,有0到若干Slave,Slave复制Master消息存储,随时替代下线的Master。Master/Slave部署架构提供一定的高可用性,但这样的部署架构,主节点下线需要手动进行重启或者手动切换,需要一个新的多副本架构,支持自动切换,解决方案基本可以分为两种:rocketmq选择 raft,目前有 dledger和jraft两个实现,本文分析dledger控制
2025-01-26 23:42:51
1053
原创 0代码引擎设计(三)-详细设计
无论哪种模式,从代码物理特性看,逻辑实现是在方法内,通过数据运算,方法调用加工数据,方法调用也是数据运算,”控制”控制运算执行,本质上,逻辑代码实现是业务方法通过控制,运算和数据3要素实现。代码生成分4块,元模型,业务逻辑,持久层和关联对象,其中元模型生成应用服务类,业务对象类,实体类;1 方法上下文 展示方法内可获取的数据,包括全局的常量和变量,传入的参数,数据库读取,远程方法读取的,运算新增方法内临时变量。业务人员构建元模型,包括应用服务,业务对象和实体,业务逻辑,外部服务关联。
2025-01-10 14:22:45
572
原创 企业全文搜索(based onesearch3.0)-搜索权限,非侵入文档同步,权限同步 ,扩展字段
企业全文搜索系统Onesearch升级至Elasticsearch 8后,重点解决了文档权限控制和扩展属性两大核心问题。通过完善的权限模型设计,实现敏感信息保护与搜索体验优化,采用CDC机制同步权限变更。同时利用Elasticsearch的nested类型支持动态扩展属性,通过分布式DataX平台实现全量/增量同步。系统创新性地设计了权限增强搜索服务和可靠通道机制,解决了企业级搜索在权限控制、数据同步可靠性等方面的挑战,并提供通用表达式转换ES DSL的装配映射引擎,显著降低开发复杂度。
2025-01-10 10:12:12
149
原创 0代码引擎(二)-架构设计
业务人员熟悉业务,开发人员熟悉软件开发技术,两者存在鸿沟,需要系统分析员做转换,理解业务,转化为软件设计,再由软件工程师实现,然后测试,最后发布,这是软件工程的整个流程,对于简单的业务,或者客户定制需求,成本过高。0代码引擎填平业务人员和开发人员之间的鸿沟,业务人员通过拖拉拽实现业务代码,代码是生成的,可靠和经验证的,开发人员开发中间件,通用组件和0代码引擎本身,大大减少成本,开发和交付周期。封装在业务对象中,业务对象各施其职,协同互动完成业务,业务对象重用性高,业务变更只影响相关业务对象。
2024-12-18 12:36:34
274
原创 0代码引擎之规则引擎(based drools)(一)-技术要点
5. BRMS 职责类似maven,存储KJAR,支持release, snapshot,支持版本。4. 规则服务 rest/rpc规则执行服务,业务应用使用该服务执行规则,获得结果。2. 项目 描述规则的项目结构;spring boot集成。本文是规则引擎的第一篇,首先介绍规则引擎的技术要点,系列后续文章大纲。6. 规则匹配算法 高效的模式匹配,但不属于本系列的范围,不深入分析。
2024-12-16 22:13:07
296
原创 datax大数据表分片
相比较,datax原生的splitKey大数据分片方案容易出现数据不均匀,可能分片还是超大数据,本方案最大问题需要order by 分片的字段,需要对查询优化order by,min/max,但两者原理相同,利用单调递增字段切分大数据表。
2024-11-20 22:23:41
246
原创 dledger原理源码分析系列(五)-状态机
dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用本系列使用dledger v0.40本文分析dledger的状态机,状态机是应用接入dledger的方式,分析状态机需要借助应用实例,本文使用rocketmq的dledger控制器作为应用实例。Raft状态机。
2024-11-06 00:12:01
703
原创 sentinel原理源码分析系列(八)-熔断
限流为了防止过度使用资源造成系统不稳,熔断是为了识别出”坏”资源,避免好的资源受牵连(雪崩效应),是保证系统稳定性的关键,也是资源有效使用的关键,sentinel熔断插槽名称Degrade(降级),本人觉得应该改为熔断,降级是熔断的补偿措施,因此本文使用"熔断"下图是熔断参与的类互动图,熔断做两件事:一,识别坏资源,设置断开状态;二,适时探测坏资源是否已好,恢复闭合状态上图是参与熔断的类互动图。
2024-10-20 11:52:03
1652
原创 sentinel原理源码分析系列(六)-统计指标
上图展示是一个StatisticNode内的情况,其他的node,clusterNode,DefaultNode都继承StatisticNode,圆形/方形/三角形代表着某类型指标(pass,block等)一次增加数,一段时间多个线程调用资源产生多个的指标增加数,如一个窗口时段内多个图形,时间窗口时段内增加指标数落入时间窗口内,即WindowWrap对象内,限流插槽调用metric获取该时间窗口内所有指标增加值(LongAdder表示),累加在一起。下面以请求通过数代码为例子。上图是统计指标的类互动图。
2024-10-18 20:58:53
605
原创 sentinel原理源码分析系列(七)-限流
限流的目的有两个,一,防止资源过度使用,造成系统不稳;二,大流量有序地通过上图是参与限流的类互动图,首先解释限流规则的设置限流依赖的统计指标,线程数/QPS,统计插槽介绍过,increaseThreadNum/addPassRequest是为了统计这两个指标流控行为决定处理大流量通过的方式,类图展示sentinel实现了多种流控行为,保证不超限依据调用关系限流构建调用链路设置不是单选题,同一个资源可有多个规则,但规则符合约束。
2024-10-17 17:53:18
1256
原创 sentinel原理源码分析系列(五)-构建调用链路
上节分析构建插槽链,Sentinel的资源调用好比一个个连续的检查口,能否通过,检查规则和统计指标,插槽链肩负检查的责任,本章开始分析插槽,首先分析构建调用链路的两个插槽。
2024-10-16 13:11:37
669
原创 sentinel原理源码分析系列(四)-Context&Entry
启动和初始化完成后,调用者调用受保护资源,触发sentinel的机制,首先构建或获取Context和获取Entry,然后进入插槽链,决定调用是否通过,怎样通过上图展示构建Context和获取Entry的类互动图。
2024-10-15 20:19:01
590
原创 sentinel dashboard分布式改造落地设计&实现解释(二)-分布式discovery组件
discovery负责维护app/机器资料库,transport健康检测, transport上下线处理。Discovery关键是分布式存储,后续研究一下raft,其复制,状态机,快照技术,但个人觉得,discovery功能只是作为目录,提供app/resource,支持搜索和规则更改,不需要太严谨和高效的技术保障。上图discovery涉及的znode,discovery监听transport的实例(item)的上下线,维护app/机器,删除对应分片。
2024-10-14 14:16:53
891
原创 sentinel dashboard改造落地设计&实现解释(一)-分布式fetcher和metrics存储/搜索
微服务是目前java主流架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务同学,配置中心等组件,其中,熔断限流主要3个功能特性,限流,熔断,快速失败。Sentinel是阿里开源的熔断限流组件,sentinel dashboard是演示级别,表现在metrics采集是单机版,metrics存储存在内存,不支持分布式,高可用,因此需要改造。此前博文(),介绍分布式改造设计,本系列介绍落地的设计和实现解释。
2024-10-12 15:01:25
944
原创 sentinel dashboard改造落地设计&实现解释(一)-分布式fetcher和metrics存储/搜索
微服务是目前java主流架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务同学,配置中心等组件,其中,熔断限流主要3个功能特性,限流,熔断,快速失败。Sentinel是阿里开源的熔断限流组件,sentinel dashboard是演示级别,表现在metrics采集是单机版,metrics存储存在内存,不支持分布式,高可用,因此需要改造。此前博文(),介绍分布式改造设计,本系列介绍落地的设计和实现解释。
2024-10-12 14:50:45
564
原创 sentinel原理源码分析系列(二)-动态规则和transport
本文是sentinel原理源码分析系列第二篇,介绍两个组件,动态配置和transport。
2024-09-28 15:11:45
843
1
原创 sentinel原理源码分析系列(一)-总述
下图是sentinel的技术技术架构图sentinel技术架构没有比官方的原理图更清楚了,总体看,sentinel是责任链架构模式,分两部分,前部分是请求处理的拓扑构建和数据统计,后部分是规则+数据得出结论,是否放行资源(api/服务方法)调用。
2024-09-28 13:44:38
986
1
原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(五)-聚合
聚合基于Query结果的统计,执行过程是搜索的一部分,Onesearch支持0代码构建聚合,聚合目前完全在引擎层。
2024-09-20 18:34:31
590
原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索
搜索内容比较多,onesearch分成两部分,第一部分,Query构建,其中包括搜索词设置,filter,高亮;第二部分分页和排序。第一部分是映射引擎负责,映射通用表达式为具体引擎的查询(Query)。SearchRequest构建。
2024-09-20 17:47:42
577
原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(三)-文档
更新文档的字段,是想一下文档的状态变更,相应更新搜索引擎状态,只需更新该字段,无需整个文档,包括内容重新获取,elasticsearch部分更新功能需要索引source属性设为true,即保留文档json,该功能也可以用于更新扩展属性。批量操作可以融合增删改不同的操作,但在实际操作一般是同类型,没有混合操作,onesearch api设计为同类型操作批量。文档写入操作与构建单个写入请求类似,支持Map,并可识别nested,很方便。文档服务负责写入,包括批量;Id获取文档,删除,批量删除不介绍。
2024-09-20 17:28:57
329
原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(二)-索引
分词器,通常索引级分词器可满足要求,不需要每个字段设置,字段设置在put mapping,本组就也可以支持字段的分词器设置,在schema设置相关属性。put mapping定义索引字段属性,类似数据库的表,虽然elasticsearch支持schema free,通常严格定义更符合应用要求,保证类型,格式符合要求。pdm文档索引,包括nested,扩展字段,文档属性扩展,其中_content字段是组件保留字段,支持文本内容。索引服务索引的操作,包括构建,put mapping,alias,更新,删除等。
2024-09-20 17:06:22
628
原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(一)-概述
此前的专栏介绍Onesearch1.0和2.0,详情参考4 参考资料,本文解释onesearch 3.0,从Elasticsearch6升级到Elasticsearch8代码实现 ,Elasticsearch8 废弃了high rest client,使用新的ElasticsearchClient,本文重点介绍ElasticsearchClient如何实现onesearch的特性,同时解释onesearch代码实现细节。ElasticsearchClient使用起来3个特点,v1.0 schema管理,0代
2024-09-20 16:47:55
635
1
原创 弹性资源组件集成系列(二)elastic-jobx集成弹性资源设计解释
弹性组件集成有弹性需求的组件,为组件增加高弹性容量,规划集成datax,elastic-job,xxl-job,sentinel dashboard,dolphinscheduer,eventbridgeelastic-job使用zookeeper实现分布式调度,支持分片,容错,但worker节点需预先启动,参与该作业的worker参与分片,节点规模需预先计算,启动相应数量的worker数。
2024-09-01 21:37:09
281
原创 微服务可观测平台总体架构设计
micrometer框架,提供metrics模型,包括metrics类型,counter,gaugegr,timer,histoams等,实现了多种指标输出器,输出多种监控平台,Prometheus在支持列表中。 服务日志: 记录时间(起始/结束),用户,用户地点(ip),服务节点(ip),服务名称,模块名称,参数(可配置),tracingId,支持异步写入,减少服务正常执行影响。 监控门户,统一监控门户,用户自定义视图,告警(页面,钉钉,邮件);
2024-08-30 13:54:33
984
原创 弹性资源组件集成系列(一)datax集成弹性资源设计解释
弹性组件集成有弹性需求的组件,为组件增加高弹性容量,规划集成datax,elastic-job,xxl-job,sentinel dashboard,dolphinscheduer,eventbridgedatax datax基于社区版,此前已对datax进行重构,增加其metrics exporter,分布式特性,分布式模型是基于启动的worker分配,固定的worker数量,如果分片少,浪费资源;分片多,资源不足,只有排队等待。
2024-08-10 14:16:41
174
原创 dledger原理源码分析系列(四)-日志写入和复制
dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用本系列使用dledger v0.40本文分析dledger的日志,包括写入,复制,推进共识
2024-07-10 21:01:35
943
原创 dledger原理源码分析系列(三)-选主
分析raft实现dledger的心跳模块,包括leader发起心跳,节点处理心跳,心跳结果统计,基于统计的下异步处理;心跳是选主的源
2024-06-30 08:34:50
782
原创 dledger原理源码分析系列(二)-心跳
分析raft实现dledger的心跳模块,包括leader发起心跳,节点处理心跳,心跳结果统计,基于统计的下异步处理;心跳是选主的源,下一篇文章分析选主
2024-06-29 12:04:11
737
原创 dledger原理源码分析系列(一)-架构,核心组件和rpc组件
dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用本系列使用dledger v0.40本文分析dledger的架构,核心组件;rpc组件RaftIn Search of an Understandable Consensus Algorithm raft论文简版rpc服务内置rpc client/rpc server,对外接收外部rpc访问,包括client和节点间通讯;
2024-06-28 19:53:03
1430
EXTJS In Action MEAP ch1-ch6.pdf
2010-08-17
High.Performance.MySQL_Second.Edition
2011-01-16
odoo-connector-java.rar
2021-11-03
ActiveMQ In Action MEAP Edition
2010-08-15
UML Distilled Second Edition
2010-08-18
User Stories Applied For Agile Software Development.chm
2010-08-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人