自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (31)
  • 收藏
  • 关注

原创 报表/报告组件(一)-指标/属性组件设计

报表是数据的呈现,指标组件是其关键部分,用户对检测的数据有执着的要求,数值类型,样式,格式体现数据的专业,报告阅读者快速获得所需的信息,本指标组件实现高度自定义的数值模型,样式和格式,满足用户对专业检测报告的要求。本文解释指标组件设计和实现。

2025-03-23 13:41:56 344

原创 一次cpu飙高排查

有这个方向就容易想到,看一下线程快照,发现又4000多个nacos client线程,问题就明显了,接下来就要找到创建nacos client的地方,nacos client一般集成spring cloud实例,不会出问题,主要是找手动创建的代码。果然,创建了ConfigService,没有关闭,写这个代码的程序员是懂gc,认为服务会回收,但gc不会回收线程,ConfigService内嵌一个worker,打开线程不停刷最新的配置。公司有个系统大概两周左右cpu飙高,访问量不大。

2025-02-19 09:44:13 108

原创 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 950

原创 0代码引擎设计(三)-详细设计

无论哪种模式,从代码物理特性看,逻辑实现是在方法内,通过数据运算,方法调用加工数据,方法调用也是数据运算,”控制”控制运算执行,本质上,逻辑代码实现是业务方法通过控制,运算和数据3要素实现。代码生成分4块,元模型,业务逻辑,持久层和关联对象,其中元模型生成应用服务类,业务对象类,实体类;1 方法上下文 展示方法内可获取的数据,包括全局的常量和变量,传入的参数,数据库读取,远程方法读取的,运算新增方法内临时变量。业务人员构建元模型,包括应用服务,业务对象和实体,业务逻辑,外部服务关联。

2025-01-10 14:22:45 546

原创 企业全文搜索-搜索权限,非侵入文档同步,权限同步 ,扩展字段

Es的查询请求最终转换成es dsl,esdsl搜索功能非常丰富,可调参数多,但也很难用,更难复用,onesearch设计装配映射组件支持通用表达式转换esdsl,用户只需编写通用表达式,如,((f1=‘a’or f2=’b’) and f3=‘c’)) 即可实现搜索过滤,类似elasticsearch自身也提供了sql查询功能,大大降低开发难度,同时具备高复用性。同方案1,不同的是,mq作为本地queue持久存储,Channel封装起来,writer不需要依赖mq,数据链路与原生一样,主动获取mq消息。

2025-01-10 10:12:12 106

原创 0代码引擎(二)-架构设计

业务人员熟悉业务,开发人员熟悉软件开发技术,两者存在鸿沟,需要系统分析员做转换,理解业务,转化为软件设计,再由软件工程师实现,然后测试,最后发布,这是软件工程的整个流程,对于简单的业务,或者客户定制需求,成本过高。0代码引擎填平业务人员和开发人员之间的鸿沟,业务人员通过拖拉拽实现业务代码,代码是生成的,可靠和经验证的,开发人员开发中间件,通用组件和0代码引擎本身,大大减少成本,开发和交付周期。封装在业务对象中,业务对象各施其职,协同互动完成业务,业务对象重用性高,业务变更只影响相关业务对象。

2024-12-18 12:36:34 219

原创 0代码引擎之规则引擎(based drools)(一)-技术要点

5. BRMS 职责类似maven,存储KJAR,支持release, snapshot,支持版本。4. 规则服务 rest/rpc规则执行服务,业务应用使用该服务执行规则,获得结果。2. 项目 描述规则的项目结构;spring boot集成。本文是规则引擎的第一篇,首先介绍规则引擎的技术要点,系列后续文章大纲。6. 规则匹配算法 高效的模式匹配,但不属于本系列的范围,不深入分析。

2024-12-16 22:13:07 264

原创 datax大数据表分片

相比较,datax原生的splitKey大数据分片方案容易出现数据不均匀,可能分片还是超大数据,本方案最大问题需要order by 分片的字段,需要对查询优化order by,min/max,但两者原理相同,利用单调递增字段切分大数据表。

