<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>gettzen</title>
  
  <subtitle>gettzen</subtitle>
  <link href="https://gettzen.com/atom.xml" rel="self"/>
  
  <link href="https://gettzen.com/"/>
  <updated>2026-01-16T05:50:56.178Z</updated>
  <id>https://gettzen.com/</id>
  
  <author>
    <name>gettzen</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>构建异构系统统一可观测性平面 APISIX 日志插件与 OpenSearch 的集成架构</title>
    <link href="https://gettzen.com/9030615241/"/>
    <id>https://gettzen.com/9030615241/</id>
    <published>2023-11-20T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.178Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们面临的局面并不罕见：一个历经数年演进的系统，核心业务逻辑分散在两个主要技术栈中——一个是用 Ruby on Rails 编写的庞大单体应用，负责处理核心交易和用户管理；另一个则是由多个 PHP-FPM</summary>
        
      
    
    
    
    <category term="架构设计" scheme="https://gettzen.com/categories/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/"/>
    
    
    <category term="APISIX" scheme="https://gettzen.com/tags/APISIX/"/>
    
    <category term="OpenSearch" scheme="https://gettzen.com/tags/OpenSearch/"/>
    
    <category term="Ruby on Rails" scheme="https://gettzen.com/tags/Ruby-on-Rails/"/>
    
    <category term="PHP" scheme="https://gettzen.com/tags/PHP/"/>
    
    <category term="Turbopack" scheme="https://gettzen.com/tags/Turbopack/"/>
    
  </entry>
  
  <entry>
    <title>基于 Express 与 Redis Streams 构建可水平扩展的 WebRTC 信令服务器</title>
    <link href="https://gettzen.com/0271448449/"/>
    <id>https://gettzen.com/0271448449/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.174Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最初的 WebRTC 信令服务器原型简单得可笑，一个 Node.js 进程，一个全局的 &lt;code&gt;Map&lt;/code&gt; 对象，&lt;code&gt;roomId&lt;/code&gt; 作为键，一个 &lt;code&gt;Set&lt;/code&gt; 包含所有客户端的 WebSocket</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="Express.js" scheme="https://gettzen.com/tags/Express-js/"/>
    
    <category term="Redis Streams" scheme="https://gettzen.com/tags/Redis-Streams/"/>
    
    <category term="WebRTC" scheme="https://gettzen.com/tags/WebRTC/"/>
    
    <category term="Node.js" scheme="https://gettzen.com/tags/Node-js/"/>
    
    <category term="分布式系统" scheme="https://gettzen.com/tags/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/"/>
    
  </entry>
  
  <entry>
    <title>构建基于Couchbase与UnoCSS的Linkerd服务网格实时拓扑视图</title>
    <link href="https://gettzen.com/1165101036/"/>
    <id>https://gettzen.com/1165101036/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.174Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;h3 id=&quot;定义问题：超越传统监控的实时拓扑可观测性&quot;&gt;&lt;a href=&quot;#定义问题：超越传统监控的实时拓扑可观测性&quot; class=&quot;headerlink&quot;</summary>
        
      
    
    
    
    <category term="云原生" scheme="https://gettzen.com/categories/%E4%BA%91%E5%8E%9F%E7%94%9F/"/>
    
    
    <category term="OCI" scheme="https://gettzen.com/tags/OCI/"/>
    
    <category term="UnoCSS" scheme="https://gettzen.com/tags/UnoCSS/"/>
    
    <category term="Couchbase" scheme="https://gettzen.com/tags/Couchbase/"/>
    
    <category term="Linkerd" scheme="https://gettzen.com/tags/Linkerd/"/>
    
    <category term="服务网格" scheme="https://gettzen.com/tags/%E6%9C%8D%E5%8A%A1%E7%BD%91%E6%A0%BC/"/>
    
  </entry>
  
  <entry>
    <title>利用自定义Babel插件为WebRTC构建可动态加载的LLM智能体框架</title>
    <link href="https://gettzen.com/1707995846/"/>
    <id>https://gettzen.com/1707995846/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.175Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们面临一个棘手的挑战：如何在已建立的 WebRTC 对等连接中，动态注入复杂的、具备 AI</summary>
        
      
    
    
    
    <category term="前端架构" scheme="https://gettzen.com/categories/%E5%89%8D%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="WebRTC" scheme="https://gettzen.com/tags/WebRTC/"/>
    
    <category term="Babel" scheme="https://gettzen.com/tags/Babel/"/>
    
    <category term="LLM" scheme="https://gettzen.com/tags/LLM/"/>
    
    <category term="插件化" scheme="https://gettzen.com/tags/%E6%8F%92%E4%BB%B6%E5%8C%96/"/>
    
    <category term="编译器" scheme="https://gettzen.com/tags/%E7%BC%96%E8%AF%91%E5%99%A8/"/>
    
  </entry>
  
  <entry>
    <title>构建Go语言驱动的Saga分布式事务协调器并集成tRPC与Vite前端</title>
    <link href="https://gettzen.com/2308647775/"/>
    <id>https://gettzen.com/2308647775/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.175Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;从单体架构向微服务拆分时，一个原本简单的数据库事务操作会迅速演变成一个棘手的分布式一致性问题。设想一个用户注册流程，它需要原子性地完成三个操作：在&lt;code&gt;user-service&lt;/code&gt;中创建用户、在&lt;code&gt;billing-service&lt;/code&gt;中创建试</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="UnoCSS" scheme="https://gettzen.com/tags/UnoCSS/"/>
    
    <category term="Go" scheme="https://gettzen.com/tags/Go/"/>
    
    <category term="Saga Pattern" scheme="https://gettzen.com/tags/Saga-Pattern/"/>
    
    <category term="tRPC" scheme="https://gettzen.com/tags/tRPC/"/>
    
    <category term="Vite" scheme="https://gettzen.com/tags/Vite/"/>
    
  </entry>
  
  <entry>
    <title>为 Ruby Fastify 应用构建基于 Tekton 的缓存优化型 GitOps 交付流水线</title>
    <link href="https://gettzen.com/2407092861/"/>
    <id>https://gettzen.com/2407092861/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.175Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;团队的 Ruby 服务构建速度已经成了一个无法忽视的瓶颈。每次代码合并到主干，CI 流水线都要从零开始执行 &lt;code&gt;bundle install&lt;/code&gt;，在拥有上百个 Gem 的项目中，这个过程轻易就能耗掉五到十分钟。接着，&lt;code&gt;docker</summary>
        
      
    
    
    
    <category term="DevOps" scheme="https://gettzen.com/categories/DevOps/"/>
    
    
    <category term="GitHub" scheme="https://gettzen.com/tags/GitHub/"/>
    
    <category term="CI/CD" scheme="https://gettzen.com/tags/CI-CD/"/>
    
    <category term="GitOps" scheme="https://gettzen.com/tags/GitOps/"/>
    
    <category term="Tekton" scheme="https://gettzen.com/tags/Tekton/"/>
    
    <category term="Ruby" scheme="https://gettzen.com/tags/Ruby/"/>
    
    <category term="Fastify" scheme="https://gettzen.com/tags/Fastify/"/>
    
  </entry>
  
  <entry>
    <title>构建异构实时系统：Rust WebRTC 服务集成 Micronaut SAML 身份认证的端到端实现</title>
    <link href="https://gettzen.com/2787615312/"/>
    <id>https://gettzen.com/2787615312/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.175Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;h3 id=&quot;技术痛点：为高性能-Rust-服务嫁接企业级-SAML-认证&quot;&gt;&lt;a href=&quot;#技术痛点：为高性能-Rust-服务嫁接企业级-SAML-认证&quot; class=&quot;headerlink&quot; title=&quot;技术痛点：为高性能 Rust 服务嫁接企业级 SAML</summary>
        
      
    
    
    
    <category term="分布式架构" scheme="https://gettzen.com/categories/%E5%88%86%E5%B8%83%E5%BC%8F%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="WebRTC" scheme="https://gettzen.com/tags/WebRTC/"/>
    
    <category term="SAML" scheme="https://gettzen.com/tags/SAML/"/>
    
    <category term="Rust" scheme="https://gettzen.com/tags/Rust/"/>
    
    <category term="Micronaut" scheme="https://gettzen.com/tags/Micronaut/"/>
    
    <category term="测试" scheme="https://gettzen.com/tags/%E6%B5%8B%E8%AF%95/"/>
    
  </entry>
  
  <entry>
    <title>在 GKE 上为 Scrum 团队构建 PostgreSQL Operator 实现数据库即服务</title>
    <link href="https://gettzen.com/3239828016/"/>
    <id>https://gettzen.com/3239828016/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.176Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们团队的 Scrum 流程一度被数据库 provisioning 卡住了。每个 Sprint，为了开发和测试新功能，我们需要创建多个独立的数据库实例。最初的流程依赖于手动执行 &lt;code&gt;gcloud sql instances create&lt;/code&gt;</summary>
        
      
    
    
    
    <category term="云原生" scheme="https://gettzen.com/categories/%E4%BA%91%E5%8E%9F%E7%94%9F/"/>
    
    
    <category term="Scrum" scheme="https://gettzen.com/tags/Scrum/"/>
    
    <category term="数据库" scheme="https://gettzen.com/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/"/>
    
    <category term="GCP GKE" scheme="https://gettzen.com/tags/GCP-GKE/"/>
    
    <category term="Kubernetes" scheme="https://gettzen.com/tags/Kubernetes/"/>
    
    <category term="Operator" scheme="https://gettzen.com/tags/Operator/"/>
    
  </entry>
  
  <entry>
    <title>使用 Tekton 与 Kotlin 自定义任务为 Android 开发团队实现 CockroachDB 数据库的自动化编排</title>
    <link href="https://gettzen.com/3247525978/"/>
    <id>https://gettzen.com/3247525978/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.176Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们团队面临一个日益棘手的瓶颈：移动端（主要是Android）的特性开发严重依赖后端服务的并行演进，而每个特性分支都需要一个隔离的、包含特定数据集的数据库环境进行联调测试。我们使用的数据库是</summary>
        
      
    
    
    
    <category term="云原生与DevOps" scheme="https://gettzen.com/categories/%E4%BA%91%E5%8E%9F%E7%94%9F%E4%B8%8EDevOps/"/>
    
    
    <category term="Tekton" scheme="https://gettzen.com/tags/Tekton/"/>
    
    <category term="CockroachDB" scheme="https://gettzen.com/tags/CockroachDB/"/>
    
    <category term="Kotlin" scheme="https://gettzen.com/tags/Kotlin/"/>
    
    <category term="Android 开发" scheme="https://gettzen.com/tags/Android-%E5%BC%80%E5%8F%91/"/>
    
    <category term="构建与工具" scheme="https://gettzen.com/tags/%E6%9E%84%E5%BB%BA%E4%B8%8E%E5%B7%A5%E5%85%B7/"/>
    
  </entry>
  
  <entry>
    <title>在GKE上为多租户生成式AI服务构建基于JWT和InfluxDB的安全遥测管道</title>
    <link href="https://gettzen.com/3730978069/"/>
    <id>https://gettzen.com/3730978069/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.176Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们面临的挑战是为部署在GKE上的一个多租户生成式AI推理服务设计并实现一套遥测系统。该系统不仅要能处理由模型推理产生的高基数（high-cardinality）时序数据，还必须保证严格的租户隔离和安全性。具体来说，每个API请求都携带了租户ID、用户ID和模型版本等信息，</summary>
        
      
    
    
    
    <category term="云原生" scheme="https://gettzen.com/categories/%E4%BA%91%E5%8E%9F%E7%94%9F/"/>
    
    
    <category term="GCP GKE" scheme="https://gettzen.com/tags/GCP-GKE/"/>
    
    <category term="生成式AI" scheme="https://gettzen.com/tags/%E7%94%9F%E6%88%90%E5%BC%8FAI/"/>
    
    <category term="InfluxDB" scheme="https://gettzen.com/tags/InfluxDB/"/>
    
    <category term="JWT" scheme="https://gettzen.com/tags/JWT/"/>
    
  </entry>
  
  <entry>
    <title>利用强化学习与事件驱动架构为 Crossplane 基础设施构建自主 FinOps 控制平面</title>
    <link href="https://gettzen.com/4231071172/"/>
    <id>https://gettzen.com/4231071172/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.176Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;在生产环境中，单纯依赖 Kubernetes HPA (Horizontal Pod Autoscaler) 这类基于阈值的反应式自动伸缩是远远不够的。它无法在成本、性能和稳定性之间做出智能权衡，尤其是在面对波动的云资源价格（如 Spot</summary>
        
      
    
    
    
    <category term="云原生" scheme="https://gettzen.com/categories/%E4%BA%91%E5%8E%9F%E7%94%9F/"/>
    
    
    <category term="强化学习" scheme="https://gettzen.com/tags/%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/"/>
    
    <category term="事件驱动架构" scheme="https://gettzen.com/tags/%E4%BA%8B%E4%BB%B6%E9%A9%B1%E5%8A%A8%E6%9E%B6%E6%9E%84/"/>
    
    <category term="Crossplane" scheme="https://gettzen.com/tags/Crossplane/"/>
    
    <category term="Pulumi" scheme="https://gettzen.com/tags/Pulumi/"/>
    
    <category term="FinOps" scheme="https://gettzen.com/tags/FinOps/"/>
    
  </entry>
  
  <entry>
    <title>使用 Lua 和 OpenResty 构建一个可由前端实时管理的动态 Web 防火墙</title>
    <link href="https://gettzen.com/5579681929/"/>
    <id>https://gettzen.com/5579681929/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.177Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;静态的防火墙规则集正在成为我们运维流程中的一个瓶颈。每次更新IP黑名单、调整某个API的速率限制，或是紧急封堵一个新发现的扫描特征，都意味着修改配置文件、推送到配置中心、然后逐台服务器执行&lt;code&gt;nginx -s</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="前端" scheme="https://gettzen.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="Lua" scheme="https://gettzen.com/tags/Lua/"/>
    
    <category term="防火墙" scheme="https://gettzen.com/tags/%E9%98%B2%E7%81%AB%E5%A2%99/"/>
    
    <category term="OpenResty" scheme="https://gettzen.com/tags/OpenResty/"/>
    
    <category term="Redis" scheme="https://gettzen.com/tags/Redis/"/>
    
  </entry>
  
  <entry>
    <title>构建跨语言 AI 推理总线：集成 ActiveMQ STOMP、Python 数据处理与 Phoenix Channels</title>
    <link href="https://gettzen.com/4465152967/"/>
    <id>https://gettzen.com/4465152967/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.176Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;项目初期，我们面临一个典型的异构系统集成难题。核心业务由一套稳定的 Java 系统承载，多年来一直通过 ActiveMQ 进行系统间的事件通知。现在，数据科学团队需要消费这些事件，用他们最新的 Python 模型进行实时推理。同时，运营团队要求一个现代化的 Web</summary>
        
      
    
    
    
    <category term="分布式架构" scheme="https://gettzen.com/categories/%E5%88%86%E5%B8%83%E5%BC%8F%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="ActiveMQ" scheme="https://gettzen.com/tags/ActiveMQ/"/>
    
    <category term="Phoenix" scheme="https://gettzen.com/tags/Phoenix/"/>
    
    <category term="Python" scheme="https://gettzen.com/tags/Python/"/>
    
    <category term="AI" scheme="https://gettzen.com/tags/AI/"/>
    
    <category term="数据科学与大数据" scheme="https://gettzen.com/tags/%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE/"/>
    
    <category term="Elixir" scheme="https://gettzen.com/tags/Elixir/"/>
    
  </entry>
  
  <entry>
    <title>基于Go与DSL为Tyk网关实现动态访问策略引擎并集成Svelte管理前端</title>
    <link href="https://gettzen.com/6049859981/"/>
    <id>https://gettzen.com/6049859981/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.177Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;微服务架构下，硬编码在各个服务内部的访问控制逻辑是一场维护噩梦。每次权限模型的微调都可能触发多个服务的重新部署。将授权逻辑上移至API网关是标准解法，但Tyk自带的JWT声明校验、Scope控制等机制，在面对复杂多变的业务规则时，往往显得力不从心。例如，“只允许‘经理’角色</summary>
        
      
    
    
    
    <category term="API网关" scheme="https://gettzen.com/categories/API%E7%BD%91%E5%85%B3/"/>
    
    
    <category term="Go" scheme="https://gettzen.com/tags/Go/"/>
    
    <category term="Tyk" scheme="https://gettzen.com/tags/Tyk/"/>
    
    <category term="Pinia" scheme="https://gettzen.com/tags/Pinia/"/>
    
    <category term="Svelte" scheme="https://gettzen.com/tags/Svelte/"/>
    
    <category term="编程语言" scheme="https://gettzen.com/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/"/>
    
    <category term="DSL" scheme="https://gettzen.com/tags/DSL/"/>
    
  </entry>
  
  <entry>
    <title>基于 Buildah 实现 PyTorch 数据处理管道的容器化与供应链安全加固</title>
    <link href="https://gettzen.com/5687463173/"/>
    <id>https://gettzen.com/5687463173/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.177Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;一个&lt;code&gt;.pth&lt;/code&gt;模型文件在生产环境中就像一个黑盒。我们知道它的输入和输出，但它的训练过程、依赖环境、甚至是训练数据的确切版本，往往随着时间的推移而变得模糊不清。当需要审计或复现一个模型的行为时，这种信息的缺失是致命的。在真实项目中，我们曾面临一个棘手的</summary>
        
      
    
    
    
    <category term="DevOps" scheme="https://gettzen.com/categories/DevOps/"/>
    
    
    <category term="CI/CD" scheme="https://gettzen.com/tags/CI-CD/"/>
    
    <category term="Python" scheme="https://gettzen.com/tags/Python/"/>
    
    <category term="Buildah" scheme="https://gettzen.com/tags/Buildah/"/>
    
    <category term="PyTorch" scheme="https://gettzen.com/tags/PyTorch/"/>
    
    <category term="数据处理" scheme="https://gettzen.com/tags/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/"/>
    
    <category term="DevSecOps" scheme="https://gettzen.com/tags/DevSecOps/"/>
    
    <category term="Gatsby" scheme="https://gettzen.com/tags/Gatsby/"/>
    
  </entry>
  
  <entry>
    <title>基于 OpenTelemetry 构建 Gatsby、Zustand 与 C# API Gateway 的统一可观测性链路</title>
    <link href="https://gettzen.com/6201470645/"/>
    <id>https://gettzen.com/6201470645/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.177Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;一个前端性能问题工单摆在了桌面上：用户反馈在我们的 Gatsby 应用中，点击“加载仪表盘”后，页面会卡顿 5-8 秒才显示数据。前端团队通过 Chrome DevTools 分析，发现一个对 &lt;code&gt;/api/v1/dashboard/main&lt;/code&gt; 的请求</summary>
        
      
    
    
    
    <category term="可观测性" scheme="https://gettzen.com/categories/%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7/"/>
    
    
    <category term="Gatsby" scheme="https://gettzen.com/tags/Gatsby/"/>
    
    <category term="OpenTelemetry" scheme="https://gettzen.com/tags/OpenTelemetry/"/>
    
    <category term="C#" scheme="https://gettzen.com/tags/C/"/>
    
    <category term="Zustand" scheme="https://gettzen.com/tags/Zustand/"/>
    
    <category term="API Gateway" scheme="https://gettzen.com/tags/API-Gateway/"/>
    
  </entry>
  
  <entry>
    <title>构建服务于 Next.js 前端的近实时数据管道 Apache Hudi 与 ClickHouse 的架构权衡</title>
    <link href="https://gettzen.com/6705251885/"/>
    <id>https://gettzen.com/6705251885/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.177Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们需要一个直接面向用户的分析仪表盘，它必须在亚秒级内响应复杂的查询，同时后端数据平台需要支持对海量事件流的更新、删除和历史回溯。这是一个典型的、存在于现代数据应用中的核心矛盾：分析查询的速度与数据湖的灵活性和可维护性之间的冲突。&lt;/p&gt;
