- 博客(11)
- 收藏
- 关注
原创 可观测项目Deepflow源码阅读2 - 数据流&AutoTracing实现
DeepFlow Agent的eBPF模块采用C语言编写,通过perf ringbuffer与Rust主程序通信。其核心数据结构socket_bpf_data包含五元组、进程/协程ID、协议类型等字段。数据处理流程包含生产-消费模型:通过perf buffer接收内核数据,根据CPU核数分配worker线程处理,确保高效利用CPU资源。 AutoTracing功能通过trace_key_t和trace_info_t结构实现无侵入追踪,利用进程/线程ID和协程ID生成唯一trace_id。socket_id由
2025-06-29 23:32:37
437
原创 可观测项目Deepflow源码阅读-AutoMetrics & AutoTagging
摘要 云原生技术的普及带来了观测复杂度的提升,传统监控体系难以应对动态容器环境的数据关联需求。Deepflow作为国内领先的可观测平台,通过AutoTagging、AutoMetrics等核心技术实现了无侵入的指标采集与关联。其AutoTagging功能统一了资源标签体系,结合多级编码机制有效解决了高基数存储问题;AutoMetrics则基于eBPF技术实现了细粒度的流级别观测。这些创新设计使Deepflow能够满足云原生环境下大规模、动态化的可观测需求,为业务系统提供了全景视图、分布式追踪和持续性能分析等
2025-06-28 00:51:35
1218
原创 可观测开源项目:Gala-gopher框架分析
gala-gopher是一款基于eBPF和Java Agent技术的非侵入式观测平台,支持系统和网络指标采集、性能分析及容器场景监控。平台架构包含探针管理、数据采集、IPC通信、数据缓存(IMDB)和输出模块(支持Kafka/Prometheus)。通过子进程方式运行探针,采用IPC进行通信。TCP探针实现包含内核态eBPF采样、用户态数据处理、连接状态管理等功能,支持动态加载和配置更新。平台特别优化了TCP时间戳检测、冷启动连接处理和多容器网络命名空间支持,提供完整的可观测性解决方案。
2025-06-21 23:56:26
560
原创 Linux内存管理MMU与JVM内存模型
本文深入解析了MMU内存管理单元的核心功能与实现原理。首先介绍MMU负责地址转换、内存保护和缓存控制三大功能,通过虚拟内存机制解决硬件资源限制问题。重点阐述了分页机制和多级页表的工作原理,分析内存碎片的产生原因。随后对比Linux进程与JVM内存模型的差异,指出JVM通过移植系统管理功能、采用NIO机制来优化性能。最后通过实际案例,揭示内存不足和泄漏问题的深层原因,包括内核保留内存、线程栈消耗和NIO缓冲机制等因素。全文揭示了操作系统与JVM在内存管理上的协同与优化策略。
2025-06-19 17:36:02
796
原创 可观测道阻且长,坚定本心-方得始终
本文探讨了云计算环境下网络流量的复杂路径与观测挑战。作者从Java工程师转型为云原生可观测从业者,分享了云网络流量分析历程。文章首先对比了简单网络与虚拟化网络的流量路径差异,详细解析了同VPC跨子网三层互通和EIP流量的处理过程,揭示了OVS网桥、DVR等技术在流量转发中的关键作用。针对观测难点,作者进一步剖析了物理网卡数据处理机制、内核态转发路径和虚拟机通信原理,包括DMA、veth pair、Linux Bridge等核心组件的工作原理。文章指出云网络观测面临容器网络、非标操作等更多复杂性,强调需将"黑
2025-06-16 20:35:34
1002
原创 云底座流量基础回顾(OVS、DPDK)
摘要Open vSwitch(OVS)是一种高性能虚拟交换机,由内核态Datapath和用户态组件(如ovs-vswitchd守护进程和ovsdb数据库)组成。它支持OpenFlow流表作为SDN数据平面的核心抽象,并采用快慢路径机制处理流量,首次流量需进行upcall查询流表,MegaFlow技术优化了这一过程。在OpenStack中,OVS与Linux Bridge(qbr)配合使用,前者提供综合网桥功能,后者实现基于iptables的安全组。此外,OVS-DPDK通过用户态轮询(PMD)绕过内核处理
2025-06-15 23:24:01
769
原创 Linux网络基础回顾(2)
DR模式:修改原报文MAC地址,但是需要侵入RealServer的lo口配置vip并忽略vip相关的arp解析请求,可以让返回报文不经过DS,原理是利用内核认为该lo口的ip属于本机以及DS-> RS的通信依赖mac转发。Netfilter大部分操作都是比较简单的,接受、丢弃、转发、排队等,有一些例外,比如conntrack的分片重组或者是NAT,都带有了其他的功能性。NF_IP_LOCAL_IN:经过路由查找后,送往本机(目的地址在本地)的包会通过此钩子。
2025-06-15 18:59:39
862
原创 基础网络知识回顾
OSI模型四层和七层大家都很熟悉了,工作的时候一般还是只分为四层的,其分层的核心还是解耦,一个模块只做一件事层层下来每层都需要负责解析自己部分的报文,在发送时也都需要封装自己的协议格式同样的,在接受时需要层层去掉协议,这个过程叫做分用。
2025-06-14 23:29:18
957
原创 Linux内核追踪机制解析
本文梳理了Linux内核追踪技术的发展历程与技术原理。文章首先指出Linux内核问题排查的复杂性,进而详细介绍了kprobes、uprobes、tracepoint等核心追踪技术,以及它们的工作原理和应用场景。通过对比ftrace、perf等工具的实现差异,阐述了它们各自的设计特点与适用场景。文章特别强调eBPF技术的出现并非替代传统追踪技术,而是通过可编程性提供了更灵活的解决方案。最后,作者根据Brendan Gregg的理论建议,结合实际经验,提供了不同场景下的技术选型建议
2025-06-13 22:41:15
985
原创 eBPF 内核版本适配解决方案
个人理解:想比较好的使用eBPF能力,包括性能和工程上,在较小的投入下,只能支持5.4版本之后内核,至于更低版本的内核,需要考虑引入eBPF究竟为了解决什么问题,perf、systemTap已经可以解决大部分观测场景,至于trace层面的复杂链路追踪,需要考虑到eBPF的投入性价比,以及是否可以真实上生产,它所带来的编程性和工程性是可预见的,与此同时,其性能损耗和对生产环境的影响其实一直没有一个好的答案。(低版本编译的程序,可以在高版本运行,因为2.34保留了一个空的libpthread.so.0)。
2025-06-13 00:37:56
585
原创 mongoDB安装及配置
MongoDB安装及配置mongo安装mongo配置正常执行步骤第一步 创建几个文件夹具体如下:在根目录的data文件夹下创建数据库路径(db目录)、日志路径(log目录)第二步:配置环境变量在cmd中方便访问mongo第三步安装路径下创建配置文件mongo.config,文件内容如下:#数据库路径dbpath = F:\MongoDB\data#日志输出文件路径...
2019-08-26 14:23:13
285
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