跳至主要內容

我的旅程

依「.NET 8」篩選中清除
RTB2025年5月

協助設計並實作 以 PID controller 為核心的 Pacing 2.0 預算控速機制

Research Developer (Bidder Team) · Bridgewell

1.0 版的 pacing weight 震盪嚴重,導致預算過早燒完、OP 需人工盯盤,也難以滿足「整段期間平均帶量」這類需求(如直播廣告每時段平均曝光)。2.0 改用 PID controller,error function 取 (expected - actual) / (expected + actual),gains (Kp, Ki, Kd) = (0.1, 0.001, 0.01),並以分流實驗驗證成效。

166 個 adgroup 前後各四天比較,CPC 從 0.97 降到 0.81(-16.19%),pacing weight 震盪的 95 分位指標從 0.97 降到 0.08(約 -92%)
查看詳情
重構2025年11月

統整 七個媒體流量源的出價流程為單一 BiddingCoordinator 框架

Research Developer (Bidder Team) · Bridgewell

原本 Google、Dable、Taboola、ucfunnel、SPA、RMN、Prebid/DirectPath 各有一套出價實作,任何共用邏輯的修改都得散彈式改七個地方。抽出 AdTypeIdRepository 搭配各媒體的 AdTypeSelector(strategy pattern)、BidPriceCappingService、DemographicRepository,並收斂到統一入口 BiddingCoordinator。

一個月內以 6 個 MR、約 331 個檔案改動完成;框架建立後,接入新媒體的改動量從第一個的 125 個檔案降到 12–18 個
查看詳情
升級2026年5月

升級 三個核心競價服務至 .NET 8 並容器化部署到 Linux

Research Developer (Bidder Team) · Bridgewell

BiddingService、ImpService、Searcher 陸續脱離 .NET Framework 4.x 改跑 .NET 8 on Linux;最後一塊把 Searcher 從 Windows 主機搬到 Docker + Ansible + systemd 部署管線,並調校 Server GC,rolling deploy 間隔從 5 分鐘縮到 90 秒。

Searcher 的機器數從 30 幾台 Windows 主機縮減到 4 台 Linux,同時省去 Windows 授權成本
查看詳情
維運2026年8月

根治 RecSearcher 營業時間重啟時的啟動期 race 與 OOM

Research Developer (Bidder Team) · Bridgewell

推薦資料 provider 的 GetOrAdd 不是原子操作,啟動空窗期內 Kafka 行為事件與資料更新通知會同時觸發同一家大型商城資料的 deserialize(單次重啟最多 9 份),撞上記憶體上限。改為 single-flight,對同一個 key 的併發建構去重。

營業時間部署不再出現 OOM,原本靠運氣自癒的 process 級風險被消除。
查看詳情
重構2026年9月

合併 出價候選資料(campaign / ad group / creative)的多個讀取來源為單一 GraphQL 快照

Research Developer (Bidder Team) · Bridgewell

原本出價與曝光服務的 campaign、ad group、creative 欄位分散在 MySQL 與 GraphQL 的多個定時 reader,各有不同更新週期,同一個 entity 的欄位之間有讀取時間差,跨來源 join 失敗時 creative 會靜默消失。改為單一 GraphQL reader 依廣告主分批抓取完整快照,限播類別、cost control 預算、landing 設定與廣告牆都改讀這份共用快照;遷移期以 shadow 雙讀逐欄位比對一致後才切換。

移除 4 個重複 reader 與 request path 上的即時查詢,同一 entity 的所有欄位在同一時間點取得;補上靜默掉單的分因監控與廣告主對帳,於 43 台出價主機全量上線。
查看詳情
維運2026年10月

移除 9 個 repo 的 CI 對 Windows 實體主機的依賴

Research Developer (Infra Team,兼任) · Bridgewell

將 bwproto、recdb、eventtoken、WebHdfsDotNet、tsdblib、catjs、pixel 等 9 個 repo 的 Windows CI job 改用 windows_cmd runner 或 Linux dotnet/sdk:8.0 container,同時把單元測試升到 net8.0、修好已經失效的 pipeline。

CI 不再綁定單一 Windows 主機,原本已失效的 pipeline 恢復運作。
查看詳情