&lt;p&gt;直接将事件流写入</summary>
        
      
    
    
    
    <category term="数据架构" scheme="https://gettzen.com/categories/%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="Apache Hudi" scheme="https://gettzen.com/tags/Apache-Hudi/"/>
    
    <category term="ClickHouse" scheme="https://gettzen.com/tags/ClickHouse/"/>
    
    <category term="Next.js" scheme="https://gettzen.com/tags/Next-js/"/>
    
    <category term="Vercel Functions" scheme="https://gettzen.com/tags/Vercel-Functions/"/>
    
    <category term="Valtio" scheme="https://gettzen.com/tags/Valtio/"/>
    
  </entry>
  
  <entry>
    <title>在读写分离架构下保障 BDD 场景一致性的 GitOps 实践</title>
    <link href="https://gettzen.com/7622341237/"/>
    <id>https://gettzen.com/7622341237/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.178Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;一个看似简单的 BDD (行为驱动开发) 场景在预生产环境频繁失败，而它在开发环境的集成测试中却始终稳定通过。问题场景的 Gherkin 描述如下：&lt;/p&gt;
&lt;pre class=&quot;line-numbers language-gherkin&quot;</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="MyBatis" scheme="https://gettzen.com/tags/MyBatis/"/>
    
    <category term="BDD" scheme="https://gettzen.com/tags/BDD/"/>
    
    <category term="CI/CD 与 GitOps" scheme="https://gettzen.com/tags/CI-CD-%E4%B8%8E-GitOps/"/>
    
    <category term="读写分离" scheme="https://gettzen.com/tags/%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB/"/>
    
    <category term="React Native" scheme="https://gettzen.com/tags/React-Native/"/>
    
  </entry>
  
  <entry>
    <title>在 Nomad 上为移动后端实现一个 Serverless Swift WASI 运行时</title>
    <link href="https://gettzen.com/8425490236/"/>
    <id>https://gettzen.com/8425490236/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.178Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;业务逻辑的动态化是移动端开发一个绕不开的话题。将易变的业务规则硬编码在 Android</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="Android 开发" scheme="https://gettzen.com/tags/Android-%E5%BC%80%E5%8F%91/"/>
    
    <category term="Serverless" scheme="https://gettzen.com/tags/Serverless/"/>
    
    <category term="Nomad" scheme="https://gettzen.com/tags/Nomad/"/>
    
    <category term="Swift" scheme="https://gettzen.com/tags/Swift/"/>
    
    <category term="WebAssembly" scheme="https://gettzen.com/tags/WebAssembly/"/>
    
    <category term="WASI" scheme="https://gettzen.com/tags/WASI/"/>
    
  </entry>
  
  <entry>
    <title>构建从数据库变更到前端UI的实时数据管道</title>
    <link href="https://gettzen.com/8766367753/"/>
    <id>https://gettzen.com/8766367753/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.178Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;最初的需求听起来很简单：在一个内部运营看板上实时展示业务数据的变化。但“实时”这个词，是所有麻烦的开始。轮询方案第一时间就被否决了，它会给数据库和后端带来无法接受的周期性压力，并且延迟完全不可控。我们需要一个真正的推送模型，一个从数据源头触发的、事件驱动的架构。&lt;/p&gt;
