BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//pretalx//pretalx.coscup.org//coscup-2026//speaker//M7NR8P
BEGIN:VTIMEZONE
TZID:CST
BEGIN:STANDARD
DTSTART:20000101T000000
RRULE:FREQ=YEARLY;BYMONTH=1
TZNAME:CST
TZOFFSETFROM:+0800
TZOFFSETTO:+0800
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
UID:pretalx-coscup-2026-KXANFQ@pretalx.coscup.org
DTSTART;TZID=CST:20260809T130000
DTEND;TZID=CST:20260809T133000
DESCRIPTION:當你的 Go 服務開始出現 latency Spike，第一個懷疑
 對象往往是 channel。\nChannel 內部的 mutex、GC 壓力、false sh
 aring，這些問題在高吞吐場景下會被放大。\nLMAX Disruptor 
 是金融交易系統中解決這類問題的經典方案，但它真的
 適合 Go 嗎？\n本議題帶你從源碼出發，一起讀懂 smarty/go-
 disruptor 的設計，理解 Disruptor 為什麼快，以及在 Go 的生
 態下它的邊界在哪裡。\n\n1. Channel 的成本從哪裡來？\n用
  benchmark 展示 channel 在多核環境下的瓶頸，從 CPU cache line
 、false sharing 與 mutex contention 建立直覺，讓後續的源碼解
 析有具體的問題背景。\n\n2. 讀源碼：Ring Buffer 的核心設
 計\n逐段解析 smarty/go-disruptor 的關鍵檔案， sequence.go 的 c
 ache line padding 如何消滅 false sharing、sequencer.go 的 atomic 操
 作如何取代 mutex、producer/consumer gating 機制如何在不加鎖
 的情況下保證順序。\n\n3. Go Memory Model 的關鍵轉折\nGo 1.19
  正式明確了 atomic 操作的 happens-before 語義，這讓 smarty/go
 -disruptor 從 pre-release 進入穩定狀態。我們會從源碼理解
 這個語義保證在實作上意味著什麼，以及為什麼在這之
 前 lock-free 的 Go 程式碼其實站在不穩固的地基上。\n\n4. 
 邊界在哪裡：什麼時候 Channel 就夠了\n以 exchange matching en
 gine 的設計評估為例，說明在真實系統中如何判斷是否需
 要 Disruptor:吞吐量需求、團隊維護成本、系統複雜度的三
 角取捨。\n\n5. 從 Disruptor 借回 Go 的設計概念\n即使不用 D
 isruptor，它的設計思想仍然可以改善你的 Go 系統：預分
 配 slice 減少 GC 壓力、struct padding 避免 false sharing、ring bu
 ffer 作為固定大小的 event queue。\n\n- 目標受眾： 對 Go 並
 發有基礎認識、對系統效能調優或底層設計感興趣的工
 程師。不需要有 Disruptor 或金融系統背景。\n- 帶走什麼
 ： 讀源碼的方法、對 Go memory model atomic 語義的具體理解
 、一個判斷是否需要 Disruptor 的決策框架。\n所有參考內
 容皆為公開開源專案，技術方法不依賴任何特定雲端平
 台或商業工具。
DTSTAMP:20260713T132619Z
LOCATION:TR214
SUMMARY:用 Go 讀懂 Disruptor：從源碼理解高效能 Ring Buffer 的設計哲學 - 黃國豪
URL:https://pretalx.coscup.org/coscup-2026/talk/KXANFQ/
END:VEVENT
END:VCALENDAR
