Gopher China 2017 大會怎麼樣?
在上海舉辦的gopher china 2017怎麼樣?有收穫嗎?技術大牛的都是誠意分享的嗎?
我是本次的講師之一,和大家分享一下我的參會體驗。
在準備階段, @asta謝 很早就要求大家交第一版 ppt (大概是三月底),在大會前一周收了大家的第二版稿件,並且給出了自己的修改建議。我自己的第二版 PPT 發出去之後,謝大看完後覺得內容 OK,我就去忙自己的事情了。
結果在大會開始前兩天的晚上,謝大告訴我說我的 ppt 比例有些奇怪,偏小,而現場的屏幕很大,擔心會影響演示效果,我才發現確實有問題,應該是從 google doc 轉成 keynote 的時候有些問題。我花了很長時間,重新做了一半的圖,重新複製粘貼了所有的文字以及調整排版,弄到很晚才搞定,發過去之後,謝大當時還是在線的,估計是還在檢查別人的 PPT。很慚愧這個格式的問題是被別人發現的。謝大檢查的比我還仔細。
在會議期間,由於我司有一個展台,大多數時間我都在展台那邊和各位 Gopher 交流,還抽空跑出去見了好幾個客戶,以及和三個面試候選人聊了一下。所以基本上只有在零星時間能去會場聽一下,錯過了好幾個我感興趣的 Talk :(,只能在有空的時候看看其他講師的 PPT。
從各位講師的 PPT 來看,兩位國際友人的 Talk 都是專註在語言層面,其他的講師大多是從一線業務出發,偏重架構和一些才過的坑,我看了之後還是挺有啟發,特別是幾個講微服務的 Talk(很慚愧,我之前對微服務並不了解,看完之後還挺有興趣的)以及講金融、證券行業的 Talk。
我覺得參加技術會議,不是只有講純技術的 Talk 才有收穫,很多一線的技術經驗更加寶貴和實用,這些都是不斷踩坑才得到的。雖然有時候業務類型相差比較大,並不能直接用上,但是他山之石可以攻玉,很多思想都是可以借鑒的。
最後說一下我自己的 Talk。如果讓我純去講語言的細節或者是像 Dave 一樣講一些 black magic,坦白說我也不知道怎麼講,很多聽眾了解的都比我多很多。我是希望和大家分享我們在用 Go 開發過程中的一些經驗,我們遇到過的坑,希望大家能夠有一些借鑒,少走一點彎路,能達到這個目的我就很開心,這一點我還是能講出一些東西的。
但是純講這些也很無聊,大家也不了解背景,不知道哪些場景下會遇到這些問題,不能很好的理解我們為什麼要這麼做,所以我把我們的場景也儘可能地以簡單、輕鬆的方式讓大家有一些了解。除了能幫助理解後面的實踐經驗外,還能讓大家了解一點如何做資料庫。從現場來反應來看,我這個選擇還是比較討巧,也是先介紹業務再介紹 Go 語言,大家聽起來還是比較輕鬆有意思,可能很多碼農都有一個做資料庫/操作系統/編譯器的夢,所以大家不排斥介紹資料庫的話題。非常感謝大家對我的 Talk 的認可。
另外作為講師還有一點福利,就是一起吃了一頓飯並且住在一起,有不少的機會能夠相互交流,這種小範圍的交流一般會比較深入,且大家私下聊天顧忌會少些,也更輕鬆些。我就是 @劉楠 答案中給 Francesc 查詞典翻譯菜名的那位,當時在嘗試翻譯鮮和腌篤鮮這兩個詞,實在不知道怎麼說。。。最後告訴他是 salt pork and baby bamboo soup
註: 利益相關,PingCAP 是本次 GopherChina 的贊助商,
==========最後再插入一個軟廣===========
我們正在嘗試把 TiDB 的開源社區做起來,目前已經有一個小的社區,幾十個外部貢獻者,我們接下來會嘗試做一系列 Talk 和討論會,把 TiDB 內部儘可能多的細節傳播出去。
這樣做一方面是希望能讓大家通過 TiDB 這個例子能了解到資料庫的內部機制,特別是一個分散式資料庫如何實現,另一方面也讓感興趣的同學都能更好的參與我們的社區。
這個事情預計會在接下來的一兩周啟動。
作為一個剛學go的前端,作為極少數聽完全部17個講題的聽眾, 我還是很有必要來回答一發。
跟其他分享會議很不一樣的是, gopher china大部分議題開篇就是why go...... 而講到how to的時候,又多跟整個系統架構有扯關係。側面也反應了議題重合度太高, 跟講師自家業務的耦合度太高。
接下來具體說說每一個議題。
1. Go 在大數據開發中的實戰經驗 七牛雲 孫健波
其實說的就是七牛的pandora系統,有幸在別的地方聽過,所以對這個系統,可能比其他人更了解多一些。這個系統太龐大,隨便挑一兩點都能講上幾個小時。
所以即使講師水平不錯,演講能力也挺出色,會讓人感覺是比較泛泛而談,因為整個東西太大了。
why go
數據系統工具選型和整合
數據流動效率問題
how
內存 硬碟隊列
保證數據一致性 &<= 通過qconf保證 最終一致性
一些坑和方案 變長的失敗等待時間
2. Go in TiDB 申礫 pingcap
what is TIDB
-&> 混合型資料庫 RDBMS and NoSQL
特性需求 高可用(物理斷開),擴展性,ACID, 兼容SQL
architecture SQL Layer
這裡有個非常酷的圖,申總詳細解釋了從sql文本到結構,再到執行的過程。讓人瞬間有種會了DB底層的錯覺。
why go (又回到了經典的問題 )
goroutine
- 對比了一下mysql的執行模式 執行sql單進程,不能很好利用多核cpu
然後跑了兩個例子
- data scan
- hashjoin
講了一些關於並行常見的問題
內存沒釋放導致的泄漏
埠沒釋放導致的泄漏
解決方案
- block profile
- timeout
- context
關於使用內存的經驗 -- 謹慎使用內存
tips: 看內存分配多少次, 而不是分配了多大空間
利用sync.pool 優化
為什麼用gogo/protobuf而不是 golang/protobuf
貌似是說 golang的protobuf原子型問題,new出來的原子類型不是指針(這裡沒聽懂,捂臉)
內存監控方面 -- 希望能管理到每個session的內存上限
QA 中有人問了session是指什麼,申總回答說是指一個連接的client
最後是TiDB這個項目未來的展望和對golang的展望
提問環節,第一個問題是TiDB分散式架構, 申總說不是多master,one master已經足夠了,目前看來沒有超出這個架構的問題。
第二個問題忘記了
第三個問題是就是問session。
3. GO coding in go way 白明
唯三說go語言本身的的主題的其中一個。感覺說的挺好的,用的語言決定了思維模式
展示了埃拉托斯特尼演算法 三種語言的實現方式
- c是內存(數組)的操作處理
- haskell 是通過函數遞歸
- go 通過並發組合,為每一個素數建立一個goroutine, 然後做篩除
然後是說go語言的三個價值觀。分別是 簡單, 正交, 偏好並發
舉了很多例子,有自己寫的也有標準庫的截圖。看的出來很用心, 大量的去閱讀過標準庫和主流庫的代碼和風格。
選題切入蠻有意思, 但是演講能力和節奏把握需要提升。
4 understanding the interface Francesc Campoy
唯三說go語言本身的的主題的其中一個。聽的巨開心,說到了很多細節很平時不怎麼注意的點。
上來先舉了樂高積木的例子
然後說了concrete types abstract types
what happen union two interfaces --&> bigger interfaces
然後說了一下why do we use interface
- 寫通用演算法
- 隱藏實現細節
- 提供攔截指針 (providing interception points 應該是這個意思吧)
這個時候給出了兩個觀點
- the bigger the interface, the weaker the abstraction
- be conservative in what you send , be liberal in what you accept
大概就是說越大的interface,抽象能力越弱; 約束你的返回值,不約束你的接受的參數
給了四個不同參數類型的函數作為對比,還和現場做了互動。
貌似選擇interface{} 類型參數的人最多(我也是算這個,捂臉),然後具體分析了一下優劣。
然後對比了四種返回類型
然後將這種接受-返回的概念和TCP的send receive做了類比。
然後對比了靜態調用和動態調用
再然後是說 chaining interfaces
最後就是回顧和總結了, why interfaces
水平有限,不是很跟的上。
總體上給我的感覺就是大神寫go還是還注重這些細節的,把坑挖得很深。
5 NSQ 重塑之路
先說了一些痛點,然後why go
然後是一些優化的細節
服務端改進
- 改造channel
- improve write performance --組提交方式
- ...
消費端改進
copy all data from topic channel to consume channel -&> cursor
其他優化
超時處理
減少timer (timer 堆出入 對cpu的損耗
架構優化
etcd 元數據 meta data service
動態 ISR
然後說了 負載均衡的問題
然後說了分散式系統的測試和追蹤(分散式的trace和test 是大家非常關注的點,感覺下一屆可以拎出來單獨說)
- 發現可能的分散式系統的問題
- 把節點從網路中隨機剔除
- 寫入和讀取 不停的重試
- 有沒有丟, 有沒有重複, 超時情況
然後是對比了 Kafka RocketMQ NSQ(redesign)
然後是在有贊的業務應用場景
最後是回顧。
總體說的還是很不錯的,涉及一些細節,但總體上比較泛,希望能深入一些核心的實現或者重要功能的細節。
6 基於Go的微服務架構(Spring開發者視角)
這個大家吐槽的多,但感覺切入角度挺好的, 講從java切到go, 不僅僅是語言,還是關乎soa的周邊生態這些。
雖然也是why go,但他這個是一直專註在why go上面,沒跳出來過。看ppt內容感覺也挺豐滿的。
最大的問題是講師演講能力和節奏把控太差,準備不充分(可能是代寫的ppt)
7 用Go搭建Kubernetes Operators
講師想強調並且推廣operators這種概念, 但似乎被誤解成來玩k8s實操的。。
本身k8s和docker有gap, docker和go有gap,所以如果找不到一個好的角度來切入,來組織ppt和演講節奏,就很容易被大家當成是混子啊。。。
吐槽完畢,說會議題內容本身。
首先說 app = code + config
然後說容器發展的兩個階段
- 標準化
- 調度(大概是這個意思
說了一下有狀態應用和無狀態應用的概念。
然後說管理有狀態應用是非常困難的, 所以誕生了很多專門幫其他公司管理有狀態應用的公司,例如es,spark...
然後由此引出了 Operator 概念
- observe .e.g 當前集群節點數量, 節點版本
- analyze
- act
然後說到他們感覺這個根據這個概念, 實現了一個叫做etcd Operator庫
- resize
- upgrade
- backup
- failover
8 嗶哩嗶哩的Go微服務實戰 毛劍
開篇明義 why go
說了一些原來架構的問題, 比如說nginx 1000多條的location, 各種掛...
然後就是how。 在這麼多的how之中,毛老師的how是比較全面通用的, 得到了廣泛好評
主要介紹了以go為主的一套架構的實現,非常前面,關於微服務的基本都涉及了。
9 Grab 高超
why go
微服務架構
然後強調他們團隊用一個repo,然後花了很長很長的時間說為什麼要用一個repo。這個部分飽受爭議。
然後說了他們自己有一套CI,和測試覆蓋率的檢查工具。
接下來是是到分散式的追蹤, 有很多細節, spanID,traceID,這部分說的比較清晰,挽回了不少分。
然後說了一些DNS的坑和解決方案。這部分見仁見智,看見很多朋友說服務發現不應該這樣搞。
10 Go 語言在掃碼支付系統中的成功實踐 張建龍
差不多也是why go , how 的套路, 走神了...可能是審美疲勞,沒怎麼仔細聽。。。
11 Go 在百萬億級搜索引擎中的應用 360 郭軍
用go實現的開源搜索引擎。也是強調了一下why go
內容詳實,但是也是話題有點大了,想著面面俱到,每個部分都提了些, 大概是聽懂了, 轉過頭就沒啥印象了。
提問環節有位es的粉絲,質疑了一下說, 為什麼不直接用es, 日均100w條(這位估計聽,捂臉逃)完全沒問題。
講師郭軍大神哭笑不得:「100w條!? 我們是日均100萬億條!!」
哈哈哈,不過最後郭軍還是選擇了送書給這位有點懵的小夥伴。
12 The hidden #pragma"s of Go -- Dave Cheney
重頭戲,Dave大神。
看到有另外答題的朋友拼錯成了program。這裡強調一下,pragma是編譯指示、編譯註解的意思。
類似的概念在其他語言也有,js里的"use strict" 應該是解析器(js沒有編譯器)的註解。
What are pragmas? The name come from the #pragma declaration that tells C compilers to alter their interpretation of a piece of code. Now, Go doesn』t have a #pragma directive, but it does have ways of altering the operation of the Go compiler via directive syntax hidden in comments.
This talk will explore the history of these directives, how and why they are used, and how you can, but probably shouldn』t, use them in your own code.
引用自Dave大神博客, go裡面沒有專門pragma指令,但是通過隱藏在注釋中的方法能夠做到pragma的事情。
雖然Dave大神展示了很多黑科技,但是你們代碼裡面可千萬不要用哦。
附golang pragma的代碼,找了挺久的 golang/go
13 跨境電商的 Go 服務治理實踐 ezbuy 陳冶
why go and how。
也是偏重說業務場景和架構的, 雷同的主題比較多。得空補充
14 使用 Golang 語言實現 DevOps Orchestration 華為 馬全一
類似於提供給企業解決方案,偏重的是不同業務場景實現。
還有一些踩坑的經驗
ppt做的挺好的
15 Harbor 開源項目中容器鏡像遠程複製的實現 張海寧
佈道師的演講能力還是強的,說話有氣勢,鏗鏘有力。
主要是說Harbor這個開源項目,但選題方面就有點類似於k8s的尷尬。
說了一點why go的內容,但主要還是偏重於開源項目,其中又偏重跨主機(機房)的私有倉庫的同步問題。 但是docker本身就提供有這個api,相當於做一層封裝。
不過我們部門這邊有在用,其實還是蠻不錯的。
16 Go 在證券行情系統中的應用 廣發證券 劉楠
講得真是很好,在倒數第二個,錯過的同學有點可惜了。
劉老師穿著西裝上來,害的我以為是推銷的。。 差點睡著了。
雖然why go哪裡很雷同,但是劉老師還是個段子手,扯了幾個段子活躍一下。
然後說到優化。優化的主要原因是證券系統的要求
後面主要都是圍繞著優化在說。
對象方面,減少gc,使用了對象池
盡量使用棧對象, 少使用堆對象。
這塊和Dave大神提到的pragma //go:noescape 中的例子也映襯了一下, 一下子就覺得很好懂了。
goroutine方面的優化。
然後還有8級 hash table優化,用空間去換取時間。
最後是網路底層協議的坑。 是關於tcp offload切片的。
這個分享質量非常高, 讓人眼前一亮。還有一些部分記得不是很清楚,看看有沒有人補充。非常值得去找下回放,重溫重溫
17 Go 語言在證券期貨行情系統中的實踐 金大師 張澤武
最後一個又回到了why go, 然後啰啰嗦嗦扯了很多團隊的事情。這部分感覺可以說的快一些,一筆帶過那種。
後面說了一些碰到的坑和解決方案,整體類似雜談
總的來說,內容比較雷同, 節奏把握不太好,演講能力也比較差,不知道是不是因為最後人太少了,導致講師情緒低落。。。
----------------------------------------------------------------------
總算過了一遍,還是很多缺漏的,只是一個大體上的感覺和回顧。對於一個go新手玩家來說很不容易了。感覺大多數議題都是從why go展開,然後balabala...
用java的可能很少去強調why java, 我就這麼用了,你怎麼滴。
可能不久的將來,當選go變成很理所當然的時候, 也就不太需要太過於強調why go。
內容上講圍繞go語言架構的偏多,軟廣硬廣都有。整體上來說其實還是很好的,感覺選題要找個切入口,不要太大,能深入說一兩個點就挺不錯的。上來就是我們公司業務的微服務為什麼用go,怎麼怎麼樣搞,每個分享內容都這樣誰受得了啊
畢竟會場內1200多人,眾口難調。我覺得算是做的非常好的了,謝大 @asta謝 辛苦了,繼續加油~~另外下次要找幾個場內志願者,有一次問答環節你不在的時候,在Dave大神幫忙遞話筒的 =。=
第一天:
申總和毛老師的分享水平明顯比其他分享者高一個檔次(interface那個分享除外,我在賓館午睡錯過了…)。申總的分享很清晰地講解了 TiDB 的整體運行流程和遇到的一些分散式系統相關的問題,毛老師的分享從前到後展現了 b 站微服務系統的發展,我感覺學到了不少東西。七牛那個給我的觀感就是在打廣告,slide也花里胡哨的,我覺得技術分享的 slide 都應該像申總的 slide 風格一樣,乾乾淨淨條例清晰,沒有莫名其妙的配色和配圖(不止一個分享者的 slide 配色糟糕,字都看不清)。Tony Bai的分享我也不喜歡,我個人很反感過度吹捧Go,把一個語言拔高到什麼價值觀的高度。Tony Bai的博客里有不少挺優秀的技術文章,不知道為什麼選了個這樣的議題。下午的 NSQ 重塑之路乾貨還是挺多的,但是講師的溝通能力有點問題,後面提問階段挺失敗的,兩個提問者都問了多 topic 導致隨機 io 的問題他也沒說清楚。個人認為阿里的分享應該是這次大會最失敗的分享,講了半天還在講 Java 的東西,感覺也沒什麼條理,羅哩羅嗦的,google 的那個同學也發了個推吐槽這個分享。我聽到一半聽不下去了就去隔壁黃興公園轉了轉。第二天:
Grab 和 Ezbuy 的分享乾貨不少,我關注的點是他們微服務系統的測試和分散式追蹤,邊聽邊查了一些他們提到的 dapper opentracing 之類的東西,感覺漲了一些姿勢。下午大鬍子 Dave 講了一些編譯器 pragma 黑魔法,還是挺有意思的,不過感覺生產里沒什麼用到的可能性…我個人對容器這些沒什麼興趣,所以幾個 k8s containerops 的分享我沒有深刻的印象,就不談了……
等聽完最後兩個金融公司的分享再更新。最喜歡申總和毛老師的演講,乾貨滿滿,收穫良多。
也看到了兩種不同風格的程序員,做基礎組件的就該geek,性能和優雅是一切。做服務的就該dirty and work,要快速要能用,實現出來就是好的。都是業界楷模,我等初級程序員的榜樣。看到申總關注了問題,就順便問問,tidb打算做document但是沒細說,會實現mongodb協議嗎?利益相關是mongodb重度用戶。利益相關:我是Gopher China 2017贊助商之一ezbuy的CTO
我算是全程參加了這次大會,其中一個強烈的感覺是組織者 @asta謝 非常忙碌,事無巨細,像晚上Party吃飯發兌換胸章這種細節都需要他直接處理;希望下次大會他能夠把這些細節『外包』出去吧~
作為贊助商,我一方面是希望能夠提供公司知名度,以便招聘;另一方面,實際上也是想著能夠回饋社區,讓社區、主辦方可以有更多資源調配,把大會做得更好。
這裡先吐槽一下:講台過底,屏幕過低,直接結果就是後排的觀眾無法看到屏幕底部的內容;如果講師們都事先知道這點,相應調整一下ppt的排版,應該會對更『觀眾友好』一些~
=====
『招聘』應該是參與這次會議各家公司的重要目的,這點在第一天晚上的『技術Party』上表現得特別明顯,party上大多數上台介紹自己公司的童鞋都說自己是來招聘的。
做贊助、打廣告,應該是常規的招聘手段;但我會認為,各家使用go的公司,在自己公司把go用得溜,讓自己成為go應用的『成功案例』才是更加重要。我司原先是微軟的技術棧,並且也頗具規模。若ezbuy能夠成為業界『轉go』的廣為人知成功案例,應該能夠帶動更多的團隊勇敢『轉go』吧~那麼自然會湧現更多優秀的go工程師~也就不會出現一群想招人的童鞋『互招』的尷尬場面~
然後,在GopherChina這樣的技術大會上,能夠吸引到關注的公司,必然還是以自身的技術吸引到關注;群眾的眼光是雪亮的。
掃了一眼目前的答案,提到我司工程師陳冶做的 https://github.com/gopherchina/conference/blob/master/2017/2.5%20%E8%B7%A8%E5%A2%83%E7%94%B5%E5%95%86%E7%9A%84Go%E6%9C%8D%E5%8A%A1%E6%B2%BB%E7%90%86%E5%AE%9E%E8%B7%B5.pdf 跨境電商的Go服務治理實踐 的分享,應該都是好評;非常欣慰。
=====
我雖然全程參加了本次大會,但我大部分時間都是在『擺攤』,而沒有細聽各場分享。
但即便在場外,我也可以明顯感受到觀眾對各場演講的態度不一樣:有幾場演講進行時,場外的觀眾明顯多了起來。
剛剛翻看了一下所有的ppt:gopherchina/conference
下面是我的一些感受:
來自Google Cloud的Francesc Campoy做的《Understanding Go Interfaces》是我覺得是這次大會中最重要的分享。
Go的介面設計以及使用方式,實際上是有別與其它語言的,只有把Go的介面理解透徹,才有可能在日常的編程中把go用好,即『Go coding in go way』。
在我看來,『寫程序』本身就是一件非常有難度的專業,這一專業天花板也非常高,但我似乎很少碰到工程師追求『把程序寫好』,更多的人會是追求成為『架構師』,甚至是『不寫程序』。
『Go coding in go way』是Tony Bai分享的題目,也似乎是被吐槽的一個分享,現場我去聽了大概一分鐘,碰巧是Tony Bai在講『變數命名統計』,這部分似乎略無厘頭,但如果帶著『如何把Go程序寫好』這個問題去仔細去看整個演講的話,我其實覺得這個分享是『乾貨滿滿』!
=====
待更新~
謝邀,作為此次 GopherChina 大會的贊助商之一訊聯數據的CTO,不匿。我想從贊助商、間接參會者和一名初級 Gopher 的角度來談談自己的感受。
- 作為贊助商
說實話,作為一名支付系統服務商,雖然成立了已經有幾年,但我們還是第一次參與此類技術大會。之所以贊助,還要先說說我們和 Go 的緣分。
我們是 2014 年夏季開始接觸 Go 的,逐漸從一個邊緣性的小應用擴展到每日處理幾百萬筆條碼支付交易的核心系統,懂 Go 的開發人數也從一知半解的一兩個人到目前二三十人。在一個熱門領域尤其是與金融支付相關,一門新語言的落地並不是那麼一帆風順,其中經歷過很多坑。作為依然在路上堅持往前走的我們,希望能與社區多交流,分享我們經歷過的一些坑,希望摸索出的一些經驗教訓能對其他同仁有幫助。為此,去年我還曾經將這一過程得到的一些團隊管理經驗做過線上分享《「三新」團隊如何克服成長的煩惱》。有時我會想,在這幾年裡,如果更早點融入社區,在關鍵的時刻大家能有更多的討論並能夠指點迷津、給些思路的話,我們會不會走的更穩,我們的業務會不會更好。
還記得第一次 Gopher 大會是在浦軟大廈,當時我們連用 Go 寫一個支付寶介面的驗簽程序都還不會寫,而現在僅僅兩三年,雖然對 Go 依然了解尚淺,但已經形成了一定的開發規模和在金融支付領域摸索出了一套經歷過實戰檢驗的 Go 服務架構。所以,我們願意參與大會,願意參與演講分享自曝家醜,用自己微薄之力回饋社區,真誠地希望 Go 社區能發展起來,能有成千上萬更多的 Gophers,能在遇到問題時一起討論一起進步,能讓更多的人知道就連向來保守的金融領域都有 Go 的用武之地了,學習 Go 這步路應該沒有錯。
- 作為間接參會者
這兩天,雖在門口不時地偷聽上一些演講嘉賓的分享,但更多地是在場外與一些人交流,這已經讓我受益良多了。交流中迸發出的一些思路很有意思,後續我們也會借鑒。
和大家一樣,我也參加過很多次技術大會。參加此類大會,我覺得,除了聽演講能聽到乾貨,知道別人幹了什麼,用 Go 還能幹什麼怎麼干,遇到什麼問題怎麼解決外,還有很多值得學習的地方。例如,一場大會的組織、議程安排,一些好的展位設計和互動,如何與場內外陌生人交流並深入探討技術細節,PPT 如何寫,演講技巧如何把握等等。這些方面只要有一點得到了啟發,此次參會就值了。
簡單分享一個令我印象深刻的小細節吧:我是周五就去過會場的,當時這個會場還在舉行其他會議,到傍晚時與 GopherChina 相關的還啥都沒有呢。我當時有些擔心晚上才布置來得及嗎?但第二天一早過去時看到會場的安排,十分震驚。這麼多物料、展位還有視頻直播,現場的調試等等,一晚上搞得好好的,竟然挑不出毛病,而且組織者依然精神抖擻,忙前忙後。這執行力和用心程度,如果組織者不是 Asta 而是自己,能辦的到嗎。這是千人大場啊,參會的人還都是各個領域的技術大拿,我是沒有這個信心的。我曾是一名共享軟體作者,大家雖所屬的領域不同,但能體會到那種憑一己之力執拗地想做成一件事的感受,以及做成一件事後的那種自豪感,甚至在事後復盤時發現自己做的還有些瑕疵的那種愧疚感。我甚至在想,如果再有類似的 Go 會議,我們是不是可以出一些志願者,能幫一點是一點。
- 作為一名初級 Gopher
最後想談談,我個人從每個演講 PPT 以及在場外聽到的隻言片語中得到的收穫:
1. Go在大數據開發中的經驗總結
在談到海量數據的實時導出時,解決數據流動的效率問題時降lag的一些思路很好,還有後面的一些技術選型和實戰經驗,值得參考。
2. Go in TiDB
全面了解了 TiDB,以及對 Parallel HashJoin Operator 這一頁印象深刻。
3. Go coding in go way
講到了編程思維,全文講了很多 Go 的特性,學習到很多東西。感覺演講者已經從講的這些「術」中悟到了一種「道」,有種十八般武藝樣樣精通後又返璞歸真回歸自然的感覺。
4. understanding the interface
PPT 組織的非常好,跟讀經典原版計算機書一樣的感覺,由淺入深,雖然大部頭但一點不犯困。
5. NSQ 重塑之路
對「Delivery In Order」中的流轉狀態機印象深刻。
6. Go 微服務架構 - 來? Java/Spring 開發者視?
從「Spring vs. Go Tooling」和「Micro-services best practices」這部分得到一些啟發。感覺作為一個已經有成熟框架的大公司員工,還能邁出自己的舒適區學習和應用新語言,應該不容易吧。
7. Automate App Operation
PPT 前面部分的形象比喻有意思~
8. Go 微服務實戰
不錯,成體系的介紹了微服務架構相關的關鍵組成,學習了。
9. Go 打造億級實時分散式平台
Distributed Tracing 思路不錯。
10. Go 語言在訊聯掃碼支付系統中的成功實踐
我們小夥伴的分享,第一次在千人大會上做演講,感謝!
11. Golang 在百萬億搜索引擎中的應?
被總數據量嚇到了,我也期待能有這麼一天可以碰到這麼大的數據量。
12. Go』s Hidden #pragmas
哈哈,作為一名玩過另一個老土語言 pragma 特性的人,覺得 pragma 是高級語言中最醜陋的存在,沒有之一~~
13. 跨境電商的 Go 服務治理實踐
分散式追蹤,講的不錯。
14. ContainerOps – DevOps Orchestration
說實話,我不太懂,但認為如果在現場會好很多。
15. Harbor 開源項目容器鏡像遠程複製的實現
全面了解了 Harbor,不錯。
16. Go 在證券行情系統中的應用
同是金融系統,業務對技術的要求類似,總結的很多經驗對我們有參考價值,謝謝。
17. Go語言在證券期貨 行情系統中的實踐
PPT 不錯。
---------------------------------------
深夜寫完,腦子有些不清楚了,不當之處望諒解!
第一次參加GopherChina,感覺還是挺不錯的。幾個議題也都各有看點,非常不錯。不過大家可能彼此之間關注點不同,所以對內容關注度也不同。
幾個我比較感興趣的是 TiDB 的分享、 understand the interface、NSQ的改造、B站微服務改造、高超的分享和ezbuy的分享(一個起晚了沒聽到,一個趕火車錯過了,非常遺憾)。 Dave的分享之前感覺挺想聽的,聽下來感覺自己能用到的技巧不多,反倒是不如頭天晚上技術party上做的小遊戲對我而言更有意思一點。
主要談談第一天的感想吧。
七牛分享了關於他們數據分析系統的一些架構和方法,針對單個層做了一些詳細分析,可能還是前面佔用了太多,大家也沒這種系統需求,感覺後面觀眾提問更關注在技術實現層面的一些技巧上。
TiDB分享的前半部分內容主要是架構方面的,我之前有考慮引入TiDB,所以基本都是了解的,後面使用技巧也都是一些不錯的技巧,對新入門的而言比較有幫助。總體質量很高,看看大家的回答相信就清楚了。不過現在看完分享之後我就更期待1.0的正式版本了,希望可以儘快引入到我們的生產環境中來。
TonyBai老師的分享其實挺不錯的,我覺得還是可以講更多東西出來。可惜因為約朋友吃飯提前離場沒有聽完,後面補充看了一下slide,如果有興趣擴展一下思維的可以看一下。
understand the interface這個只聽了後半段,恰好一些最想聽的內容在前半段,現在還沒有slide,可能要等下再說了。不過這個介紹的比較全面,是一個比較不錯的interface使用介紹。比如解耦、利用interface實現功能等等都有很多介紹,也是比較贊的topic,推薦大家不要錯過這個slide。
NSQ的改造這個我之前就比較關心,來自有贊的分享。NSQ主要是我們正好就在用做中間件,不過我看現場反應一般,原因應該是大家都沒用過NSQ。後面也有人提到nats,其實也不錯,可以自行對比使用。NSQ其實缺點比較明顯,有贊主要針對這些問題進行了一些改造,思路進行了一些介紹。最後大家有些挑戰關於kafka的,不過我沒用過kafka(我比較土...)不做什麼評價的。我覺得演講者可能有點緊張,對觀眾提問抓不到點確實比較尷尬,不過介紹是不存在什麼問題的。
阿里雲有個分享我其實覺得比較適合在Java類型會議上講,可能對時間把握有點問題,導致半個多小時都是在講阿里雲和Java,台下觀眾一臉懵逼。go-kit其實我之前也看過代碼,很多東西不錯,可惜時間原因也沒講出來。
CoreOS的分享關於Operator的,看群里有人說為了看這個來的,看起來好像之前應該也蠻受關注。不過我們沒用K8s做集群,所以沒法評價。
B站毛劍分享的是B站微服務改造的經驗。因為B站歷史原因問題也做了一些妥協,是給有歷史系統的公司改造提供了很多參考價值,尤其是對計劃轉型Golang的公司。對沒有微服務架構經驗或者對改造入手感覺比較困難的必須推薦,也是下午必看的Topic。反倒是因為我們改造的系統不多,沒有什麼這樣那樣的歷史負擔,反倒沒什麼共鳴了。不過並不是說不好,只是有很多在B站的問題其實在我們這裡落地時就很容易了。不過這並不影響這個分享的質量,絕對是值得一看的,尤其是開發人員增加對架構的理解。
另外一個小建議,這次找吃飯的地方比較頭疼,我覺得下次可以把餐飲一起解決一下(自助也不錯,不過可能不好解決是真的)。比如我第一天中午吃個飯回來,下午第一場都一半過去了...
會議安排比較滿也是另外一個問題,現場人員較多,其實好多人問題也沒有能夠得到充分提問和解答機會。不過好在現場可以溝通或者加微信,起碼大家還是有渠道自己溝通交流。
其他的嘛,見到Dave真人了,晚上party合了一張影,嗯,很開心。第二天中午送書了,沒太仔細挑隨便拿了一本,不過還是覺得很開心的。
第一次參加gopher China,整體感覺比其他大會要有誠意的多。感謝謝大的組織~
第一天:
七牛同學的分享,雖然內容是不錯,但是ppt重心偏向於產品,演講者也傾向於介紹產品,畢竟是贊助商,沒轍。第二個是TiDB,同樣是介紹產品,但是從需求,設計,一步一步改進都講的很好,要是投最佳講師的話,我投申老師。
第三個是go in go way。其實話題挺不錯的,但是演講者的沒有給觀眾一些他的想法,都是一些模凝兩可的結論,不管對錯,這只是一個討論,如果演講者都沒有自己的想法,我覺得這挺失敗的。
第四個是understand the interface。真是和上一個形成對比。。。講的是golang interface的實踐,很贊。不管是新手還是老鳥,是一個很好的session
第五個是NSQ,接觸的不多,演講者還是做了不少的東西,但是沒講清楚,也沒太理解觀眾的提問,現場有點尷尬。
第六個就更尷尬了。。演講者的演講思路挺亂的,完全不知道blabla說啥。。。大部分時間再說java。。。醉了
第七個講的是編排,不過不太了解,就不評價了。
第八個來自B站的毛老師,講述轉微服務的設計經歷和踩過的坑,這樣的交流很容易找到共鳴,贊一個
第二天
第一個是來自Grab的高超,和B站的內容很像,比較吸引人的是他們做了服務之間調用的耗時trace,相關鏈接有opentracing。整體感覺他們做了很多有意思的實踐,挺贊的。第二個和第三個內容不是很感興趣,沒仔細聽。
第四個是Dave的,講了一些有意思的program,因為之前沒怎麼接觸,感覺挺漲姿勢的。
第五個是ezbuy的陳老師,講述他們從c#到golang,包括開發流程的設計,依賴的管理以及微服務調用棧的記錄,乾貨很多。個人比較喜歡他們的開發流程設計的gopath制定,repo作為go path,我本人也是這麼玩的,一定程度上產生了共鳴吧,哈哈。
剩下的就沒在聽了,不是特別感興趣。綜合來說還是很贊的。作為講師的視角我來說一下對這次GopherChina會議的感受
大會前一周 @asta謝 就開始催演講稿,我第一稿寫了14頁謝大覺得內容遠遠不夠,之後連續加班兩晚終稿增加到25頁,依然被認為不夠填滿45分鐘的分享時間。從這裡就能看出組織方希望兩天的會議能有豐滿的內容,海量的信息,讓全國各地趕來的Gopher不虛此行滿載而歸。
至於有評論認為乾貨不足,我認為原因是兩方面的:
一是演講主題覆蓋面廣,一群人聚在一張桌上吃飯不可能每道菜都是自己喜歡的,關注於系統架構的人未必對Golang深層語法有興趣,關注於語言本身的人也未必想去了解Docker和微服務,大雜燴如果吃的不盡興以後或許能嘗試一下按照topic類型分幾個小會場,大家自由選擇,當然前提是會議規模發展到足夠大。
二是Golang的國內社區還不夠強大處於起步階段,就從Golang的中文圖書看,多是基礎語法入門書,極少高級進階,幾乎沒有深度研究,在摸石頭過河階段自然是實踐經驗分享的多有影響力有深度的少。再看國內的社區組織,本次大會的組織幾乎是靠 @asta謝 一人之力撐起來,會議主題的徵集和篩選方面難言完美,如果全國各地區有自己的組織,有自己的日常分享積累,通過地區組織篩選和推薦一些GopherChina大會主題,從主題覆蓋面到內容精彩程度或許更容易讓大家滿意。
有人說這次失望了以後不來了,有點因噎廢食的意思。看事物要有動態眼光看到發展趨勢,Golang良好的設計,快速改進的版本,向上的勢頭明顯。GopherChina大會同樣如此,我們不妨更積極樂觀的看待才發展了三年的GopherChina,國內這麼多程序員我們在全世界技術社區的影響力都在上升階段,越辦越好不是一句套話而是正常的規律。
回到GopherChina2017本身,說一下兩位外國講師的趣事。Francesc說出來的幾句中文發音還挺准,午飯時筷子耍的跟我們沒區別,每道中國菜都要伸幾筷子,然後聽旁邊的小夥伴查手機翻譯介紹菜名,其樂融融,有同事猜他跟小扎一樣有個華裔老婆。Dave午飯時只喝了一口橙汁半杯紅茶,然後坐著不動時不時掏出手機看時間,我先問他是否需要刀叉被拒絕,又問是不是不喜歡這些食物,他這才說下午1點有演講所以不吃東西保持好狀態,我十分佩服這種認真態度。最終Dave的演講確實非常有深度刷新了我對Golang的認知,可能不少聽眾沒聽明白或者覺得這是黑魔法炫技,其實這些內容有助於我們理解Golang的內部實現,寫出更高性能的代碼。
最後回到我自己的話題上,再歸納總結一下,Go在證券行情系統中的應用。考慮到大部分聽眾不了解證券行業,我前面兩頁都在介紹公司和業務知識,為了緩解枯燥扯了幾個段子,其實一直心懷忐忑,別的講師都那麼嚴肅我這樣閑扯真的好嗎?然後進入到技術話題就嚴謹起來,擔心說錯了誤導人或者沒講清楚。
技術內容從GC開始,其實Golang社區對GC不是太關心,Java社區有一堆的GC演算法和參數可以配置調節,Golang開發社區認為你作為語言的使用者如果關心到GC內部說明你「太聰明」了,這個觀點我認為適用於輕度使用者不適合重度用戶。老司機不用學會自己造車,但是對汽車的原理構造有一定認識才能真正開好車。我們作為一個對性能有追求的後端團隊,始終在拿Golang向C/C++的性能看齊,GC是我們遇到的首要性能阻礙,所以我花了一些精力研究GC的理論,然後找到了一些減輕Golang GC壓力的措施方法,比如避免頻繁創建銷毀對象,通過緩存池循環回收使用對象,合理使用Goroutine棧對象。對於Goroutine的棧相關背景知識Dave分享的Escape Analysis和Goroutine Stack Split是很好的補充,我在他後面講更容易說明白。
作為面向並發的語言,我們如何解決一個個並發中的問題,從CPU Cache Miss問題開始建立一點計算機系統結構的意識,知道我們的代碼怎麼在硬體上跑的才能寫出性能更好的代碼。然後分享一個我一直在使用的並發性能好的多級哈希表,很多哈希表的實現有全局的元數據,每次寫會鎖住整個哈希表,還有的哈希表有哈希桶的概念,每次加鎖會鎖住同一個哈希值的所有存儲對象,這類演算法邏輯上完備實現也簡單早已寫入經典的演算法與數據結構教科書。我介紹的多級哈希看起來簡陋,邏輯上不完備存在溢出的可能性,確是工程實踐中能解決問題的方案,鎖的粒度小到每一個存儲對象幾乎不會衝突,做好容量規劃和告警也不會顯露數據溢出的缺陷。
Go的運行時庫以及第三方庫,有時候不能滿足我們的性能要求,這類問題的一個必殺技就是使出Cgo大招,用C/C++解決性能問題。因為Cgo調用一次的性能不高,所以進入Cgo線程可以不必返回,通過內存中構建消息隊列與Go通信。
網路層IO吞吐量也是優化的一個性能手段,同一個Host上的Docker容器,以及區域網內部跨Host,都可以使用更大的MTU。另外結合網卡的加速特性,也能降低CPU的負荷。對於某些Docker使用了veth驅動的虛擬網卡,如果要經過Docker Host網卡與外部通信,兩塊網卡之間不一致的特性可能導致發送或收到的數據包有問題。
這次分享的內容可能還有沒講清楚的,大家有問題可以留言討論。
吐槽下阿里雲的演講
本人也是Java開發整個講的啥玩意兒??說話斷斷續續,吞吞吐吐,Spring和Dubbo瞎扯了半天,我特么也是醉了,說什麼Spring太複雜新人學不會,,我勒個去雖然表達能力差也沒辦法
特么ppt可以精心準備下的吧?1200個人特么花了錢大老遠的過來就讓你浪費生命的?一點都不用心,超級不尊重大會組織者和觀眾唉,這種水平居然還是技術專家說什麼好呢自月餅事件以後對阿里雲的印象又差了很多私以為interface那一段應該分配一個更有精神的時間段,飯後會犯困。。。這段演講是很有必要好好學習一下的,用好interface絕對事半功倍!
作為首次參加go類型會議的架構,感覺除了為什麼用go以外,大部分的議題都被轉到架構身上了,而我很多的期待其實是類似於國外兩個講師這種針對go本身或者圍繞一些周邊例如沒講出來的gokit的一些話題,感覺這樣子才更像是一個語言類型大會的側重,而不是as的縮小版。
組織者還是很用心的,不過部分講師的ppt給人感覺就是把其他時候的演講內容生生湊幾頁go相關內容。希望未來越辦越像javaone一樣吧~越來越好。
ps.在大會群里,大家都說眾口難調,但是有一點我就不同意了,來go這邊學習架構理念,why?你想知道人家基於這個思路怎麼用go實踐我還能理解,但是居然會希望在語言類型的大會上知道思路,當這邊是infoq么……整體感覺, 兩個字: 一般。
點在於,精彩的分享,提問時間太少。一般甚至很挫的分享,食之無味。說句不好聽的,有的分享感覺就是臨時上陣,邏輯很混亂。
至於演講者準備的用心程度以及場上演講水平,大家都有目共睹,檔次還是很明顯的。不得不說,CoreOS團隊和國外友人的分享,演講的思路還是非常清晰的,slides和video做得也很好。TiDB、Bilibili、Grab、ezbuy、VMware團隊的分享都很好,加分。至於某雲的分享和某軟的分享,其他答案該說的也都說了。
希望未來的大會,重質,而非重量。
第一天,TiDB 和Bibi 講的不錯
第二天,Grab 和 ezbuy 分享的比較不錯
總的來說,topic 安排有點多了,提問和交流的時間太短了,整個過程時間太緊張了,對聽眾的精力也是一大考驗。
參加了第一天。感覺8個topic有點多,一天下來比較吃力。
講師方面tidb和bilibili的印象最深刻。希望大會越辦越好阿里雲這種隨便能摸出一副好牌的,居然一來就掛機了。
收穫最大的是聽毛劍老師的演講;Grab 的技術很不錯,會後和高超老師聊了下opentracing存儲的一些問題;鄧老師的etcd-operator 也很成功,本來期待講的更深入些;TiDB早就知道很厲害,shenli 老師講的很好,沒有過度深入,分寸把握很好。
frank, dave 的演講主要是針對語言角度,也很好,特別是dave的pragma, 了解了一些go的黑魔法。
特別糟糕的是 阿里雲的演講,嚴重超時,中間PPT的標題還寫錯單詞,內容也很亂,講了半天Dubbo, 一個開源RPC,不知道有啥好說的。
我是打算聽聽關於docker k8s相關的東西。剛去的時候有贊李文在講nsq的東西還是不錯的。後面的阿里講的是什麼狗屁東西,說一堆dubbuo,Spring 什麼,時不時夾雜個英文單詞,話也說不清楚,內容沒有乾貨。在後面那個美國回來的兄弟,就相當於來了個k8s的科普一樣,聽了半天就是個k8s部署個hello world的感覺。我他媽幾百塊的票大老遠來就給我聽這個。真感覺不值,組委會審核嘉賓的內容就不能用點心,不要大公司頂個技術專家的頭銜就能來糊弄,相反感覺中小型公司的中高層技術負責人都比較實在,阿里的人就真的算了,真正有貨的人都比較忙,或不屑於來,不是有偏見,好幾次都是這種感覺。感覺就一混子。
個人比較喜歡的主題有介紹 TiDB、微服務相關和兩老外的 Go 語言實踐,學到很多乾貨。
發現一個有意思的現象,兩老外講的內容都是跟 Go 語言相關的知識點,其他人則是介紹如何應用 Go。看到回答里有同學抱怨和 Go 相關的很少,我倒覺得這樣安排挺好的,畢竟光講 Go 語言也挺沒意思,最終還得落實到實際應用場景。
除了場內精彩的 session,場外有各種掃碼送貼紙、T恤、書等活動,臨走前和 Dave 合了張影,蠻開心,票價算是賺回來了。申老師講得不錯,提問時間太少了,沒有來得及問問題。其他略水
推薦閱讀: