merge流程
2016-07-14 16:14:35 0 举报
合并流程是将两个或多个分支的代码合并到一个主分支中的过程。通常,这个过程是由开发者在完成某个功能的开发后进行的。首先,开发者会在本地创建一个新分支,用于开发新功能。然后,在新分支上进行代码编写和测试。当新功能完成后,开发者会将新分支推送到远程仓库。接下来,开发者会在远程仓库上发起一个合并请求,请求将新分支合并到主分支。其他开发者会审查这个请求,如果认为没有问题,就会接受这个请求。最后,主分支上的代码会被更新为新分支上的代码,从而实现了代码的合并。整个过程旨在确保代码的质量和稳定性,同时促进团队协作。
作者其他创作
大纲/内容
DataMergeService
jobQueue 任务队列outPutJob 聚合任务batchJob 缓存队列满后交给对应任务处理batchedNodeRows 缓存每个分片对应的数值 RowDataPacketGrouper group 处理类RowDataPacketSorter order by 排序类
获取 map中的row 将新的row和其merge并覆盖row最后将row添加到result
grouper
RowDataSorter
total 总行数size 查询记录数(limit)HeapItf 堆RowDataCmp 多列比较器hasBuild 是否建立过heap
addRow(row)compareObject 字段比较算法 数字或字符串
dataMergeSvr
若有order by 生成 sorter对象
SQLMerge
batchJob
sum count min max计算
MyslCon
将ruselts结果返回前端
需要Merge 创建 dataMergeSrv对象
onNewRecord
getResults
汇总的数据 存在于groupersorter对象中
解析sql 获取group信息
batchedNodeRows 将row加入缓存队列
outputMergeResult
createJob
Collection
RowDataPacketGrouper
mertFields
若有group 生成group对象
DruidSelectParser
模拟group by 场景
RouteResultset
SQLMerge
+ operation1(params):returnType- operation2(params)- operation3()
如果是求avg 直接塞入results容器 getReult 再进行求平均计算
后端接收结果 最终调用绑定在MysqlCon的 respHandler
聚合函数解析
先收到field包
MultiNodeQueryHandler fieldEofResponse
若是avg 这里会求mergeAvg
去map get(key)如果有 就证明是一组的
MergeCol
需要聚合的列mergeType 聚合类型 count sum min max avgColMeta
根据field包内容生成聚合函数相关对象MergeCol对象!
RowDataPacket
addRow 经rowPkg放入grouper进行聚合计算
multiQueryHandler
ColMeta
colType 字段类型colIndex 聚合字段在select的位置avgSumIndexavgCountIndexskipsameNameIndexList 同名列名
创建任务 汇总batchedNodeRows 数据
getKey
aggregateRow
MaxHeap
最大堆排序rowDataCmpRowDataPackets
addRow
handler生成merge类 聚合关系
MultiNodeQueryHandlerrowResponse
MultiNodeQueryHandler
+ attribute1:type = defaultValue+ attribute2:type- attribute3:type
OrderCol
orderType 排序类型 asc desccolMeta
parseAggGroupCommonparseOrderAggGroupMysql
获取groupBy 字段并生成一个唯一key
聚合处理类mergCols 待聚合列groupColumnIndexs 聚合类型result 聚合结果集(数量与group分组数量一致)rowDataPacketMap
构造rowDataPkg 解析字节数据
返回results如果是聚合会有多个RowDataPacket
dataMergeSvr
rowDataPacketMap
在汇总任务完成后创建结果聚合任务
getResult
removeSkipColumns去掉改写的字段
group byavg min maxorder by desc asc
outPutJob
handleRowData
若队列已满 需要创建任务处理队列数据以清空数据然后再将row加入缓存队列
RowDataCmp
orderCols 排序字段 1或多个
compare 一个或多个字段排序 依次比较
value 记录内容fieldCount 列数fieldValues 每列的内容
onRowMetaData
MultiNodeQueryHandlereofResponse
依次循环rows的内容
FronCon
putBatchFailed
0 条评论
下一页