當前位置:首頁 » 操作系統 » libevent源碼

libevent源碼

發布時間: 2022-08-25 09:46:40

『壹』 如何在linux下實現event事件機制

一、Libevent簡介

libevent是一個基於事件觸發的網路庫,適用於windows、linux、bsd等多種平台,內部使用select、epoll、kqueue等系統調用管理事件機制。
特點:
事件驅動,高性能;
輕量級,專注於網路,不如ACE那麼臃腫龐大,只提供了簡單的網路API的封裝,線程池,內存池,遞歸鎖等均需要自己實現;
開放源碼,代碼相當精煉、易讀;
跨平台,支持Windows、Linux、BSD和Mac OS;
支持多種I/O多路復用技術(epoll、poll、dev/poll、select和kqueue等),在不同的操作系統下,做了多路復用模型的抽象,可以選擇使用不同的模型,通過事件函數提供服務;
支持I/O,定時器和信號等事件;
採用Reactor模式;

二、源碼組織結構

Libevent 的源代碼雖然都在一層文件夾下面,但是其代碼分類還是相當清晰的,主要可分為頭文件、內部使用的頭文件、輔助功能函數、日誌、libevent框架、對系 統I/O多路復用機制的封裝、信號管理、定時事件管理、緩沖區管理、基本數據結構和基於libevent的兩個實用庫等幾個部分,有些部分可能就是一個源文件。
1)頭文件
主要就是event.h:事件宏定義、介面函數聲明,主要結構體event的聲明;
2)內部頭文件
xxx-internal.h:內部數據結構和函數,對外不可見,以達到信息隱藏的目的;
3)libevent框架
event.c:event整體框架的代碼實現;
4)對系統I/O多路復用機制的封裝
epoll.c:對epoll的封裝;
select.c:對select的封裝;
devpoll.c:對dev/poll的封裝;
kqueue.c:對kqueue的封裝;
5)定時事件管理
min-heap.h:其實就是一個以時間作為key的小根堆結構;
6)信號管理
signal.c:對信號事件的處理;
7)輔助功能函數
evutil.h 和evutil.c:一些輔助功能函數,包括創建socket pair和一些時間操作函數:加、減和比較等。
8)日誌
log.h和log.c:log日誌函數
9)緩沖區管理
evbuffer.c和buffer.c:libevent對緩沖區的封裝;
10)基本數據結構
compat/sys下的兩個源文件:queue.h是libevent基本數據結構的實現,包括鏈表,雙向鏈表,隊列等;_libevent_time.h:一些用於時間操作的結構體定義、函數和宏定義;
11)實用網路庫
http和evdns:是基於libevent實現的http伺服器和非同步dns查詢庫;

『貳』 libevent源碼需要什麼基礎

很明確的告訴你:VC中可以用libevent庫。
方法:
1、下載libevent源碼。
2、用VC編譯,一般編譯成靜態的。
3、在項目中配置libevent庫。
4、引用。
你可以按著以上步驟來。應該沒問題。

『叄』 如何安裝FastDFS

Google了一下,流行的開源分布式文件系統有很多,介紹如下:

mogileFS:Key-Value型元文件系統,不支持FUSE,應用程序訪問它時需要API,主要用在web領域處理海量小圖片,效率相比mooseFS高很多。
fastDFS:國人在mogileFS的基礎上進行改進的key-value型文件系統,同樣不支持FUSE,提供比mogileFS更好的性能。
mooseFS:支持FUSE,相對比較輕量級,對master伺服器有單點依賴,用perl編寫,性能相對較差,國內用的人比較多
glusterFS:支持FUSE,比mooseFS龐大
ceph:支持FUSE,客戶端已經進入了linux-2.6.34內核,也就是說可以像ext3/rasierFS一樣,選擇ceph為文件系統。徹底的分布式,沒有單點依賴,用C編寫,性能較好。基於不成熟的btrfs,其本身也非常不成熟。
lustre:Oracle公司的企業級產品,非常龐大,對內核和ext3深度依賴
NFS:老牌網路文件系統,具體不了解,反正NFS最近幾年沒發展,肯定不能用。
鑒於fastDFS是國人開發,也有國內的一些大公司在使用,so…

