上次簡單地把日誌系統從windows上移植到linux中,並修復其中bug,使其功能基本可行。
現在我又做了乙個小小的socket應用程式,將日誌系統嵌入進去,基本上能使用,但仍然存在不足,經過一系列修復後,自我感覺算是能小用一把了。
日誌系統的改進:
1. 用鎖機制實現了多執行緒對日誌介面的非同步呼叫。
2. 增加根據日誌等級輸出列印資訊的功能,外部應用程式能控制日誌列印的等級。
3. 增加定時器功能,每隔5秒鐘會自動將快取中的日誌資訊輸出到檔案中。這樣從檔案中看到的資訊就會比較全面和完整。
socket應用程式的設計:
主要是server端:
listen將請求放入等待佇列中
accept會從等待佇列中取出乙個請求,生成clientfd返回。
根據這樣的linux的兩個標準函式,我有如下思路:
1. 首先開闢乙個陣列,用於存放clientfd
2. 在主線程a裡不斷迴圈嘗試accept,將生成clientfd放入到陣列中。
3. 主線程中生成新執行緒b,用於迴圈讀取陣列的請求,然後做出相應的處理。
4. 這時需要注意執行緒a,b之間的同步與互斥訪問陣列。同步關係如下:
a執行緒發現陣列已滿,無法繼續放入clientfd,則等待。當陣列為空時,a執行緒放入乙個fd之後,則發出喚醒b執行緒的signal。
b執行緒發現陣列已空,無法繼續讀取clientfd,則等待。當陣列為滿時,b執行緒刪除乙個fd之後,則發出喚醒a執行緒的signal。
當然我的實現要比這個稍微複雜一些,畢竟考慮的東西更多,上面只是基本的說明,感覺像是在做試卷一樣,呵呵。
基於Flume的美團日誌收集系統 二 改進和優化
來自 美團技術部落格 在 基於flume的美團日誌收集系統 一 架構和設計 中,我們詳述了基於flume的美團日誌收集系統的架構設計,以及為什麼做這樣的設計。在本節中,我們將會講述在實際部署和使用過程中遇到的問題,對flume的功能改進和對系統做的優化。在flume的使用過程中,遇到的主要問題如下 ...
基於Flume的美團日誌收集系統 二 改進和優化
dju alex 2013 12 09 22 35 在 基於flume的美團日誌收集系統 一 架構和設計 中,我們詳述了基於flume的美團日誌收集系統的架構設計,以及為什麼做這樣的設計。在本節中,我們將會講述在實際部署和使用過程中遇到的問題,對flume的功能改進和對系統做的優化。在flume的使...
基於Flume的美團日誌收集系統 二 改進和優化
在 基於flume的美團日誌收集系統 一 架構和設計 中,我們詳述了基於flume的美團日誌收集系統的架構設計,以及為什麼做這樣的設計。在本節中,我們將會講述在實際部署和使用過程中遇到的問題,對flume的功能改進和對系統做的優化。在flume的使用過程中,遇到的主要問題如下 a.channel 水...