- 博客(68)
- 收藏
- 关注
原创 怎么让程序更高效地连起来?
本文将最简单的共享内存开始,讲述共享内存/TCP/DPDK/RDMA/CXL/NVLink/UB 等通信方式的基本原理,探讨如何让程序更高效地连起来。上图为计算机的简易组成,核(Core)是 CPU 的大脑,执行程序的业务逻辑;内存 DRAM 通过 DDR 接口连接到 CPU 内的内存控制器(Memory Controller)中,存放程序运行所需的数据;而网卡 NIC、SSD 等高速外围设备则通过 PCIe 接口接入 CPU,由 PCIe Root Complex 进行协议解析、路由等。在《
2025-10-20 22:06:57
1032
原创 对 Agent-First 数据库的畅想
在《AI Agent 需要什么样的数据库?负载特征能力要求即时创建极短的冷启动时长,提供极佳的用户体验。大量小实例 / 活跃时长不稳定自动弹性伸缩,降低平台成本。反复调试快速 PITR,提供任意时间点的快速数据恢复能力。其中,即时创建、大量小实例、活跃时长不稳定更多的是数据库实例生命周期维度的负载特征。至于 Agent 使用 SQL 查询的特征是怎样的,文中没做太多分析。反复调试与 SQL 查询相关,但文中并没有做定量分析,仍无法回答以下问题:“Agent 需要反复调试多少次才能成功?
2025-09-27 09:50:37
727
原创 OLTP上云,哪种架构最划算?·VLDB‘25
本文介绍的是 VLDB'25 论文《OLTP in the Cloud: Architectures, Tradeoffs, and Cost》,论文系统分析了云上 OLTP 的工作负载,并确定每种负载下成本最优的架构及硬件配置。对于云上 OLTP 数据库选型以及了解数据库量化分析方法具有较好的参考意义。
2025-09-15 07:29:54
897
原创 怎么用CXL加速数据库?· SIGMOD‘25
本文要介绍的是 SIGMOD'25 最佳工业论文《Unlocking the Potential of CXL for Disaggregated Memory in Cloud-Native Databases》。阿里云 PolarDB 团队基于 CXL 实现了 PolarDB 共享内存池,对比原有的 RDMA 方案实现了倍级性能提升。
2025-09-07 11:11:43
838
原创 分离还是统一,这是个问题
摘要:本文探讨了软件系统在业务、模型、平台和基础设施四个层面的演进趋势,揭示了分离与统一并存的现象。业务层从单体架构向微服务演进,呈现分离趋势,而交互入口却趋于统一;模型层在长文本、多模态等能力上走向统一,但内部架构(如MoE)却呈现分离;平台层在资源调度和数据系统上表现出明显的统一趋势,而技术实现仍保持分离。这种看似矛盾的现象背后,反映了系统设计追求专业性与整体效率的动态平衡。
2025-08-03 17:31:02
483
原创 AI Agent需要什么样的数据库?
Databricks 在 2025 年 5 月 14 日正式宣布以 10 亿美元收购开源数据库初创公司 Neon[1][2],它的产品是一款兼容 PostgreSQL 的 Serverless 数据库。Neon 的 slogan 是 “”,其最初的目的是为应用开发者提供一个低成本、开发高效的数据库底座。回顾 Databricks 近两年的收购策略,Databricks 正围绕其 Data + AI 战略迅速补强 AI 短板,所收购的产品已几乎可组成一条完整的 AI 工作流水线。
2025-06-02 23:08:38
1510
原创 走技术路线需要些什么?
程序员的发展,总会遇到一个分叉路口,走技术路线,或者管理路线。程序员总有股技术情怀,相信很多人最初都有坚定走技术路线的想法,但走着走着,最后都走上管理路线。一方面,管理路线是清晰的,且有着大量成功的案例。对于沟通能力强、临危不乱、善于帮助周边同事成长的人来说,似乎成为管理者是一个常见,也是默认的职业发展规划。另一方面,走技术路线,在很多人的理解里,就是不断提升技术能力。但是,这样走了一段路后,很可能就会遇到了向上发展的瓶颈,而转向管理路线。于是就有了所谓“不能一直搞技术”的结论。
2025-03-09 22:35:13
824
原创 为什么CPU不能有更多的核?
为什么CPU不能有更多的核呢?这是一个系统工程的问题,涉及到多种因素的权衡。本文将结合AMD Zen 5 EPYC 9005系列(下文简称Zen 5)的架构,从CPU制造流程讲起,带读者理解现代CPU架构的同时,解释为什么CPU不能有更多的核。
2025-03-02 19:02:54
1499
原创 快速了解生成式AI
随着大模型LLM的大热,生成式AI(GenerativeAI,GenAI)近年来获得了越来越多的关注和普及。如下图所示,生成式AI是AI的一个子领域,演变自深度学习。传统的机器学习基于统计学对数据进行预测;深度学习基于神经网络模拟人脑行为,去执行复杂的任务;而生成式AI则可以从数据中创作,就像我们人类一样。传统AI生成式AI用途专注预测和分类任务从原始数据中创造不存在的内容硬件所需算力较少,能够在各种硬件上运行需要大量算力,通常运行在大规模的计算集群上。训练数据较小的标记数据集。
2025-01-19 15:37:10
1473
原创 深入理解分支预测原理,揭开AMD Zen 5的高性能秘诀
今年,AMD Zen 5架构随着AMD旗下锐龙、霄龙等新一代处理器的发布而亮相。Zen 5对比上一代架构 Zen 4在性能上有了大幅提升,其中,IPC(每时钟周期执行的指令数量)更是提升了16%。在Zen 5 高性能的背后,分支预测器的优化功不可没,其中,对2-ahead分支预测的支持尤为重要。本文将从CPU分支预测原理讲起,试图带大家理解Zen 5在分支预测上的优化,揭开性能提升的秘密。分支预测大体可以分成两部分,分支方向的预测和分支目的地址的预测,本文主要介绍前者。
2024-11-11 22:54:10
2027
1
原创 深入理解单元测试
如果有人问你,“什么是单元测试?”,你可能会想到测试金字塔:测试金字塔从下往上分别是单元测试、集成测试和端到端测试,单元测试通常是面向类或方法级别的测试方法;集成测试则面向服务或模块级别;端到端测试是从最终用户的角度进行测试,测试对象为整个系统。在一个设计良好的系统中,这三类测试的占比就像它们在金字塔中的面积,越往下越高;测试执行速度越往下越快。测试金字塔所表达的意思是,单元测试的执行效率更高,因此我们应依靠大量的单元测试、辅助以少量的集成测试和端到端测试,来保证系统的功能正确。
2024-09-08 21:18:16
3617
原创 深入理解Lambda架构
本文要介绍的是 2015 年 O'Reilly 出版的书籍 [Big Data: Principles and best practices of scalable realtime data systems](https://learning.oreilly.com/library/view/big-data/9781617290343/),书中主要介绍一种常见的大数据架构 —— **Lambda 架构**。Lambda 架构通过批处理和流处理相结合的方法,有效处理了大数据场景下的工作负载。相比以关系型数
2024-07-21 16:11:15
1217
原创 软件架构,一切尽在权衡
本文要介绍的是 2021 年 O'Reilly 出版的书籍 Software Architecture: The Hard Parts
2024-06-16 23:09:59
1199
原创 合作 or 背叛,你怎么选?
《合作的进化》是罗伯特·阿克塞尔罗德的一本博弈论经典之作,作者以“重复囚徒困境”游戏作为切入点,讲述了在与他者的持续交往中,应该选择怎样的合作策略才能得到较好的收益。本书的一个重要结论是,人们相互作用越频繁,合作的可能性就越大。
2023-12-28 23:27:55
1215
原创 【Go实现】实践GoF的23种设计模式:备忘录模式
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外进行保存,以便在未来将对象恢复到原先保存的状态。
2023-11-26 08:33:41
1155
原创 【Go实现】实践GoF的23种设计模式:命令模式
命令模式可将请求转换为一个包含与请求相关的所有信息的对象, 它能将请求参数化、延迟执行、实现 Undo / Redo 操作等
2022-12-22 22:21:42
816
原创 善于使用二阶思维
事情往往不是你想象的那样,有时候,看似解决了问题,却在不经意间,引发了更严重的后果。帮助我们思考、决策、解决问题的最有效方法是,运用二阶思维。
2022-11-20 18:59:30
613
原创 【Go实现】实践GoF的23种设计模式:访问者模式
访问者模式的目的是,解耦数据结构和算法,使得系统能够在不改变现有代码结构的基础上,为对象新增一种新的操作。
2022-10-06 16:27:37
594
1
原创 深入理解 SQL 中的 Grouping Sets 语句
本文首先简单介绍 Grouping Sets 的用法,然后以 Spark SQL 作为切入点,深入解析 Grouping Sets 的实现机制
2022-07-03 14:29:12
5678
2
原创 【Go实现】实践GoF的23种设计模式:装饰者模式
装饰者模式通过组合的方式,提供了能够动态地给对象/模块扩展新功能的能力。理论上,只要没有限制,它可以一直把功能叠加下去,具有很高的灵活性。
2022-06-29 07:50:04
273
原创 【Go实现】实践GoF的23种设计模式:原型模式
原型模式(Prototype Pattern)主要解决对象复制的问题,它的核心就是 Clone() 方法,返回原型对象的复制品。
2022-06-02 23:03:01
297
原创 【Go实现】实践GoF的23种设计模式:抽象工厂模式
上一篇:【Go实现】实践GoF的23种设计模式:工厂方法模式简单的分布式应用系统(示例代码工程):https://github.com/ruanrunxue/Practice-Design-Pattern–Go-Implementation简述上一篇我们介绍了工厂方法模式,本文,我们继续介绍它的兄弟,抽象工厂模式(Abstract Factory Pattern)。在工厂方法模式中,我们通过一个工厂方法接口来创建产品,而创建哪类产品,由具体的工厂对象来决定。抽象工厂模式和工厂方法模式的功能很类似.
2022-05-29 16:17:15
225
原创 【Go实现】实践GoF的23种设计模式:工厂方法模式
工厂方法模式(Factory Method Pattern)将对象创建的逻辑封装起来,为使用者提供一个简单易用的对象创建接口,常用于不指定对象具体类型的情况下创建对象的场景。
2022-05-21 16:07:35
326
原创 用Keynote画出手绘风格的配图
好的配图对文章是一个巨大的加分项,能够让人有看下去的欲望。本文介绍如何使用 Keynote 画出手绘风格的配图。
2022-05-07 23:39:13
1625
原创 【Go实现】实践GoF的23种设计模式:建造者模式
在程序设计中,我们会经常遇到一些复杂的对象,针对这种对象成员较多,创建对象逻辑较为繁琐的场景,非常适合使用建造者模式来进行优化。
2022-05-06 08:12:22
326
原创 从分层架构到微服务架构(五)之服务化架构
SBA 可以看成是单体架构和微服务架构之间的一个折中方案,它也是按照业务领域进行服务划分,但服务划分的粒度相比微服务要更粗。从单体架构演进到 SBA,会比直接演进到微服务架构更加容易。
2022-04-08 22:37:12
3310
原创 【Go实现】实践GoF的23种设计模式:单例模式
单例模式虽然简单易用,但也是最容易被滥用的设计模式。它并不是“银弹”,在实际使用时,还需根据具体的业务场景谨慎使用。
2022-04-05 23:41:21
480
原创 【Go实现】实践GoF的23种设计模式:SOLID原则
如果把设计模式类比为武侠世界里的武功招式,那么SOLID原则就是内功内力。通常来说,先把内功练好,再来学习招式,会达到事半功倍的效果。
2022-03-14 07:38:04
497
原创 假如让你来设计SSL/TLS协议
本文将从设计者的视角介绍如何一步步设计出一个简易版的 SSL/TLS 的过程,在文章的最后,再简单介绍 TLS 1.2 版本的工作机制,以此帮助大家对 SSL/TLS 协议的基本原理有一个更深入的理解。
2022-03-05 23:55:38
11486
原创 实践GoF的23种设计模式:SOLID原则
如果把设计模式类比为武侠世界里的武功招式,那么SOLID原则就是内功内力。通常来说,先把内功练好,再来学习招式,会达到事半功倍的效果
2022-02-26 14:29:38
993
原创 实现DCI架构
前言在面向对象编程的理念里,应用程序是对现实世界的抽象,我们经常会将现实中的事物建模为编程语言中的类/对象(“是什么”),而事物的行为则建模为方法(“做什么”)。面向对象编程有三大基本特性(封装、继承/组合、多态)和五大基本原则(单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口分离原则),但知道这些还并不足以让我们设计出好的程序,于是很多方法论就涌现了出来。近来最火的当属领域驱动设计(DDD),其中战术建模提出的实体、值对象、聚合等建模方法,能够很好的指导我们设计出符合现实世界的领域模型。但
2021-10-10 14:02:55
3159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