/images/avatar.png

基于 PostgreSQL WAL 构建 CDC 系统:原理与工程实现

序言

数据库中的一行记录发生变化后,影响往往不只停留在数据库内部:

  • 商品和内容发生变化,需要及时更新 Elasticsearch 索引;
  • 用户资料或配置发生变化,需要刷新 Redis 和派生视图;
  • 业务数据需要持续进入 Kafka、数据仓库或数据湖;
  • 账户、权限等关键数据的修改,需要留下审计记录并触发后续流程。

这些场景的下游各不相同,却都依赖同一种能力:持续捕获数据库中的 INSERTUPDATEDELETE,并可靠地把变化传递出去。这就是 CDC(Change Data Capture,变更数据捕获)

AI 时代,程序员会消失吗?

当机器开始编写机器所执行的代码,程序员面对的就不再只是一次工具升级,而是自身生产方式的重构。

引言:真正的问题不是“AI 会不会写代码”

2023 年以后,关于程序员是否会被人工智能取代的讨论迅速升温。最初,AI 只能补全几行代码;随后,它可以生成函数、测试和 SQL;到 2025—2026 年,编程 Agent 已经能够阅读代码仓库、修改多个文件、运行测试并提交 Pull Request。看起来,一条清晰的替代路线正在形成:既然程序员的主要工作是写代码,而 AI 写代码的能力又在持续提升,那么程序员似乎迟早会消失。

系统组件优化的思考框架

我之前的文章里有分享过自己总结的做技术选型的思考框架,本文将会分享一下我总结的做系统组件调优/优化的思考框架。

组件优化的思考框架

常见的互联网架构基本离不开数据库、缓存、消息队列、搜索、数据处理等等各种组件,虽然组件的形态不一、功能不同,但是我仍然把对他们的优化总结归纳为了以下几点:

Kubernetes:CPU 配置、Linux CFS、编程语言的性能问题

Kubernetes CPU 配置 -> Linux CFS

在使用 Kubernetes 时,可以通过 resources.requestsresources.limits 配置资源的请求和限额,例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: app
    image: nginx
    resources:
      requests:
        cpu: "250m"
      limits:
        cpu: "500m"

对容器的资源配置会通过 CRI 组件(如 containerdcri-o 交由更底层的 runckata-container)去设置 Linux 的 cgroup。