原创 緩存服務器設計與實現(四)

        這裏我們聚焦一個問題,就是緩存滿的情況。一般的cache都會配置容量,無論是內存緩存還是磁盤緩存,都不能無節制的去使用他們。這裏以磁盤緩存爲例,如果配置的限額已用完,該如何處理呢?         對於nginx,如

原创 INT13中斷詳解

直接磁盤服務(Direct Disk Service——INT 13H)   00H —磁盤系統復位  01H —讀取磁盤系統狀態  02H —讀扇區  03H —寫扇區  04H —檢驗扇區  05H —格式化磁道  06H —格式化

原创 緩存服務器設計與實現(三)

        這裏我們討論一個比較重要功能,在之前的文章中提到過,取源合併。爲什麼要單獨把它拿出來討論呢?其實主要是出於個人工作的角度。之前公司裏的cache需要這樣一個功能,現有的squid該功能不完善,並且也不太適合我們的業務。然後

原创 關於nginx中upstream機制的思考

網上搜過upstream相關分析的同學可能都已經有了大概的瞭解了,而且很多大牛分析的也很棒,我這裏爲什麼還要多說幾句呢?一來是總結自己的一些理解,二來是對前輩分析的一些補充,希望能帶給大家更多啓發。先給出阿里技術牛們的總結和分析,供大家參

原创 緩存服務器設計與實現(五)

上次講到lru與緩存重建,這次主要講一下關於過期處理的一些主要問題。在討論這個問題之前,有個相關的問題需要大家有所瞭解。就是對於一個緩存如期只來說,什麼東西應該緩存,什麼不應該緩存。這是一個比較複雜的問題,涉及到http協議的諸多細

原创 在小公司裏混

最近這段時間公司在招人,我也面試了不少應聘者,以30歲上下,工作5年左右的人居多。這個年齡段其實是中小公司的主要選擇對象,這類公司一般招人都是爲了項目需要或者急需熟手來幹活,而很少像大公司那樣,招一些有潛力,底子好,有上進新的應屆學生。

原创 關於ngx_epoll_add_event的一些解釋

static ngx_int_t ngx_epoll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags) { int op;

原创 關於ngx_trylock_accept_mutex的一些解釋

關於nginx裏面accept互斥鎖的處理,羣裏討論了很多次,很多人都提出了各種問題,比如問到:在ngx_process_events_and_timers中,爲什麼在釋放ngx_accept_mutex之後,不把ngx_accept_m

原创 騰訊協程庫libco的原理分析

我們以example_echosvr.cpp爲例子,這個例子的作用就是讀取客戶端的請求,然後按原樣返回給客戶端。在它的main函數裏創建了proccnt進程,每個進程裏有cnt個task。這裏的proccnt和cnt都是來自運行參數。

原创 TCP協議疑難問題集錦

原文出自:http://blog.csdn.net/dog250/article/details/6612496 1.網絡協議設計 ISO提出了OSI分層網絡模型,這種分層模型是理論上的,TCP/IP最終實現了一個分層的協議模型,每

原创 緩存服務器設計與實現(番外篇)

這個系列又更新了。 今天談一個問題,目前cache軟件在業界的使用現狀。cache系統其實最大的使用場景,還是主要集中在CDN廠商裏。 大概在2010年之前,各大CDN廠商基本清一色的使用squid。那時候的squid是絕對的主力。 sq

原创 緩存服務器設計與實現(七)

本文講緩存中的內容管理–目錄的刪除 基本原理 目錄刷新,在很多地方也叫目錄刪除,這個功能是要求CDN的cache系統,刪除特定目錄下的所有文件(有些變態的需求,是讓刪除目錄下符合特定規則的文件)。這裏只是提供一些思路和簡單的實現方案,

原创 關於MP4視頻拖動的原理與分析(一)

本來想說說關於mp4和一些常見視頻文件格式方面的歷史。現在想想沒啥必要,畢竟本文是在講關於mp4點播拖動方面的技術細節。緒論,前言神馬的顯得有點多餘。 說起MP4,不得不提“Digital container format”的概念。維基百

原创 詭異的_GNU_SOURCE宏

好久沒更新博客了,突然來一篇,這...難道是乾貨?......在看正文之前請允許我先說幾句話,。好了看下面的內容: 詭異代碼之test.c: #include <aio.h> int main()  {      stru

原创 緩存服務器設計與實現(六)

本文講緩存中的內容管理–文件的刪除。 基本原理 緩存系統中的文件,從無到有是被動產生的。初始狀態,緩存系統中是空的,請求過來之後,緩存會回源取,然後存在本地。而不像web服務器,文件是通過其他的手段(傳統的是通過ftp上傳)來創建的,