- 博客(236)
- 资源 (6)
- 收藏
- 关注
原创 大数据索引分析--参考paimon
摘要: Paimon索引系统分为表级和文件级两类,具备不同级别的数据定位能力。表级索引包括Hash Index(桶级定位)和Deletion Vector(标记删除行)。文件级索引提供更细粒度的过滤能力,其中Bloom Filter通过概率判断实现文件级跳过,而Bitmap Index采用RoaringBitmap32格式,可精确到行级定位。其他索引如BSI和Range Bitmap针对数值查询优化。不同索引类型适用于不同场景,需根据查询特点配置使用。
2025-11-17 13:16:25
739
原创 Flink 写入 Paimon 流程:Checkpoint 与 Commit 深度剖析
Flink 流式写入 Paimon 的机制是一个精心设计的分布式事务系统,它巧妙地结合了 Flink 的 Checkpoint 机制和 Paimon 的快照隔离,实现了高性能、高可靠的流式数据湖写入。核心特点端到端精确一次:通过两阶段提交保证高吞吐量:并行写入 + 异步提交强一致性:基于 Snapshot 的快照隔离容错能力:完善的故障恢复机制关键技术点:在 Barrier 前预提交:全局事务协调:幂等提交机制:智能故障恢复最佳实践合理配置 Checkpoint 参数监控关键性能指标。
2025-11-10 10:40:12
970
转载 lsm table 学习
本文探讨了RocksDB底层采用的LSM-Tree(Log Structured Merge Tree)存储架构。首先分析了针对写多读少场景的优化需求,对比了原地写与追加写的优缺点。LSM-Tree通过以下设计实现高效写入:将内存中的MemTable(基于跳表)作为写入口,数据有序后批量写入磁盘形成SSTable;采用分层存储,通过归并操作实现数据去重和排序;引入预写日志(WAL)防止数据丢失。读操作通过内存MemTable、分层磁盘SSTable和布隆过滤器优化查询效率。该架构实现了写性能的提升,同时保证
2025-11-07 13:05:16
24
原创 Paimon 文件索引深度解析:以 Bitmap 索引为例
Apache Paimon文件索引机制解析:本文重点分析Paimon数据湖的文件索引实现,特别是Bitmap索引的架构和应用。系统支持BloomFilter、Bitmap等多种索引类型,采用统一文件格式存储。Bitmap索引特别适合低基数列的精确匹配查询,提供V1/V2两种格式,并采用RoaringBitmap32压缩优化。文章详细介绍了索引创建流程、查询执行过程以及优化技术,包括单值优化和二级索引等。通过配置示例展示了如何为表创建和优化Bitmap索引,显著提升查询性能。
2025-11-04 21:17:57
619
原创 Apache Paimon 写入流程
Apache Paimon 作为下一代流式数据湖存储的杰出代表,通过其创新的“湖格式 + LSM-Tree”架构,成功地解决了传统数据湖在实时更新和流批一体处理上的诸多痛点。本报告系统性地剖析了 Paimon 从顶层架构设计到底层技术实现,再到生产环境性能优化的完整技术栈,旨在为广大数据从业者提供一份全面而深入的实践指南。1.统一的流批存储:Paimon 的核心价值在于其原生支持流式和批量读写。
2025-11-03 10:53:45
802
原创 12类Linux常用命令
本文系统介绍了Linux常用命令的分类与使用方法,涵盖文件管理、文本处理、用户权限、进程管理、网络配置、系统监控、软件包管理等核心内容。重点讲解了ls、grep、awk、ps、ssh等高频命令的语法和实战示例,并对比了不同发行版的包管理工具(apt/yum/pacman)。文章还提供了学习路径建议,强调从基础操作到脚本编程的渐进式学习,推荐通过实践操作、查阅手册和参与社区讨论来掌握Linux命令行技能,适合不同层次的用户参考学习。
2025-10-22 14:38:08
1041
原创 hive metastore数据库表结构
4. SDS:提供table/partition对应的文件系统路径location,以及对这个数据读取的InputFormat、是否压缩、是否是子文件夹存储、SerDe类(对应于SERDES表)Tabid、创建时间、数据库id、last_access、owner(这个后面会和权限控制有关)、表的存储位置id、表明、TBL_TYPE(外部表、内部表)、主要是总文件个数、总文件大小、comment、last_ddl_time(上次执行ddl的时间)、以及用户自定义的一些参数(orcfile中的参数)
2024-06-04 20:13:22
1257
转载 分库分表 ——12 种分片算法
我们一起梳理下框架中的核心部分分片策略和分片算法,其内部针为我们提供了多种分片策略和分片算法,来应对不同的业务场景,本着拿来即用的原则。这次将详细介绍如何在中实战 5 种分片策略和 12 种分片算法,自定义分片算法,比较它们的应用场景以及优劣。
2024-04-01 21:31:44
2211
原创 如何成为有潜力的研发工程师:个人成长的关键特质
从百科的定义看,“潜力”一词通常用来描述一个人、一个事物或一种情况具有尚未充分发挥的可能性或能力。这种能力或潜力可能尚未被完全发现或实现,但有望在适当的环境和条件下得到释放或发展。有时候,我们对潜力的理解往往不够准确,或者对有“潜力”的标准过高,往往认为起点高就有潜力,或者聪明就是有潜力。这会导致几种问题:起点高的同学并不一定能够持续发展好。当发展不顺利的时候,往往会把自己纳入到没有潜力的行列,丧失了恢复成长的可能性。“聪明”的同学也不一定能够有好的发展。我对潜力的理解,不看起点,也不是聪明。
2024-03-29 14:31:02
1531
原创 如何写好一篇文档?
什么是好的文档?在我看来,从作者角度上讲,能够。从读者角度上讲,读者能够。那如何写好文档呢,先抛观点。先抛出自己写过的一些文档,你可以大概瞄一眼,如果觉得还算认可,就可以继续阅读,如果不认可,就也节约时间了。🧑💻以我常写的技术方案为例,除去方案本身的设计时间,大概时间占比如下除大家都熟练的填内容之外,其他部分比如排版,在刚开始时肯定会需要更多的时间,但用不了多久就不会再花更多时间,唯手熟尔。最后还是要先强调一下,,不用刻意模仿,没有意义。
2024-03-29 11:41:54
2539
原创 系统日志规范及最佳实践
日志,维基百科中对其的定义是一个或多个由服务器自动创建和维护的日志文件,其中包含其所执行活动的列表。一个打印良好的日志文件可为开发人员提供精确的系统记录,可辅助开发人员定位到系统错误发生的详情及根源。在 Java 应用程序中,通常使用日志文件来记录应用程序运行过程中的重要逻辑参数及异常错误,辅之日志采集系统(ELK、DTM)构建系统监控体系。
2024-02-07 18:00:09
2921
1
原创 go通过pprof定位groutine泄漏
使用命令go tool pprof url可以获取指定的profile文件,该命令会发起http请求,然后获取到资源信息存储到本地,之后就可以使用命令查看运行信息,以下是5类请求的方式:。上面介绍的俩种方法都是pprof自带的检测方法,虽让能够帮助定位到程序的问题所在,但是每次打开CPU和内存分析文件都是密密麻麻的数字和代码,还是蛮头疼的,下面介绍pprof结合graphviz带来的可视化服务,是问题定位能够更加清晰。可以看到协程号为21和22的协程都阻塞在了锁的获取上,阻塞时间为5min。
2023-09-09 12:13:34
1741
1
原创 MySQL 使用规范 —— 如何建好字段和索引
一、案例背景二、库表规范1. 建表相关规范2. 字段相关规范3. 索引相关规范4. 使用相关规范三、建表语句三、语句操作1. 插入操作2. 查询操作四、其他配置1. 监控活动和性能:2. 连接数查询和配置本文的宗旨在于通过简单干净实践的方式教会读者,如何更好地使用 MySQL 数据库。这包括;库表创建规范、字段的创建规范、索引的创建规范以及SQL使用的相关规范,通过这些内容的讲解,让读者更好使用 MySQL 数据库,创建出符合规范的表和字段以及建出合适的索引。
2023-09-02 18:41:21
1089
转载 GO如何编写一个 Worker Pool
先看接收到任务的 case,首先判断是否实际接收到 task,如果 ok 为 false,说明 taskQueue 这个 channel 已经被 close 了,直接退出循环,这里使用 label 的原因是在 for-select 嵌套的 select 中,如果直接 break 只会退出当前的 select,继续执行 for 以内 select 以外的代码并继续下次 for 循环,不会直接退出外面的 for 循环,如果想退出外面的 for 循环,则需要借助 label 来实现。
2023-08-18 12:54:30
453
原创 浅聊权限模型
权限相关术语英文名称中文名称描述Subject主体通常是用户或用户组Object对象权限所作用的对象,通常指各类资源Action操作对Object的操作,如:创建、删除、查询、修改等Effect结果/效力规则匹配后的限制操作,如:Allow/ DenyCondition限制条件权限生效的条件Permission权限用来指代是否允许某人在某种条件下对某种资源做某种操作Role角色权限集合,包含一个或多个权限(Permission)Policy策略。
2023-07-24 14:45:51
1584
2
原创 如何设计一个优秀的 Go Web 项目目录结构
Go 语言作为一门高效、简洁、并发安全的语言,越来越受到开发者们的青睐,特别是在 Web 开发及云原生领域。而对于一个大型的 Go Web 项目而言,一个优秀的目录结构设计是必不可少的。它可以帮助我们更好地组织代码、减少冗余、提高可维护性和可扩展性。在本文中,我们将讨论如何设计一个优秀的 Go Web 项目目录结构。Go 项目标准布局不要在这个目录中放太多的代码,更不要放业务逻辑代码,保持整洁。/internal存放项目的内部私有代码和库,不允许在项目外部使用。同时这也是 Go 在编译时强制
2023-07-04 17:27:53
1492
原创 从Java BIO到NIO再到多路复用,看这篇就够了
实际上,它是一个索引值,指向一个文件记录表,该表记录内核为每一个进程维护的文件记录信息。看下入参,需要用户主动传入要监视的文件描述符数量,可读文件描述符集合,可写文件描述符集合,异常文件描述符集合等入参,实际上就干了一件事,以前由用户态去循环遍历所有客户端产生系统调用(如果10k个socket,需要产生10k个系统调用),改成了由内核遍历,如果select模式,只需10系统调用(因为select最大支持传入1024个文件描述符),如果是poll模式(不限制文件描述符数量),则只需1次系统调用。
2023-06-06 12:51:22
396
原创 微信扫码授权到登录网页,中间究竟发生了什么?
在微信开放平台进行配置和申请,获得,配置好自己的回调URI根据拿到的数据,配上指定的参数得到二维码的URL微信SDK在二维码页面进行15s一次轮询检测,对于不同的状态有不同的状态码:如果没有扫码:状态码为408,且code为空如果扫码既不接受也不拒绝授权:状态码为404,且code为空如果扫码但是拒绝授权:状态码为403,且code为空如果扫码并且同意授权:状态码为405,返回一个code微信SDK检测到状态码和code后,进行对之前配置的回调URI的重定向,带上code。
2023-05-29 20:23:05
2383
4
原创 swaggo使用demo
执行完毕后,将会在docs目录下生成swagger.json和index.html文件。打开index.html文件即可查看API接口文档。以上就是Swaggo注解的详细使用示例,希望对你有所帮助!如果你想了解更多Swaggo的用法,可以参考Swaggo官方文档。执行完毕后,将会在项目根目录下生成docs目录和docs/swagger.json文件。括请求方法、请求路径等。
2023-04-28 12:56:04
266
原创 SQL优化13连问,收藏好!
可以根据查询语句的条件,增加相应的索引,从而加快查询速度。有些SQL语句本身可能存在一些问题,如join操作过于频繁,使用了不必要的子查询等,这些都会导致查询效率低下。查询执行时间过长有可能是由于锁的问题导致的,需要分析查询语句中是否存在锁的问题,如果存在锁的问题,可以考虑增加锁的并发度,从而提高查询效率。在编写SQL查询语句时,要尽可能地简单明了,避免复杂的查询语句,同时也要避免一些不必要的查询操作。const:通过一次索引就能找到数据,一般用于主键或唯一索引作为条件,这类扫描效率极高,,速度非常快。
2023-03-20 15:27:13
2551
转载 go 主流 web 框架中路由的实现原理
路由,就是url地址到业务处理代码的映射。当用户输入一个url地址时,服务器该知道该用户返回什么内容。比如,当用户点击登录时,服务器应该做登录相关的事情,并给用户返回登录成功或失败的页面。当用户点击退出时,服务器应该做和退出相关的事情(比如清理用户登录的数据),并返回给用户退出之后的页面。一个url到一个具体的处理函数之间的映射叫做一条路由。多条路由组成路由表。路由表主要用于路由查找,根据不同的路由表的组织形式,可以有不同的查找方法。最简单的路由表就是使用map。
2023-02-14 16:51:38
927
原创 Go select底层原理
这些处理或者直接调用运行时函数,或者直接转成对channel的操作,或者以非阻塞的方式访问channel,多种灵活的处理方式能够提高性能,尤其是避免对channel的加锁。首先,编译器对select没有case、有单case和单case+default的情况进行单独处理,这些处理或者直接调用运行时函数,或者直接转成对channel的操作,或者以非阻塞的方式访问channel,多种灵活的处理方式能够提高性能,尤其是避免对channel的加锁。随机的轮询顺序可以避免 channel 的饥饿问题,保证公平性。
2023-01-06 13:34:43
1551
原创 Golang基础教程——字符串常用方法总结
Golang 字符串操作小结,字符串函数主要集中在 strings 和 strconv 中,本文介绍使用方法,给出一个函数接口,然后匹配相关example。
2022-12-11 15:09:02
1416
原创 Go语言——对象的三种排序方法
使用sort.Slice函数排序,它使用一个用户提供的函数来对序列进行排序,函数类型为,其中参数i,j是序列中的索引。在排序切片时会保留相等元素的原始顺序。上面两个函数让我们可以排序结构体切片(order by struct field value)。Age int}{}// 用 age 排序,年龄相等的元素保持原始顺序})
2022-12-10 12:25:31
3224
原创 gorm crud 指南
CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。本文中的db变量为*gorm.DB。
2022-11-13 21:53:38
361
原创 git常用命令行操作
Git的配置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。下面是我整理的常用 Git 命令清单。Repository:仓库区(或本地仓库)Index / Stage:暂存区。Workspace:工作区。Remote:远程仓库。
2022-11-05 17:44:10
457
原创 elasticsearch 性能优化
合并线程数默认是:Math.max(1, Math.min(4, Runtime.getRuntime().availableProcessors() / 2)),如果是机械磁盘,可以考虑设置为1:index.merge.scheduler.max_thread_count: 1,7、关于段合并,合并在后台定期执行,比较大的segment需要很长时间才能完成,为了减少对其他操作的影响(如检索),elasticsearch进行阈值限制,默认是20MB/s,Lucene 随机三次磁盘读取比较耗时。
2022-09-15 18:17:37
586
原创 java性能优化案例——面试可能用得到
除了节省机器资源外,性能好的应用相对于性能差的应用,在应对流量突增时更不容易达到机器的性能瓶颈,在同样流量场景下进行机器扩容时,也只需要更少的机器,从而能够更快的完成扩容、应急操作。新的实现方式是在进行变量替换之前,通过循环模板内容字符串,利用双指针把模板里面所有变量都提取出来,再对变量集合进行循环,依次替换掉模板内容里面的变量。但V4版的代码可读性是不如V3版的,可以把V3版和V4版相结合,剔除掉缓存依赖,产生一个代码可读性和性能最佳的V5版。也就意味着,同一个模板对应的变量都是固定不变的。
2022-09-15 09:48:06
686
原创 分布式事务seate
5seata二阶段commit/rollback源码分析。2.seata底层自动补偿机制是如何实现的。1.seate一阶段本地事务执行流程分析。4seate底层是如何解决并发写隔离的。3.seata分支事务注册源码分析。
2022-08-18 23:10:20
846
转载 TCC分布式事务——设计思想及其可能遇到的问题
今天进行了 Seata TCC 模式的深度解析。主要介绍 Seata TCC 模式的原理,从 TCC 业务模型与并发控制的角度告诉大家怎么设计一个 TCC 的接口以及怎么处理空回滚、幂等、悬挂等异常,最后对蚂蚁金服内部对 TCC 的性能优化点简单介绍,使得 TCC 模式能够满足更高的业务需求。业务各有不同,有些业务能容忍短期不一致,有些业务的操作可以幂等,无论什么样的分布式事务解决方案都有其优缺点,没有一个银弹能够适配所有。...
2022-08-16 16:42:32
788
1
原创 MySQL灵魂十连问
根据场景选择什么字段作分表字段,比如淘宝日订单1000万,用userId作分表字段,数据查询支持到最近6个月的订单,超过6个月的做归档处理,那么6个月的数据量就是18亿,分1024张表,每个表存200W数据,hash(userId)%100找到对应表格。只有事务A提交了事务后,释放了锁,事务B才能进行接下去的操作。从MyISAM所支持的锁中也可以看出,MyISAM是一个支持读读并发,但不支持通用读写并发,写写并发的数据库引擎,所以它更适合用于读多写少的应用场合,一般工程中也用的较少。...
2022-08-15 14:15:37
18134
11
原创 mq消息积压怎么对应
你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了,或者消费的极其极其慢。没有,谁让你第一个方案执行的太慢了,你临时写程序,接入数据来消费,消费一个丢弃一个,都不要了,快速消费掉所有的消息。所以就这事儿,其实线上挺常见的,一般不出,一出就是大case,一般常见于,举个例子,消费端每次消费之后要写mysql,结果mysql挂了,消费端hang那儿了,不动了。关于这个事儿,我们一个一个来梳理吧,先假设一个场景,我们现在消费端出故障了,然后大量消息在mq里积压,现在事故了,慌了。...
2022-08-03 16:11:05
1080
原创 nacos注册中心面试总结
服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。服务同步:Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 leader raf
2022-07-05 14:43:48
2350
4
gps数据介绍.txt
2019-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