→ tommady: 喔對了,主管還挑明,以後誰敢改他這方式架構,殺全家。 10/16 02:25
→ tommady: 。。 10/16 02:25
→ tommady: 十分的無言。 10/16 02:25
推 richard07250: 聽話 辭職 選一個 10/16 02:28
推 sing10407: 吞阿 他是主管欸。反正出事責任是他扛 10/16 02:30
→ iFEELing: 你有遇過平常大小聲 出事就把屬下推出去擋的主管嗎? 10/16 03:00
→ iFEELing: 他會負責就照他的指示寫 他不負責就早點閃免得當替死鬼 10/16 03:12
→ pttworld: 至少這case的要拿到。 10/16 06:09
推 Jichang: 你把他想成 你有兩層要寫 不就好了 10/16 06:44
推 steve1012: 再寫一層interface? 10/16 07:05
噓 wesley234: 你的主管是對的 10/16 08:58
推 maxqq: 反正他要負責,就給他負責,輕鬆點,拿錢辦事,又不是一輩 10/16 09:17
→ maxqq: 子在這家公司做事 10/16 09:17
推 maxqq: 如果依照上一層是接收指令後,分析指令,呼叫邏輯 10/16 09:28
→ maxqq: 那其實,你主管的方式可能是比較正確 10/16 09:29
推 maxqq: 把 command_handle 拆細一點,比對 start/stop 10/16 09:35
推 luckyshin: 你是被主管聘來幫他做事,不是被聘來跟他吵架的 10/16 11:15
推 f124: 照主管說的做阿 我只管錢有沒有進來而已 干我屁事 10/16 11:18
推 yyc1217: 你不是老闆 就是需要妥協 客戶要大便就給他大便 頂多提醒 10/16 11:28
→ yyc1217: 一下這是大便 10/16 11:28
推 vi000246: 寫個負責處理命令的去呼叫interface 10/16 11:41
推 longlyeagle: 這不是軟體架構問題 是工作分配問題 10/16 11:49
→ badyy: 寫清楚接手時就是被這樣要求的,別被牽拖就好 10/16 12:47
→ badyy: 總比哪種前面接手就有問題,還反過來問你為什麼的好 10/16 12:56
推 stosto: 我覺得你主管是對的耶.... 10/16 13:59
推 balaking: 我比較偏向你主管的架構分類... 10/16 15:04
→ shadow0326: 本來就不會只有兩層 中間一層主管不想寫 叫你寫而已 10/16 15:27
推 giantwinter: 離職 10/16 15:30
推 balaking: 而且我覺得你主管的工作不叫game server, 應該是api ada 10/16 15:50
→ balaking: 你的工作就是用主管的lib把remote data存進db, 懂了吧 10/16 15:56
→ htury: 想太多,趕快做完交差領錢就對了,在台灣還期待什麼是對的 10/16 16:06
推 bobju: 這主管好啊~ 很明確地表明了分工態度, 誰聽誰的很清楚; 要 10/16 17:30
→ bobju: 是遇到打混戰的主管跟你說好好好, 最後再翻臉不認帳, 那才 10/16 17:31
→ bobju: 要幹在心裏. 10/16 17:31
→ anr2: 學習被領導,學習cowork 10/16 17:45
→ dnabossking: 還好,不是只有我覺得主管是對的 10/16 18:05
→ massrelay: client 跟 server 溝通不能因為處理遊戲邏輯卡住或等待 10/16 19:07
→ massrelay: 。 10/16 19:07
抱歉, 小弟圖和文的解釋中沒有提到命令的收送方式,
我們用Golang實做,
所以client每個命令進來game server, 都是一個單獨的goroutine,
我的想法是, 這條goroutine應該要直接呼叫interface的command handle,
而非還得傳channel給game logic去處理.
推 now99: 離職阿 10/16 19:12
推 mathrew: 先不管這個架構誰對誰錯 基本上主管要負責 你就照他說 10/16 19:57
→ mathrew: 的做,然後錢有進戶頭就好了 10/16 19:57
※ 編輯: tommady (114.44.197.244), 10/16/2016 20:26:01
→ AlanSung: 一進來就生一條 goroutine ? really? 10/16 21:26
→ badyy: 這厲害了,一個cmd一個goroutine ??? 怪可怕的 10/16 23:52
對, 因為關於balance的部份, 有另一台server在玩家進入game server之前就先管理,
所以一台game server, 不會有過多玩家的問題,
況且依照golang的特性, 幾百萬條goroutine都不是問題,
因此很放心的就每個命令一條goroutine XD.
※ 編輯: tommady (114.44.197.244), 10/17/2016 07:19:03
→ AlanSung: 所以看來你沒有做過 profiling,有用過 runtime/pprof嗎 10/17 08:00
→ AlanSung: 而且如你所述的話,你把程式的穩定性交給前一台srv 10/17 08:02
→ AlanSung: 一個 goroutine 算你 2KB 好了 1M 就 2G 了 10/17 08:04
→ AlanSung: 而且你什麼時候有去做 GC 呢? 不管怎麼看風險都很大 10/17 08:05
→ AlanSung: 如果有看系統 dashboard , memory 一直往上,你家的 10/17 08:06
→ AlanSung: DevOps / Ops 不會跳腳嗎? 有沒有考慮用 channel 10/17 08:06
→ AlanSung: 加固定數量的 goroutine 比較好呢? 10/17 08:06
推 Argos: 這種沒有什麼標準答案的東西你是在爭什麼?不就兩條路 10/17 09:33
→ anr2: 意, 還是需要有 load balance 跟 worker pool 10/17 09:49
→ anr2: 我沒有實際遇過goroutine, 但是從文件來看一個 thread block 10/17 09:49
→ anr2: 應該說一個 goroutine block 就會在建立一個 goroutine 10/17 09:50
→ anr2: 把資源分配全部交給go 感覺就很危險 除非你有座 backpresure 10/17 09:51
推 iamshiao: 推 Jichang,我看的時候也是這樣想,不過時間要夠。 10/17 11:03
→ Argos: 建議原PO都依你主管的去做就好 甚至今天主管硬要我變數全部 10/17 13:26
→ Argos: 取a b c 但他一個月給我十萬 我照寫不誤 懂? 10/17 13:26
推 genesic: golang寫出來的東西無法模組化嗎? 為什麼會爭這個? 10/17 15:00
噓 Sidney0503: 我覺得不想溝通的人是你 你沒去理解你主管的設計理念 10/17 18:04
→ Sidney0503: 你還是快點離職吧 不要繼續待比較好 10/17 18:05
受教了, 因為玩家數量永遠衝不過200... 所以profiling就懶惰了...
如果說要用channel去限制命令傳達的數量, 那何不直接game server在聽的時候,
就做管控呢? 為什麼得丟到game logic來管控呢? 這不是多費一道工嘛?
這也是我十分想不透的一點.
我以為game logic只要純粹定義怎麼玩一局遊戲就好, 而不是還得管其他拉里拉雜的.
一點拙見, 還請包含.
至於為什麼會爭執... 其實主管只要告訴我, 他的想法好壞在哪裡, 別情緒化就爆炸,
我一定會接受的, 至於現在, 我就是"當狗"聽他的作法,
但是十分好奇他的設計想法, 又或者是我想法太狹隘,
所以才來板上請求賜教.
感謝.
※ 編輯: tommady (114.44.197.244), 10/17/2016 21:00:45
→ AlanSung: 就你上面回的第二段,請查一下 defensive programming 10/17 21:07
→ AlanSung: 如果你不能理解為什麼,可以問問主管或是其他比較有 10/17 21:08
→ AlanSung: 經驗的人 10/17 21:08
謝謝您的回覆, 我的game logic裡面當然會有一些簡易的檢查判斷,
例如最高上限幾個人, 目前cpu, memory使用量, 然後反饋給game server,
(其實cpu, memory 使用量我也覺得應該是game server要幫我監控才對 XDDD)
我想應該能阻擋一些可怕的例外, 但是小弟想理解的是令一層面的問題,
為什麼放著簡單的function call不用, 偏要IPC.
感謝您.
※ 編輯: tommady (114.44.197.244), 10/17/2016 21:22:08
→ gogogogo3333: 設計始終出自於需求,沒有絕對優勢的設計模式 10/18 07:12
→ AlanSung: 若是這樣,我想你能不能 show 一下你的 test cases 呢 10/18 08:06
→ AlanSung: 我們可以從 test case 看出來別人(api, server)怎麼用 10/18 08:06
→ AlanSung: 有助於討論原本的設計哪種比較好 10/18 08:07
→ Argos: 去上班講難聽點就是當狗啊 XDDDD 10/18 13:32
→ brightest: 聽他的記得錄音 10/18 13:36
→ justben: inject response 10/19 00:34
→ badyy: 如果主管有提出實際分法就照做,最怕的是沒提又要等人提 10/20 00:36
→ badyy: 等人驗證,搞個好像是出錢的人才可怕 10/20 00:36
推 longlongint: 先閉嘴硬肏程式碼 做完這期就閃 10/20 16:26