2024-11-20 22:23:41 185

原创 dledger原理源码分析系列(五)-状态机

dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用本系列使用dledger v0.40本文分析dledger的状态机,状态机是应用接入dledger的方式,分析状态机需要借助应用实例,本文使用rocketmq的dledger控制器作为应用实例。Raft状态机。

2024-11-06 00:12:01 647

原创 sentinel原理源码分析系列(八)-熔断

限流为了防止过度使用资源造成系统不稳,熔断是为了识别出”坏”资源,避免好的资源受牵连(雪崩效应),是保证系统稳定性的关键,也是资源有效使用的关键,sentinel熔断插槽名称Degrade(降级),本人觉得应该改为熔断,降级是熔断的补偿措施,因此本文使用"熔断"下图是熔断参与的类互动图,熔断做两件事:一,识别坏资源,设置断开状态;二,适时探测坏资源是否已好,恢复闭合状态上图是参与熔断的类互动图。

2024-10-20 11:52:03 1520

原创 sentinel原理源码分析系列(六)-统计指标

上图展示是一个StatisticNode内的情况,其他的node,clusterNode,DefaultNode都继承StatisticNode,圆形/方形/三角形代表着某类型指标(pass,block等)一次增加数,一段时间多个线程调用资源产生多个的指标增加数,如一个窗口时段内多个图形,时间窗口时段内增加指标数落入时间窗口内,即WindowWrap对象内,限流插槽调用metric获取该时间窗口内所有指标增加值(LongAdder表示),累加在一起。下面以请求通过数代码为例子。上图是统计指标的类互动图。

2024-10-18 20:58:53 572

原创 sentinel原理源码分析系列(七)-限流

限流的目的有两个,一,防止资源过度使用,造成系统不稳;二,大流量有序地通过上图是参与限流的类互动图,首先解释限流规则的设置限流依赖的统计指标,线程数/QPS,统计插槽介绍过,increaseThreadNum/addPassRequest是为了统计这两个指标流控行为决定处理大流量通过的方式,类图展示sentinel实现了多种流控行为,保证不超限依据调用关系限流构建调用链路设置不是单选题,同一个资源可有多个规则,但规则符合约束。

2024-10-17 17:53:18 1192

原创 sentinel原理源码分析系列(五)-构建调用链路

上节分析构建插槽链,Sentinel的资源调用好比一个个连续的检查口,能否通过,检查规则和统计指标,插槽链肩负检查的责任,本章开始分析插槽,首先分析构建调用链路的两个插槽。

2024-10-16 13:11:37 607

原创 sentinel原理源码分析系列(四)-Context&Entry

启动和初始化完成后,调用者调用受保护资源,触发sentinel的机制,首先构建或获取Context和获取Entry,然后进入插槽链,决定调用是否通过,怎样通过上图展示构建Context和获取Entry的类互动图。

2024-10-15 20:19:01 565

原创 sentinel dashboard分布式改造落地设计&实现解释(二)-分布式discovery组件

discovery负责维护app/机器资料库,transport健康检测, transport上下线处理。Discovery关键是分布式存储,后续研究一下raft,其复制,状态机,快照技术,但个人觉得,discovery功能只是作为目录,提供app/resource,支持搜索和规则更改,不需要太严谨和高效的技术保障。上图discovery涉及的znode,discovery监听transport的实例(item)的上下线,维护app/机器,删除对应分片。

2024-10-14 14:16:53 856

原创 sentinel dashboard改造落地设计&实现解释(一)-分布式fetcher和metrics存储/搜索

微服务是目前java主流架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务同学,配置中心等组件,其中,熔断限流主要3个功能特性,限流,熔断,快速失败。Sentinel是阿里开源的熔断限流组件,sentinel dashboard是演示级别,表现在metrics采集是单机版,metrics存储存在内存,不支持分布式,高可用,因此需要改造。此前博文(),介绍分布式改造设计,本系列介绍落地的设计和实现解释。

2024-10-12 15:01:25 895

原创 sentinel dashboard改造落地设计&实现解释(一)-分布式fetcher和metrics存储/搜索

微服务是目前java主流架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务同学,配置中心等组件,其中,熔断限流主要3个功能特性,限流,熔断,快速失败。Sentinel是阿里开源的熔断限流组件,sentinel dashboard是演示级别,表现在metrics采集是单机版,metrics存储存在内存,不支持分布式,高可用,因此需要改造。此前博文(),介绍分布式改造设计,本系列介绍落地的设计和实现解释。

2024-10-12 14:50:45 530

原创 sentinel原理源码分析系列(三)-启动和初始化

本文是sentinel原理源码分析系列第三篇,分析sentinel启动和初始化。

2024-09-28 15:23:07 594

原创 sentinel原理源码分析系列(二)-动态规则和transport

本文是sentinel原理源码分析系列第二篇,介绍两个组件,动态配置和transport。

2024-09-28 15:11:45 792 1

原创 sentinel原理源码分析系列(一)-总述

下图是sentinel的技术技术架构图sentinel技术架构没有比官方的原理图更清楚了,总体看,sentinel是责任链架构模式,分两部分,前部分是请求处理的拓扑构建和数据统计,后部分是规则+数据得出结论,是否放行资源(api/服务方法)调用。

2024-09-28 13:44:38 916 1

原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(五)-聚合

聚合基于Query结果的统计,执行过程是搜索的一部分,Onesearch支持0代码构建聚合,聚合目前完全在引擎层。

2024-09-20 18:34:31 552

原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索

搜索内容比较多,onesearch分成两部分,第一部分,Query构建,其中包括搜索词设置,filter,高亮;第二部分分页和排序。第一部分是映射引擎负责,映射通用表达式为具体引擎的查询(Query)。SearchRequest构建。

2024-09-20 17:47:42 525

原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(三)-文档

更新文档的字段,是想一下文档的状态变更,相应更新搜索引擎状态,只需更新该字段,无需整个文档,包括内容重新获取,elasticsearch部分更新功能需要索引source属性设为true,即保留文档json,该功能也可以用于更新扩展属性。批量操作可以融合增删改不同的操作,但在实际操作一般是同类型,没有混合操作,onesearch api设计为同类型操作批量。文档写入操作与构建单个写入请求类似,支持Map,并可识别nested,很方便。文档服务负责写入,包括批量;Id获取文档,删除,批量删除不介绍。

2024-09-20 17:28:57 289

原创 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(二)-索引

分词器,通常索引级分词器可满足要求,不需要每个字段设置,字段设置在put mapping,本组就也可以支持字段的分词器设置,在schema设置相关属性。put mapping定义索引字段属性,类似数据库的表,虽然elasticsearch支持schema free,通常严格定义更符合应用要求,保证类型,格式符合要求。pdm文档索引,包括nested,扩展字段,文档属性扩展,其中_content字段是组件保留字段,支持文本内容。索引服务索引的操作,包括构建,put mapping,alias,更新,删除等。

2024-09-20 17:06:22 572

原创 搜索引擎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 551 1

原创 弹性资源组件集成系列(二)elastic-jobx集成弹性资源设计解释

弹性组件集成有弹性需求的组件,为组件增加高弹性容量,规划集成datax,elastic-job,xxl-job,sentinel dashboard,dolphinscheduer,eventbridgeelastic-job使用zookeeper实现分布式调度,支持分片,容错,但worker节点需预先启动,参与该作业的worker参与分片,节点规模需预先计算,启动相应数量的worker数。

2024-09-01 21:37:09 264

原创 微服务可观测平台总体架构设计

micrometer框架,提供metrics模型,包括metrics类型,counter,gaugegr,timer,histoams等,实现了多种指标输出器,输出多种监控平台,Prometheus在支持列表中。 服务日志: 记录时间(起始/结束),用户,用户地点(ip),服务节点(ip),服务名称,模块名称,参数(可配置),tracingId,支持异步写入,减少服务正常执行影响。 监控门户,统一监控门户,用户自定义视图,告警(页面,钉钉,邮件);

2024-08-30 13:54:33 867

原创 弹性资源组件集成系列(一)datax集成弹性资源设计解释

弹性组件集成有弹性需求的组件,为组件增加高弹性容量,规划集成datax,elastic-job,xxl-job,sentinel dashboard,dolphinscheduer,eventbridgedatax datax基于社区版,此前已对datax进行重构,增加其metrics exporter,分布式特性,分布式模型是基于启动的worker分配,固定的worker数量,如果分片少,浪费资源;分片多,资源不足,只有排队等待。

2024-08-10 14:16:41 142

原创 dledger原理源码分析系列(四)-日志写入和复制

dledger是openmessaging的一个组件, raft算法实现,用于分布式日志,本系列分析dledger如何实现raft概念,以及dledger在rocketmq的应用本系列使用dledger v0.40本文分析dledger的日志,包括写入,复制,推进共识

2024-07-10 21:01:35 899

原创 dledger原理源码分析系列(三)-选主

分析raft实现dledger的心跳模块,包括leader发起心跳,节点处理心跳,心跳结果统计,基于统计的下异步处理;心跳是选主的源

2024-06-30 08:34:50 721

原创 dledger原理源码分析系列(二)-心跳

分析raft实现dledger的心跳模块,包括leader发起心跳,节点处理心跳,心跳结果统计,基于统计的下异步处理;心跳是选主的源,下一篇文章分析选主

2024-06-29 12:04:11 706

原创 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 1383

原创 seata原理源码分析系列(一)架构, 组件

分布式系统,数据存储在不同的资源管理器(数据库),需要保证分布式事务的原子性,业界比较常用xa,数据库标准实现,严格的一致性,但性能较差,不符合当前互联网系统高吞吐,高并发的要求。,seata通过适配器像业务服务置入逻辑,业务服务调用前执行,注册分支事务,从TC获得分支事务ID,TC根据XID将分支事务与全局事务关联。, TC收到全局事务的结果,若成功,则通知RM成功,RM收到通知后执行清理工作;,业务服务执行自身业务逻辑,例如执行sql,写入数据库,若成功,通知TC分支事务成功。

2024-06-14 15:35:53 727

原创 datax关系数据库插件设计和实现解释

本文介绍基于RBT的关系数据插件,datax自带关系数据库插件,本组件有以下特性:rbt组件转换配置,以写入库未目标,配置数据查询和规则,配置支持序列化为xml/json转换配置支持配置中心,zookeeper,nacos,数据库等,可扩展框架支持基于规则的转换,规则修改和新建 column/record两阶段转换,支持数据转换和关系的转换insert/upsert模式setl-data组件,无缝切换不同的数据库

2024-01-15 18:47:37 922

原创 flink源码分析之功能组件(五)-高可用组件

本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。本文解释高可用组件,包括两项服务,主节点选举和主节点变更通知* 高可用服务常见有两种实现,zookeeper和k8s,本文介绍zookeeper

2023-12-14 18:42:08 1147

原创 flink源码分析之功能组件(六)-心跳组件

本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。本文解释心跳组件,心跳组件监听组件间连接活性,触发重连,保证连接有效性;断连后通知并释放资源,心跳可以带荷载,作为组件间数据交换的方式心跳组件依赖rpc组件实现通讯,rpc的解释可参考。

2023-12-08 00:35:05 1339

原创 flink源码分析之功能组件(四)-slot管理组件II

本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。本文解释slotpool组件,严格来说,slotpool组件不属于功能组件,而是业务组件,资源消费者申请到资源后,在本地管有资源slot,避免资源管理器异常导致作业运行失败,同时资源管理器不可用也不会影响作业的继续执行,只有资源不足时才会导致作业执行失败。

2023-11-29 17:42:14 1315

原创 flink源码分析之功能组件(四)-slot管理组件I

