《Go 語言併發之道》讀後感 第五章

2022-01-24 13:10:02 字數 984 閱讀 3812

異常時什麼,什麼時候發生,提供哪些好處?我們需要明確以下資訊:

發生在什麼時間,什麼位置,優秀的 golang 第三方日誌庫可以幫助到我們

異常通常被我們分為兩類:

正如上一章錯誤處理中所說我們需要將錯誤視為一等公民存在,個人認為 golang 錯誤處理機制的特立獨行,讓我重新審視系統中可能存在的錯誤。

我們為什麼希望併發程式支援超時呢?這裡有幾個原因:

陳舊資料

試圖防止死鎖

併發程序可能被取消的原因有很多:

在分布式系統中非常常見的,心跳是併發程序向外界發出訊號的一種方式。書中討論了兩種心跳:

當乙個請求到達我們的服務,我們可以使用 nginx ,haproxy 等分發到多個節點上,但這會消耗過多的計算資源,空間資源(伺服器機櫃),維護成本。如果我們都在程序內,或程序間通訊,我們僅僅多消耗了一部分記憶體資源。最為典型的案例就是利用 golang 重寫了負載層的中介軟體,例如:

cncf traefik

筆者最近剛剛到一家網路安全公司就職運維工程師,了解到很多關於網路攻擊的資訊,最為明顯的就是 ddos,cc攻擊。ddos 的攻擊可能是利用 udp服務反射, 或殘缺報文造成流量洪峰,可能比較已於識別。但是 cc 攻擊,就是正常的訪問,大量的正常訪問,導致**不可用。對於這樣的場景我們不單單需要在負載層新增速率限制,在後台內部呼叫層也需要新增。

特別是在容器化的環境中,彈性擴縮雖然美好。但是有一句至理名言,一樣東西有多光鮮,背後就有多陰暗。我曾經經歷過,服務瘋狂擴容導致執行在小機上的 oracle 資料庫不堪重負的場景。在訪問 oracke 也需要速率限制。

作者最後又再次強調了,**異常的 goroutine ,看來併發安全一直是乙個非常值得關注的問題。

本次**到此就要畫上句號了。至於原書的最後一章 goroutine 和 go 語言進行時,我相信中文集裡面沒有人比劉丹冰講的更加透徹,希望各位給與作者三連支援。附上 b 站鏈結 gpm 模型

2021 讓我們共同啟航,在十四五開局之年,金牛聚福,身體健康,驅疫避害。

閱讀構建之法讀後感第五章

軟體的設計與實現。一 我們寫軟體就是為了解決使用者的需求,我們要表達和傳遞下面的這些資訊。在問題解決中的現實世界裡,都有哪些實體,如何抽象出我們真正關心的屬性,實體之間的關係是什麼,在這個基礎上,使用者的需求是什麼,軟體如何解決使用者的需求。在 設計與實現段 我們要搞清楚軟體如何解決這些問題的需需求...

大道至簡第五章讀後感

做過程不是做工程,失敗的過程也是過程。軟體工程這個概念是上個世紀60年代末被提出的概念,成熟的標誌是軟體工程的瀑布模型的提出。瀑布模型將軟體開發的過程分成需求 分析 設計 開發和測試等5個主要階段,其主要環節關係表現為如下這樣一種形態 計畫 可行性研究 需求分析 系統設計 程式設計 編碼與模組測試 ...

大道至簡第五章讀後感

大道至簡第五章題目是失敗的過程也是過程,但是失敗的工程就不是工程了。因為乙個工程需要的就是你最後的實現,是乙個交給客戶或者交給你的專案經理能過使用的東西。所以說過程不等於工程,儘管可以從工程中提煉出許多過程模型,但是做完過程的沒乙個階段並不等與做了乙個工程。因為工程的目的在於實現。實現才是我們做工程...