普通的文件架構其實一兩年內也是沒有問題的,但有句話叫未雨綢繆,於是決定折騰折騰。
源碼下載:http://code.google.com/p/fastdfs
尋求幫助:http://www.csource.org

一、安裝libevent
fastDFS需要安裝libevent比較新的版本,將本機的比較低的版本卸載了。

rpm -qa libevent
libevent-1.4.13-1.el6.x86_64
rpm -e --nodeps libevent
安裝一個最新穩定版

wget https://github.com/downloads/libevent/libevent/libevent-2.0.18-stable.tar.gz
tar zxvf libevent-2.0.18-stable.tar.gz
cd libevent-2.0.18-stable
./configure
make && make install
為libevent創建軟鏈接到/lib庫下,64位系統對應/lib64

ln -s /usr/local/lib/libevent* /lib/
ln -s /usr/local/lib/libevent* /lib64/
二、安裝FastDFS

wget http://fastdfs.googlecode.com/files/FastDFS_v3.06.tar.gz
tar zxvf FastDFS_v3.06.tar.gz
cd FastDFS
./make.sh
./make.sh install
三、配置FastDFS
環境:
tracker server
192.168.1.5
storage server
192.168.1.51
192.168.1.52

1、配置並啟動 tracker server
①配置 tracker.conf

mkdir /data/fastdfs
vim /etc/fdfs/tracker.conf
base_path=/data/fastdfs
②啟動 tracker

/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
③開機啟動

vim /etc/rc.local
/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
2、配置並啟動 storage server
①配置 tracker.conf

mkdir /data/fastdfs
mkdir /data/images
vim /etc/fdfs/storage.conf
base_path=/data/fastdfs
store_path0=/data/images
tracker_server=192.168.1.5:22122
②啟動 tracker

/usr/local/bin/fdfs_storage /etc/fdfs/storage.conf
③開機啟動

vim /etc/rc.local
/usr/local/bin/fdfs_storage /etc/fdfs/storage.conf
3、為storage節點安裝fastdfs-nginx-mole模塊
①安裝模塊
安裝Nginx詳見:
需重新編譯Nginx

wget http://fastdfs.googlecode.com/files/fastdfs-nginx-mole_v1.10.tar.gz
tar zxvf fastdfs-nginx-mole_v1.10.tar.gz
wget http://nginx.org/download/nginx-1.2.0.tar.gz
tar zxvf nginx-1.2.0.tar.gz
cd nginx-1.2.0
./configure --prefix=/usr/local/nginx --add-mole=../fastdfs-nginx-mole/src
make && make install
cd ..
②配置
編輯nginx.conf

vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;

location /M00 {
alias /data/images/data;
ngx_fastdfs_mole;
}
......
}
給 storage 的存儲目錄做一個軟連接

ln -s /data/images/data/ /data/images/data/M00
拷貝mod_fastdfs.conf 到 /etc/fdfs/

cp fastdfs-nginx-mole/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
base_path=/data/fastdfs
tracker_server=192.168.1.5:22122
store_path0=/data/images
啟動nginx

/usr/local/nginx/sbin/nginx
四、使用FastDFS
1、上傳文件
FastDFS安裝包中,自帶了客戶端程序,通過程序可以進行文件上傳。在使用這個客戶端程序之前,首先需要配置client.conf,然後再進行文件上傳及下載。
在tracker上修改客戶端配置文件client.conf

vim /etc/fdfs/client.conf
base_path=/data/fastdfs
tracker_server=192.168.1.5:22122
vim a.html
This Is FastDFS Test.
上傳文件

/usr/local/bin/fdfs_test /etc/fdfs/client.conf upload a.html
This is FastDFS client test program v3.06

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.

[2012-04-29 12:42:53] INFO - base_path=/data/tracker, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0