本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。本文解释slotpool组件,严格来说,slotpool组件不属于功能组件,而是业务组件,资源消费者申请到资源后,在本地管有资源slot,避免资源管理器异常导致作业运行失败,同时资源管理器不可用也不会影响作业的继续执行,只有资源不足时才会导致作业执行失败。

2023-11-29 17:39:16 1318

原创 flink源码分析之功能组件(三)-rpc组件

本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。本文解释rpc组件,rpc组件用于个核心组件,包括作业管理器,资源管理器和任务管理器之间的通讯。

2023-11-27 11:02:22 1226

原创 flink源码分析之功能组件(二)-kubeclient

本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。其中kubeclient上一个系列介绍过,为了系列完整性,这里“copy”一下。

2023-11-25 15:00:25 1409

基于规则的转换组件,用于datax转换

基于规则的转换组件,可用于datax

2022-06-16

datax metrics exporter @prometheus

包括datax-core,集成了metrics输出器组件 输出器组件

2022-05-29

datax关系/图数据库插件

datax关系/图数据库插件

2022-05-15

my-sharding

基于sharding-jdbc 3.1.0,针对sharding-jdbc使用上痛点和缺失在源码级别解决和增强 1. 分片算法框架 2. sql兼容加强

2022-01-25

onesearch-master.zip

搜索引擎

2022-01-11

canal-sync.zip

canal同步,数据变更捕获

2022-01-04

service-tracing-demo.zip

业务跟踪demo

2022-01-03

service-tracing.zip

业务跟踪框架代码

2022-01-03

metrics-reporter.zip

测量组件,metrics-core,Prometheus输出器,报告器

2021-12-19

flowsharping.rar

动态限流下分布式流量控制

2021-12-13

obs-demo.rar

操作日志全链路测试demo,包括网关,服务,参数抓取

2021-11-17

service-logV2.zip

服务日志

2021-11-17

mygray-master.zip

灰度发布discovery自定义策略,多发布(release)分组(group),指定租户(tenant)灰度发布策略, 并带有demo

2021-11-04

odoo-connector-java.rar

odoo连接器,支持流式构建逆波兰not and or查找表达式,单元测试覆盖绝大部分场景,包括not and or嵌套,优先级;demo数据库,自有数据库

2021-11-03

Learning.Spark.Lightning-Fast.Big.Data.Analysis

Learning.Spark 完整版,为数不多的spark著作

2015-02-07

learning spark预览版

屈指可数的spark书中比较好的,特别是RDD方面

2014-10-31

Just Enough Software Architecture

A Risk-Driven Approach Architecture Design

2011-06-20

Software Systems Architecture

非常棒的讲述系统架构的书,a wonderful book about system Architecture

2011-05-30

Professional_Android_2_Application_Development

Oh, A Bible for developing android app

2011-03-23

The Definitive Guide to Terracotta

Terracotta The Definitive Guide

2011-01-17

High.Performance.MySQL_Second.Edition

High Performance MySQL is the definitive guide to building fast, reliable systems with MySQL.

2011-01-16

spring security 3.0 book

book for spring security 3.0

2010-10-27

Apress.Beginning.Android.2.Mar.2010.zip

Android.2 development in java

2010-09-13

Fundamental+Networking+in+Java.pdf

Fundamental Networking in Java

2010-08-20

UML Distilled Second Edition

UML Distilled Second Edition A Brief Guide to the Standard Object Modeling Language

2010-08-18

User Stories Applied For Agile Software Development.chm

User Stories Applied will be invaluable to every software developer, tester, analyst, and manager working with any agile method: XP, Scrum... or even your own home-grown approach.

2010-08-18

EXTJS In Action MEAP ch1-ch6.pdf

Of cause, the famous In Action series, though the meap edition, it is enough.

2010-08-17

ActiveMQ In Action MEAP Edition

ActiveMQ In Action MEAP Edition, famous In Action series, though MEAP Edition, but is enough for people who want to study ActiveMQ.

2010-08-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除