<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wowowoc的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wowowoc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wowowoc]]></copyright><item><title><![CDATA[strace命令+SystemTap脚本排查内存问题]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/148254818</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/148254818</guid><author>wowowoc</author><pubDate>Tue, 27 May 2025 14:26:31 +0800</pubDate><description><![CDATA[strace工具简介与内存问题排查 strace是Linux下强大的系统调用跟踪工具，可监控程序与内核的交互，包括文件/网络操作、信号处理等。通过strace -fp PID -e trace=mmap可追踪内存映射行为，结合SystemTap脚本（如监控4MB的mmap调用）可定位内存泄漏。典型流程：1) strace捕获异常分配；2) SystemTap分析调用栈；3) 结合代码修复问题。工具组合适用于诊断程序挂起、性能瓶颈等场景。]]></description><category></category></item><item><title><![CDATA[拥塞控制算法cubic 和bbr]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/148238940</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/148238940</guid><author>wowowoc</author><pubDate>Mon, 26 May 2025 20:37:49 +0800</pubDate><description><![CDATA[CUBIC和BBR是两种主流的TCP拥塞控制算法。CUBIC基于三次方函数逐步增加窗口，适合高带宽长延迟网络，但依赖丢包信号且恢复较慢。BBR则主动测量瓶颈带宽和最小RTT，不依赖丢包，能快速适应网络变化，在无线和动态网络中表现更优。实验显示，在39ms延迟的异地网络中，BBR比CUBIC提供更稳定的带宽和更少重传，特别适合网络不稳定的场景。两者的选择需根据具体网络环境决定。]]></description><category></category></item><item><title><![CDATA[全局唯一ID——Snowflake算法]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/142850101</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/142850101</guid><author>wowowoc</author><pubDate>Fri, 11 Oct 2024 12:08:55 +0800</pubDate><description><![CDATA[全局唯一性•	唯一 ID：结合时间戳、数据中心 ID、机器 ID 和序列号，确保在分布式系统中生成的 ID 全局唯一。高并发和高性能•	本地生成：ID 在本地生成，无需网络通信，延迟极低。•	高并发：每毫秒可生成 4096 个 ID，支持高并发需求。趋势递增性•	按时间排序：ID 包含时间戳，整体上是趋势递增的，有利于数据库索引和日志排序。可扩展性•	分布式部署：支持多数据中心和多机器部署，方便系统水平扩展。简单易用，开源常见实现。]]></description><category></category></item><item><title><![CDATA[RocksDB系列一：基本概念]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/142315866</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/142315866</guid><author>wowowoc</author><pubDate>Tue, 17 Sep 2024 20:06:18 +0800</pubDate><description><![CDATA[Write-Ahead Log（WAL）是一种类似于数据库日志的机制，用于故障和异常恢复。]]></description><category></category></item><item><title><![CDATA[云数据库AWS Aurora(一)]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/137148568</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/137148568</guid><author>wowowoc</author><pubDate>Sat, 06 Apr 2024 08:11:07 +0800</pubDate><description><![CDATA[首先介绍下AWS一些组件。]]></description><category></category></item><item><title><![CDATA[关于对象存储的若干事]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/135349256</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/135349256</guid><author>wowowoc</author><pubDate>Sun, 07 Jan 2024 15:53:46 +0800</pubDate><description><![CDATA[不同时代的硬件发展，会导致系统的架构巨大变化，比如早期的机械盘，数据库领域较多采用B+树的设计，SSD更适合LSM tree的设计，而目前硬件迭代很多，在很多新型硬件下，原来系统的设计或者假设就不存在了，比如超大内存。企业客户的一个最大需求在于，如何节约成本同时功能完善、性能齐全，传说的既要也要。一些情况不合理，但是有一些情况是可以通过新的设计来满足的，技术服务于业务需求云盘/对象存储各有优缺点，合适的搭配可以达到更好的效果，有点类似于将军指挥，士兵前线，各司其职的思想。]]></description><category></category></item><item><title><![CDATA[从研究生毕业到工作七年感悟]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/135313496</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/135313496</guid><author>wowowoc</author><pubDate>Sun, 31 Dec 2023 10:35:09 +0800</pubDate><description><![CDATA[马上迎来2024年，在新的一年，期待多学习、多看书、多陪伴家人，继续坚持和努力！]]></description><category></category></item><item><title><![CDATA[从微软Cosmos DB浅谈一致性模型]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/134628747</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/134628747</guid><author>wowowoc</author><pubDate>Sun, 26 Nov 2023 20:04:52 +0800</pubDate><description><![CDATA[从微软Cosmos DB浅谈一致性模型]]></description><category></category></item><item><title><![CDATA[eclipse]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/132792448</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/132792448</guid><author>wowowoc</author><pubDate>Sun, 10 Sep 2023 16:21:21 +0800</pubDate><description><![CDATA[F4:  继承树F3:  查看变量、方法、类的定义, 跳到光标所在标识符的定义代码。(Ctrl+左键)在工作空间中查找引用了光标所在标识符的位置。与F3相反的快捷键。当按类定义进行阅读时，当前类方法或者函数在被哪些地方调用切换.h/.cpp文件： 打开Open Resource打开搜索前移/后移，通过代码跳转后，可以通过该移动。]]></description><category></category></item><item><title><![CDATA[分布式数据库 PolarDB-X: An Elastic Distributed Relational Database for Cloud-Native Applications]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/129772675</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/129772675</guid><author>wowowoc</author><pubDate>Sun, 26 Mar 2023 19:17:37 +0800</pubDate><description><![CDATA[云计算正在蓬勃发展，这促使新一代数据库系统需要适应云环境。云原生数据库的发展揭示了三个趋势。第一个趋势是采用多数据中心部署，以便在任何单个站点宕机时仍能正常运行。（可用性和服务连续性要求）第二个趋势是将计算和存储资源分离，即存算分离，以实现更高的弹性和可伸缩性。最后一个趋势，是支持 HTAP，以消除异构数据库中的数据冗余和系统复杂性。为满足这些趋势，该论文设计了名为 PolarDB-X 的分布式关系型数据库，该数据库建立在云原生数据库 PolarDB 之上。]]></description><category></category></item><item><title><![CDATA[浅谈大规模C++工程中一些疑难杂症及解决方案]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/124082501</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/124082501</guid><author>wowowoc</author><pubDate>Sat, 16 Apr 2022 15:04:55 +0800</pubDate><description><![CDATA[疑难杂症
笔者写C++代码好多年，特别近几年在写大规模分布式系统相关，会遇到最头疼的几类问题，特别是新写大模块，或者重构功能基本都会遇到，如下：

内存泄漏
内存写坏
死锁
并发导致状态不对或者结果错误
…
上述几类问题，还可能互相夹杂影响，比如因为并发场景考虑不周全，任务引用计数获取和变化不原子，进而导致内存无法释放，结果不正确。
面对大规模C++工程，总会遇到上述问题，记录一些总结，方便查阅以及后续补充

问题
内存泄漏

检测工具类：比如


...]]></description><category></category></item><item><title><![CDATA[分布式文件系统-Facebook haystack]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/123960973</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/123960973</guid><author>wowowoc</author><pubDate>Mon, 04 Apr 2022 21:41:29 +0800</pubDate><description><![CDATA[0、分布式文件系统
分布式文件系统很常见，主要功能：

存储文档、视频、图像等
作为分布式表格系统的存储层

这类系统很多，比如：
国外系统：GFS-(Google File System)、haystack（Fackbook图片存储系统）国内：淘宝TFS、这些系统架构和设计很多都相似，同时也有细微之处有许多区别，最近因为需要给一个朋友讲解haystack，重读了haystack，记录做下总结

一、背景
Facebook在2012年发布了《Finding a needle in Haystack: Fa.]]></description><category></category></item><item><title><![CDATA[浅谈CAP+ACID+BASE理论]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/123319371</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/123319371</guid><author>wowowoc</author><pubDate>Sun, 27 Mar 2022 22:16:51 +0800</pubDate><description><![CDATA[1. 背景
在大数据存储系统或者各类分布式系统，为了增加系统高可用性，往往会将同一数据存储多份副本。常规做法是三副本，数据复制成多份，带来了很多好处：

高可用性：即使因为机器故障、宕机等原因损失一副本，仍然有其他二个副本提供服务
增加读操作的并发性：比如对于三副本，常用选举算法选出leader-支持读写, 其他两个副本作为Follower可以支持读操作
带来上述好处的同时，也引入了很多问题，比如：
同一数据存在多个副本，在并发的众多客户端读/写请求下，如何维护数据一致性
三副本如何复制数据？在网络分区异常]]></description><category></category></item><item><title><![CDATA[并发/并行编程与分布式系统(2)]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/122774152</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/122774152</guid><author>wowowoc</author><pubDate>Thu, 03 Feb 2022 20:00:38 +0800</pubDate><description><![CDATA[一、线程同步
本节以线程模型为例，总结常见线程同步方式。对于变量而言，从范围可以简单分为两种：

线程局部的变量，比如__thread修饰，只被该线程读取或者修改，不存在并发问题，因此也不存在任何一致性问题
非线程局部的变量，如果都是只读的，本身即使多线程，也不存在一致性问题；当同时涉及到写，才需要某种方式来对这些线程进行同步，保证不同的线程访问变量不会获取到无效的值，同时要解决读写、写读、写写冲突。

比如对于写读场景，当一个线程A修改一个变量，另外存在一个线程B需要读取该变量。如果线程A写操作多于一个存]]></description><category></category></item><item><title><![CDATA[并发/并行编程与分布式系统(1)]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/122769617</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/122769617</guid><author>wowowoc</author><pubDate>Wed, 02 Feb 2022 17:41:53 +0800</pubDate><description><![CDATA[一、介绍
现代复杂的软件系统，使用了单台设备/机器或者多台机器资源，包括内存、CPU、IO、存储等等。比如对于大型的数据分析系统，关注以下几个维度：
１. 分布式：容错性、Replication、负载均衡和调度、Consistency等
2.  并行/并发：并行-并发算法、支持并发的数据结构、同步/异步等等
通过分布式/并发/并行编程技术，核心目的就是为了获取更快的计算速度。本文做一些知识的总结
二、体系结构
2.1 von Neumann Architecture
冯·诺依曼架构，是一种将程序指令存储器和]]></description><category></category></item><item><title><![CDATA[Paxos Made Simple]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/119333119</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/119333119</guid><author>wowowoc</author><pubDate>Sun, 23 Jan 2022 12:27:32 +0800</pubDate><description><![CDATA[简介
Paxos算法是Leslie Lamport在1990提出一个基于消息通信/传递的一致性算法，用于解决在分布式环境中(存在机器宕机、网络异常等问题)，如何快速且正确的在集群内部对某个数据的值达成一致。算法特点：高度容错性、且不会破坏系统的一致性等
Paxos算法历史
Paxos的历史很有意思：

最早在1982年，Lamport在论文The byzantine generals problem，就提出了一种计算机容错理论，
1990年，Lamport提出了一个解决一致性问题的方案，同时给出了数学证明。]]></description><category></category></item><item><title><![CDATA[NFS nfs4_reclaim_open_state lock reclaim failed]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/118764480</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/118764480</guid><author>wowowoc</author><pubDate>Thu, 15 Jul 2021 17:27:42 +0800</pubDate><description><![CDATA[背景
最近看了比较奇怪的问题，挂载共享了一个NFS，进程会持久化数据到NFS，但是突然开始有一个任务的进度都不动了，查看日志发现是lock报错资源不可用
排查

之前怀疑有并发的场景，导致资源卡住不释放，导致其他lock无法成功
看调度没什么问题，通过看日志，看到在某个时间，全部lock失败，不太像并发
dmesg -T| grep NFS
sudo grep NFS /var/log/messages
都看到大量NFS nfs4_reclaim_open_state lock reclaim failed]]></description><category></category></item><item><title><![CDATA[Linux dlopen加载rocksdb.so coredump]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/118543643</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/118543643</guid><author>wowowoc</author><pubDate>Wed, 07 Jul 2021 11:53:24 +0800</pubDate><description><![CDATA[一、背景
最近使用rocksdb遇到一个比较奇怪的问题，在虚拟机部署一个应用，通过dlopen加载rocksdb动态库会core dump，但是在其他环境都不可复现
二、原因

gdb看堆栈比较奇怪
__static_initialization_and_destuction --rocksdb.so
同时看到Illegal instructions引起的signal
怀疑环境有点问题

rocksdb
rocksdb的官方文档——install

By default the binary we prod]]></description><category></category></item><item><title><![CDATA[gcore调试一个并发问题]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/114871146</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/114871146</guid><author>wowowoc</author><pubDate>Tue, 16 Mar 2021 11:12:24 +0800</pubDate><description><![CDATA[一、现象
最近测试发现了任务卡住的问题，比较有意思，记录一下
现象简单描述下：

数据最终无法输出
通过日志发现有一个模块A任务统计长期增长，但是消费的统计长期不动，怀疑卡住了
pstack进程，确认卡住了，如下：

1621 Thread 2 (Thread 0x7f0ac81c8700 (LWP 26481)):
1622 #0  0x00007f0ccf785d62 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.]]></description><category></category></item><item><title><![CDATA[gdb调试二进制[依赖动态库]]]></title><link>https://blog.youkuaiyun.com/wowowoc/article/details/114491230</link><guid>https://blog.youkuaiyun.com/wowowoc/article/details/114491230</guid><author>wowowoc</author><pubDate>Sun, 07 Mar 2021 17:49:53 +0800</pubDate><description><![CDATA[记录下gdb调试二进制依赖的动态库，步骤：

指定环境变量：export LD_LIBRARY_PATH=./path…
gdb main(二进制进程)
指定动态库代码路径：dir /home/…[指定代码路径]
设置二进制运行依赖参数（如果存在的话）：  set args  …
加断点：b *.cpp:100， 这里断点可以打到动态库的文件中
r运行


...]]></description><category></category></item></channel></rss>