tracker_query_storage_store_list_without_group:
server 1. group_name=group1, ip_addr=192.168.1.51, port=23000
server 2. group_name=group1, ip_addr=192.168.1.52, port=23000

group_name=group1, ip_addr=192.168.1.51, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.html
source ip address: 192.168.1.51
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file url: http://192.168.1.5/group1/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90.html
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html
source ip address: 192.168.1.51
file timestamp=2012-04-29 12:42:53
file size=14
file crc32=674197143
file url: http://192.168.1.5/group1/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html
上傳成功
試試用

http://192.168.1.51/M00/00/00/wKgBM0-cxs32qFyYAAAADigvbpc90_big.html

訪問看看吧。

看了幾天了,還是有些地方不是很明白,暫時擱置,不能再浪費時間了。

『肆』 libevent和nginx哪個源碼

Libevent入門 Libevent英文入門資料<<Fast portable non-blocking network programming with Libevent>>。 網友翻譯上面的資料,製作的《Libevent參考手冊》 上面的兩個資料主要是讓我們熟悉Libevent的使用。 Libevent源碼分析 源碼分析工具,我推薦source insight 或者 Scientific Toolworks Understand,source insight很多年沒有更新了,使用下來還是Understand方便。 開始分析源碼肯定比較痛苦,尤其是對新手,因為不知道從哪裡開始,所以可以考慮參考《Libevent源碼深度剖析》,在前人的基礎之上慢慢擴展,這樣可以事倍功半。
很明確的告訴你:VC中可以用libevent庫。
方法:
1、下載libevent源碼。
2、用VC編譯,一般編譯成靜態的。
3、在項目中配置libevent庫。
4、引用。
你可以按著以上步驟來。應該沒問題。

『伍』 libevent 支持udp嗎

1、下載libevent源碼。
2、用VC編譯,一般編譯成靜態的。
3、在項目中配置libevent庫。
4、引用。 你可以按著以上步驟來。應該沒問題。

『陸』 workerman運行環境的libevent怎麼安裝

centos系統安裝教程(適用於php環境是yum install安裝的情況)
1、命令行運行yum install php-devel php-pear libevent-devel
2、命令行運行pecl install channel://pecl.php.net/libevent-0.1.0
3、命令行運行echo extension=libevent.so > /etc/php.d/libevent.ini

debian/ubuntu系統安裝教程(適用於php環境是get-get install安裝的情況)
1、命令行運行 apt-get install php-pear php5-dev libevent-dev
2、命令行運行pecl install channel://pecl.php.net/libevent-0.1.0
3、命令行運行echo extension=libevent.so > /etc/php5/cli/conf.d/libevent.ini

編譯安裝
命令行運行
APT-GET:apt-get install php-pear php5-dev libevent-dev
YUM:yum install php-devel php-pear libevent-devel
從http://pecl.php.net/package/libevent 下載源碼解壓到你的php源碼ext目錄下,進到ext/libevent-x.x.x目錄,依次執行下面命令
① phpize
② ./configure
③ make
④ make install
⑤ 把so文件加入到php.ini去(如果不知到php.ini在哪裡,可以通過命令 php --ini 查找到)

熱點內容
c語言dos 發布:2025-05-15 21:18:17 瀏覽:662
sci編譯英文 發布:2025-05-15 21:16:57 瀏覽:381
大貓如何設置密碼 發布:2025-05-15 21:15:32 瀏覽:764
什麼叫蘋果版的和安卓版的手機 發布:2025-05-15 21:05:18 瀏覽:253
編程找點 發布:2025-05-15 20:43:10 瀏覽:587
php上傳臨時文件夾 發布:2025-05-15 20:43:00 瀏覽:657
impala資料庫 發布:2025-05-15 20:42:12 瀏覽:649
android安裝插件 發布:2025-05-15 20:41:31 瀏覽:241
神秘顧客訪問 發布:2025-05-15 20:33:39 瀏覽:298
安卓市場手機版從哪裡下載 發布:2025-05-15 20:17:28 瀏覽:815