&lt;</summary>
        
      
    
    
    
    <category term="数据工程" scheme="https://gettzen.com/categories/%E6%95%B0%E6%8D%AE%E5%B7%A5%E7%A8%8B/"/>
    
    
    <category term="数据处理" scheme="https://gettzen.com/tags/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86/"/>
    
    <category term="Elasticsearch" scheme="https://gettzen.com/tags/Elasticsearch/"/>
    
    <category term="React" scheme="https://gettzen.com/tags/React/"/>
    
    <category term="WebSockets" scheme="https://gettzen.com/tags/WebSockets/"/>
    
    <category term="CDC" scheme="https://gettzen.com/tags/CDC/"/>
    
  </entry>
  
  <entry>
    <title>使用 Rust 与 WASI 为 Micronaut 应用构建高性能且安全的插件系统</title>
    <link href="https://gettzen.com/7116315441/"/>
    <id>https://gettzen.com/7116315441/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.178Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们的核心业务运行在一个基于 Micronaut 的 JVM 服务上，一直很稳定。但最近一个需求打破了这种平静：我们需要允许第三方合作伙伴动态注入自定义的数据处理逻辑。最初的讨论很直接，要么为每个合作伙伴部署一个独立的微服务，要么硬着头皮上</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="Rust" scheme="https://gettzen.com/tags/Rust/"/>
    
    <category term="Micronaut" scheme="https://gettzen.com/tags/Micronaut/"/>
    
    <category term="WebAssembly" scheme="https://gettzen.com/tags/WebAssembly/"/>
    
    <category term="WASI" scheme="https://gettzen.com/tags/WASI/"/>
    
    <category term="React" scheme="https://gettzen.com/tags/React/"/>
    
    <category term="NoSQL" scheme="https://gettzen.com/tags/NoSQL/"/>
    
  </entry>
  
  <entry>
    <title>基于 Babel AST 与 Seaborn 的国际化复杂度可视化分析器构建实践</title>
    <link href="https://gettzen.com/9293185175/"/>
    <id>https://gettzen.com/9293185175/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.178Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;h3 id=&quot;技术痛点：失控的国际化（i18n）文案&quot;&gt;&lt;a href=&quot;#技术痛点：失控的国际化（i18n）文案&quot; class=&quot;headerlink&quot;</summary>
        
      
    
    
    
    <category term="工程化" scheme="https://gettzen.com/categories/%E5%B7%A5%E7%A8%8B%E5%8C%96/"/>
    
    
    <category term="Babel" scheme="https://gettzen.com/tags/Babel/"/>
    
    <category term="Seaborn" scheme="https://gettzen.com/tags/Seaborn/"/>
    
    <category term="NLP" scheme="https://gettzen.com/tags/NLP/"/>
    
    <category term="AST" scheme="https://gettzen.com/tags/AST/"/>
    
    <category term="静态分析" scheme="https://gettzen.com/tags/%E9%9D%99%E6%80%81%E5%88%86%E6%9E%90/"/>
    
  </entry>
  
  <entry>
    <title>Jib 驱动的 Java 容器化与 Chakra UI 前端在 Scrum 迭代中的 CI 效能提升实录</title>
    <link href="https://gettzen.com/0413178428/"/>
    <id>https://gettzen.com/0413178428/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.174Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;又一个周三的下午，我们团队的 Sprint 评审会刚刚结束。这个迭代交付了几个关键业务功能，但整个团队的情绪并不高涨。在紧接着的回顾会议上，问题很快浮出水面：我们的 CI/CD 流水线太慢了。对于一个追求快速迭代的 Scrum</summary>
        
      
    
    
    
    <category term="DevOps" scheme="https://gettzen.com/categories/DevOps/"/>
    
    
    <category term="CI/CD" scheme="https://gettzen.com/tags/CI-CD/"/>
    
    <category term="Scrum" scheme="https://gettzen.com/tags/Scrum/"/>
    
    <category term="Jib" scheme="https://gettzen.com/tags/Jib/"/>
    
    <category term="Chakra UI" scheme="https://gettzen.com/tags/Chakra-UI/"/>
    
    <category term="Monorepo" scheme="https://gettzen.com/tags/Monorepo/"/>
    
  </entry>
  
  <entry>
    <title>构建高吞吐量异步科学计算管道集成Solid.js Celery与读写分离数据库</title>
    <link href="https://gettzen.com/1363483437/"/>
    <id>https://gettzen.com/1363483437/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.174Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们的初始系统是一个标准的单体Web应用，用户通过界面提交参数，后端同步执行一个基于SciPy的蒙特卡洛模拟。当模拟规模较小时，一切尚可。但随着计算复杂度的增加，请求处理时间从几秒飙升到数分钟，直接导致HTTP网关超时。前端界面完全冻结，用户无法进行任何操作，也无法得知计算</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="Python" scheme="https://gettzen.com/tags/Python/"/>
    
    <category term="读写分离" scheme="https://gettzen.com/tags/%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB/"/>
    
    <category term="Solid.js" scheme="https://gettzen.com/tags/Solid-js/"/>
    
    <category term="Celery" scheme="https://gettzen.com/tags/Celery/"/>
    
    <category term="SciPy" scheme="https://gettzen.com/tags/SciPy/"/>
    
    <category term="WebSocket" scheme="https://gettzen.com/tags/WebSocket/"/>
    
  </entry>
  
  <entry>
    <title>利用eBPF与LevelDB构建对OpenCV应用的零侵入式性能剖析器</title>
    <link href="https://gettzen.com/1422484739/"/>
    <id>https://gettzen.com/1422484739/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.175Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;一个棘手的线上问题摆在了面前：一个处理实时视频流的C++服务，其核心依赖OpenCV进行图像解码和分析，在高峰期表现出无法预测的延迟抖动。传统的应用性能监控（APM）工具要么侵入性太强，需要修改大量遗留代码；要么其用户态的测量粒度太粗，无法捕捉到从网络包进入内核到应用层处理</summary>
        
      
    
    
    
    <category term="系统监控" scheme="https://gettzen.com/categories/%E7%B3%BB%E7%BB%9F%E7%9B%91%E6%8E%A7/"/>
    
    
    <category term="eBPF" scheme="https://gettzen.com/tags/eBPF/"/>
    
    <category term="LevelDB" scheme="https://gettzen.com/tags/LevelDB/"/>
    
    <category term="OpenCV" scheme="https://gettzen.com/tags/OpenCV/"/>
    
    <category term="可观测性" scheme="https://gettzen.com/tags/%E5%8F%AF%E8%A7%82%E6%B5%8B%E6%80%A7/"/>
    
    <category term="性能剖析" scheme="https://gettzen.com/tags/%E6%80%A7%E8%83%BD%E5%89%96%E6%9E%90/"/>
    
  </entry>
  
  <entry>
    <title>集成依赖扫描与MLflow构建一个隔离且安全的微服务化模型发布网关</title>
    <link href="https://gettzen.com/9180440924/"/>
    <id>https://gettzen.com/9180440924/</id>
    <published>2023-10-27T10:30:00.000Z</published>
    <updated>2026-01-16T05:50:56.178Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;在一个成熟的内部开发者平台（IDP）中，赋能机器学习团队快速、安全地将模型推向生产环境，是衡量平台价值的关键指标。然而，数据科学家的工作流与生产环境的运维要求之间存在天然的鸿沟。MLflow极大地简化了模型实验跟踪与版本管理，但它本身并不解决部署过程中的安全合规与环境一致性</summary>
        
      
    
    
    
    <category term="平台工程" scheme="https://gettzen.com/categories/%E5%B9%B3%E5%8F%B0%E5%B7%A5%E7%A8%8B/"/>
    
    
    <category term="微服务" scheme="https://gettzen.com/tags/%E5%BE%AE%E6%9C%8D%E5%8A%A1/"/>
    
    <category term="MLflow" scheme="https://gettzen.com/tags/MLflow/"/>
    
    <category term="CSS Modules" scheme="https://gettzen.com/tags/CSS-Modules/"/>
    
    <category term="依赖扫描" scheme="https://gettzen.com/tags/%E4%BE%9D%E8%B5%96%E6%89%AB%E6%8F%8F/"/>
    
  </entry>
  
  <entry>
    <title>使用Raft与Chef实现具备自愈能力的数据库分片元数据管理</title>
    <link href="https://gettzen.com/4214912875/"/>
    <id>https://gettzen.com/4214912875/</id>
    <published>2023-10-27T10:15:38.000Z</published>
    <updated>2026-01-16T05:50:56.176Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;业务增长初期，单体数据库是最高效的选择。但当写入负载和数据量超过单机垂直扩展的物理极限时，分片（Sharding）就从一个架构选项变成了必然要求。手动分片方案在初期或许能勉强应对，但很快就会演变成运维的噩梦：每次扩容都需要手动迁移数据、修改路由配置、协调停机窗口，任何一步失</summary>
        
      
    
    
    
    <category term="分布式系统" scheme="https://gettzen.com/categories/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/"/>
    
    
    <category term="数据库分片" scheme="https://gettzen.com/tags/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%88%86%E7%89%87/"/>
    
    <category term="Raft 协议" scheme="https://gettzen.com/tags/Raft-%E5%8D%8F%E8%AE%AE/"/>
    
    <category term="Chef" scheme="https://gettzen.com/tags/Chef/"/>
    
    <category term="自动化运维" scheme="https://gettzen.com/tags/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4/"/>
    
    <category term="高可用" scheme="https://gettzen.com/tags/%E9%AB%98%E5%8F%AF%E7%94%A8/"/>
    
  </entry>
  
  <entry>
    <title>使用 Tornado 构建支持动态房间的 WebRTC 信令服务器及其状态管理架构</title>
    <link href="https://gettzen.com/5101225136/"/>
    <id>https://gettzen.com/5101225136/</id>
    <published>2023-10-27T10:15:32.000Z</published>
    <updated>2026-01-16T05:50:56.176Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;任何超过两个参与者的 WebRTC 应用，其复杂性都会从 P2P</summary>
        
      
    
    
    
    <category term="后端架构" scheme="https://gettzen.com/categories/%E5%90%8E%E7%AB%AF%E6%9E%B6%E6%9E%84/"/>
    
    
    <category term="WebRTC" scheme="https://gettzen.com/tags/WebRTC/"/>
    
    <category term="状态管理" scheme="https://gettzen.com/tags/%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86/"/>
    
    <category term="JavaScript" scheme="https://gettzen.com/tags/JavaScript/"/>
    
    <category term="MariaDB" scheme="https://gettzen.com/tags/MariaDB/"/>
    
    <category term="Tornado" scheme="https://gettzen.com/tags/Tornado/"/>
    
  </entry>
  
  <entry>
    <title>构建Saga补偿事务网关以纳管Oracle遗留系统并集成Cypress进行一致性断言</title>
    <link href="https://gettzen.com/6177126587/"/>
    <id>https://gettzen.com/6177126587/</id>
    <published>2023-10-27T10:15:32.000Z</published>
    <updated>2026-01-16T05:50:56.177Z</updated>
    
    
      
      
        
        
    <summary type="html">&lt;p&gt;我们面临一个棘手的现实：一个承载核心业务的巨型Oracle数据库，以及一个基于Node.js构建的新微服务。业务要求一个跨越这两个系统的操作必须保持原子性——要么全部成功，要么全部回滚到初始状态。具体场景是：在新微服务中创建“合约”记录，然后必须同步扣减Oracle中某个遗</summary>
        
      
    
    
    
    <category term="分布式系统" scheme="https://gettzen.com/categories/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/"/>
    
    
    <category term="网关与代理" scheme="https://gettzen.com/tags/%E7%BD%91%E5%85%B3%E4%B8%8E%E4%BB%A3%E7%90%86/"/>
    
    <category term="Oracle" scheme="https://gettzen.com/tags/Oracle/"/>
    
    <category term="Cypress" scheme="https://gettzen.com/tags/Cypress/"/>
    
    <category term="关系型 (SQL)" scheme="https://gettzen.com/tags/%E5%85%B3%E7%B3%BB%E5%9E%8B-SQL/"/>
    
    <category term="分布式一致性" scheme="https://gettzen.com/tags/%E5%88%86%E5%B8%83%E5%BC%8F%E4%B8%80%E8%87%B4%E6%80%A7/"/>
    
  </entry>
  
</feed>
