原创 我們爲什麼需要分佈式系統?

分佈式系統解決了什麼問題? 簡單來說,分佈式系統的出現,主要是爲了解決單體系統的不足。 分佈式系統解決了單機性能瓶頸導致的成本問題。由於摩爾定律失效,廉價PC機的性能瓶頸無法繼續突破,雖然小型機和大型機能夠實現更高的單機性能,但是成本太高

原创 怎麼算是在工作中負責?

作爲打工人,受人之祿,忠人之事。但就像呼蘭說的,躺有躺的價格,卷有卷的價格。身爲程序員,我們在平時工作中要做到怎樣才能算是“負責”了呢? 我們可以把工作邊界和範圍分爲三部分: 個人基本能力 工作內容 工作時間 對自己的基本能力負責 基本

原创 怎麼更好的溝通?

程序員羣體普通被認爲是不善於溝通和交流,但是當我們在職場中時間越長,承擔的責任越大,交流和溝通也就越重要。 爲什麼程序員不喜歡交流? 喜不喜歡交流,主要和性格有關,和職業關係不大,但是爲什麼程序員不喜歡交流的概率更高呢?我覺得有以下幾點原因

原创 怎麼用工作郵件?

當在工作中遇到需要不同項目組配合的場景,你一般會怎麼做溝通呢?是在即時通信軟件上發消息打電話甚至面聊,還是對同事說一句“你發封郵件給我吧,記得抄送我老闆”? 雖然現在即時通信軟件非常強大,但是在工作中,郵件並不是一個可有可無的東西,作爲一個

原创 爲工作排好優先級

工作,是幹不完的,因此我們需要分清輕重緩急,爲它們劃分優先級,這樣纔不至於讓自己手忙腳亂。 給手頭的事情排上正確的優先級,是一項很重要的工作能力。 優先級有很多考量,並不是簡單的先來後到的線性時間順序,我們需要根據事情的要緊程度來安排優先級

原创 聊聊數據壓縮

什麼情況適合使用數據壓縮? 數據壓縮不僅能節省存儲空間,還可以用於提升網絡傳輸性能。 通過網絡傳輸數據,使用數據壓縮前後,處理的時間會有一些差別: 壓縮前:傳輸未壓縮數據耗時 壓縮後:壓縮耗時+傳輸壓縮數據耗時+解壓耗時 壓縮和解壓縮的

原创 怎麼使用硬件同步原語替代鎖?

什麼是硬件同步原語? 硬件同步原語(Atomic Hardware Primitives)是由計算機硬件提供的一組原子操作。 我們常見的原語操作有CAS和FAA兩種。 CAS Compare and Swap(CAS),字面意思是先比較,再

原创 怎麼正確使用鎖?

鎖的原理:任何時間都只能有一個線程持有鎖,只有持有鎖的線程才能訪問被鎖保護的資源。 我們接下來看一下在鎖的使用上有什麼最佳實踐。 避免濫用鎖 如果能不用鎖,就不用鎖;如果你不確定是不是應該用鎖,那也不要鎖。 使用鎖後帶來的代價: 加鎖和解

原创 爲什麼Kafka的性能那麼好?

Apache Kafka是一個高性能的消息隊列,在衆多的消息隊列產品中,Kafka的性能是處於第一梯隊的。 Kafka的高性能主要取決於以下幾方面: 使用批量處理的方式來提升系統吞吐能力 基於磁盤文件高性能順序讀寫的特性來設計的存儲結構

原创 怎麼避免服務內存溢出?

在高併發、高吞吐的場景下,很多簡單的事情,會變得非常複雜,而很多程序並沒有在設計時針對高併發高吞吐量的情況做好內存管理。 自動內存管理機制的實現原理 做內存管理,主要考慮申請內存和內存回收兩部分。 申請內存的步驟: 計算要創建的對象需要佔

原创 應用程序之間的通信傳輸協議

傳輸協議是應用程序之間對話的語言,涉及傳輸協議,並沒有太多規範和要求,只要通信雙方的應用程序都能正確處理這個協議,沒有歧義就可以了。 數據“斷句” 在數據傳輸的過程中,我們需要處理“斷句”,無論我們定義什麼字符作爲分隔符,它都有可能會在傳輸

原创 怎麼選擇數據序列化方案?

什麼是序列化和反序列化 當數據在網絡上傳輸時,傳輸數據的基本形式是二進制流,要想使用網絡框架的API來傳輸結構化的數據,必須得先實現結構化的數據和字節流之間的雙向轉換。將結構化數據轉換成字節流的過程稱爲序列化,將字節流轉換成結構化數據的過程

原创 怎麼利用異步設計提升系統性能?

異步是一種程序設計的思想,使用異步模式設計的程序可以顯著減少線程等待,從而在高吞吐量的場景中,極大提升系統的整體性能,降低請求時延。 同步設計流程 我們假設要做一個轉賬的業務,即從賬戶A中轉賬100元到賬戶B中,它包含2步: 從A的賬戶中

原创 怎麼處理消息積壓問題?

消息積壓是我們在使用消息隊列時經常遇到的問題,它的直接原因是系統中某個部分出現了性能問題,沒有來得及處理上游發送的消息。 優化性能避免消息積壓 當我們引入消息系統後,站在消息系統的角度,整個系統可以分爲三部分:1. 消息生產者,2. 消息隊

原创 怎麼處理消息重發的問題?

消息隊列在消息傳遞的過程中,如果出現傳遞失敗的情況,發送方會重試,在重試的過程中,可能會產生重複的消息。 消息重複的情況必然存在 關於傳遞消息時能夠提供的服務質量標準,MQTT協議給出了三種不同的標準: At most once:至多一次