999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

EventMachine的性能研究及應用

2016-07-10 05:38:09李德寬
電子技術與軟件工程 2016年7期
關鍵詞:程序

李德寬

近年來使用Ruby語言來開發監控告警模塊也越來越頻繁,監控告警模塊需要極高非阻塞和并發事件處理能力,然Ruby語言自身對非阻塞操作的支持不多。使用EM可以解決請求易阻塞和并發事件處理能力不強等問題。本文對EM的并發性能以及網絡性能進行研究和分析。此外,本文還將對EM在網絡編程方面的能力進行研究。通過這些研究表明EM具有極高非阻塞和并發事件處理能力以及強大的網絡性能。

【關鍵詞】Ruby EventMachine 非阻塞 高并發 網絡協議

Ruby語言是一種為簡單快捷的面向對象編程而創立的腳本語言,于20世紀90年代由日本人松本行弘開發。Ruby on Rails(簡稱 Rails)基于Ruby語言編寫的一個通用高效Web開發框架,由于其部署容易、開發效率高、功能豐富、包管理便捷等特點,使用 Rails 開發的 Web 項目日漸增多。

1 EM的實現原理

EM廣義上來講是指任何采用EM事件處理機制的這類程序包或程序實現,而這里的EM特指的是基于Ruby實現的支持EM機制的Ruby 類庫,它使用Reactor模式提供事件驅動下的非阻塞IO,下面將從其本身的Reactor模式以及Event Loop進行分析,并闡述其實際應用中起到的作用。

1.1 Reactor模式簡述

Reactor模式描述了一種服務處理器,它接受各種類型的抽象事件并將這些事件分發給已注冊的事件處理器進行處理。Reactor模式會直接的并行將請求根據類型分發給對應的事件處理器,而不是同步等待每個請求執行完成。這種模式清晰的分離了事件的分發時序和事件的處理邏輯。

基于以上的分析,我們可以推論出EM本身是支持并發處理的。

1.2 Event Loop簡述

EM模型基于事件輪詢(Event-Loop)機制,Event Loop的機制在EM中體現為Dispatcher和Event Handle的配合。

為了理解Event Loop的工作機制,可以先從單線程程序的時間處理運行模式入手。多線程的程序不僅會占用多倍的系統資源,還會遇到跨線程通信、多線程對同一個變量同時操作等等的問題,這樣顯然無法在保障系統的穩定性的同時確保系統的擴展性。而Event Loop就是為了解決這個問題而提出。

每當遇到I/O請求的時候,主線程令Event Loop線程調相應的I/O程序,然后接著往后運行,所以不存在等待時間。等到I/O程序完成操作,Event Loop線程再把結果返回主線程。主線程就調用事先設定的回調函數,完成整個任務。

因此線程的可用空閑時間增加,主線程得以運行更多的任務,提高了效率。這樣就實現了非堵塞模式。

2 Event Machine在網絡編程中的應用

2.1 EM搭建TCP的案例來源

前面我們闡述了EM的Event Loop的優勢。現在,我們就通過實際案例來實踐EM搭建TCP,并且進行相應的業務處理。

我們知道,在生活中有很多傳感設備分布在身邊的各個角落,這些傳感設備無時無刻不在測量和傳輸新鮮出爐的測量數據,這些數據都亟待保存,因為傳感器絕對沒有空間去存儲這些數據。

那么,面對這樣的大規模,高并發的數據,我們應該怎樣應對,讓它平穩的運行在系統管控之下呢?我們可以用到我們的EM來搭建TCP服務器解決這個問題。

2.2 信息流程分析

信息源,就是我們分布在各個角落的信息化監控設備。

傳輸的信道,就是開放的空間。在集成的蜂窩通信協議的基礎上,這些硬件大多集成了基礎的分組數據傳輸協議,在分組數據傳輸協議上面又封裝了TCP/IP協議的支持。

接收的設備,就是我們的服務器。

信息源將傳感器部件采集到的數據收集到一起,按照一定的規則拼接組合起來,形成原始數據。為了保證傳輸的安全性,這些數據會被加上循環校驗碼和長度信息,在發送前,這個信息會被封入TCP的數據包,傳輸出去。

傳輸過程中,因為通過的鏈路可能存在差異,所以數據到達服務器的時間順序不一定一致。極有可能出現順序靠前的數據后到,而順序靠后的數據先到的情況。當然,這個已經由TCP協議的系統實現來為我們進行了處理。

接收到通過TCP協議傳輸來的數據的時候。服務端會將接收到的數據分配到注冊的處理器進行處理。如下的一小段代碼,就是向分配器注冊事件處理對象。

EM.run do

EM.start_server 127.0.0.1, ‘8089, EchoServer

end

我們可以看到,這段代碼向系統注冊了監聽器,監聽發向IP地址為“127.0.0.1”,目標端口為“8089”的數據響應。響應數據到達事件的處理程序,就是EchoServer這個對象。

進一步的深入EchoServer對象,我們可以發現它的基本結構遵循這樣的規則:

一定有post_init和receive_data這兩個接口。

這種設計模式,確保了負責處理的程序的充分自主性。處理事件的程序只需要確保實現這兩個接口,就可以接入到EM的Event Loop中,接收屬于自己的事件。

一個EM實現的基本框圖如下所示。

EM處理主事件循環,如果有事件出現(例如呼入請求),EM將根據已注冊的事件處理程序對事件進行分發,交由注冊的程序進行處理,如果是未注冊的請求事件,則EM會將它們拋棄,不予處理。

3 結論

本論文給出了一種解決Ruby語言在監控告警模塊中自身對非阻塞操作支持不多的方法EM,并通過對EM中Event Loop的研究,發現EM能夠提供非阻塞 IO 的支持。

在網絡應用方面,通過EM搭建TCP協議作為例子,EM能夠廣泛地支持各種網絡協議。相對于傳統的網絡協議,在面對這大規模、高并發的數據時,我們的EM搭建TCP的服務器可以使數據平穩的運行在系統管控之下。

作者單位

武漢理工大學信息工程學院電子與通信工程 湖北省武漢市 430070

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 99久久性生片| 国产美女视频黄a视频全免费网站| 天天视频在线91频| 国产系列在线| 国产精品永久免费嫩草研究院| 一级香蕉人体视频| 亚洲第一极品精品无码| 国产亚洲成AⅤ人片在线观看| yjizz国产在线视频网| 免费在线播放毛片| www.国产福利| 久久无码免费束人妻| 亚洲第一精品福利| 波多野结衣一级毛片| 91在线激情在线观看| 美女黄网十八禁免费看| 国产综合色在线视频播放线视| 91午夜福利在线观看精品| 国产激情无码一区二区三区免费| 亚洲欧洲日产国产无码AV| 国产jizz| 久久黄色视频影| 色有码无码视频| 人妻中文字幕无码久久一区| 极品尤物av美乳在线观看| 国产网站免费| 就去色综合| 国产视频入口| 国产成人综合久久精品下载| 成人中文字幕在线| 国产欧美成人不卡视频| 伊人大杳蕉中文无码| 好吊妞欧美视频免费| 久久精品免费国产大片| 国产精品亚洲αv天堂无码| av一区二区无码在线| AV熟女乱| 亚洲日韩每日更新| 国产丝袜一区二区三区视频免下载 | 麻豆AV网站免费进入| 国产精品熟女亚洲AV麻豆| 91国内外精品自在线播放| 蜜臀AVWWW国产天堂| 草逼视频国产| 午夜a视频| 欧美国产日本高清不卡| 五月激情综合网| 亚洲有无码中文网| 一本大道无码日韩精品影视| 久久毛片基地| 日韩欧美国产综合| 亚洲国产欧美国产综合久久| 亚洲天堂免费在线视频| 国产一区免费在线观看| 91毛片网| 思思热在线视频精品| 亚洲久悠悠色悠在线播放| 99re精彩视频| 亚洲系列无码专区偷窥无码| 国产精品色婷婷在线观看| 亚洲无码精彩视频在线观看| 精品国产91爱| 三上悠亚精品二区在线观看| 日韩一级二级三级| 亚洲电影天堂在线国语对白| 国产精品黄色片| 福利视频久久| 2020亚洲精品无码| 国产乱子伦无码精品小说| 久久久成年黄色视频| 久久人搡人人玩人妻精品一| 国产成人免费| 成人av手机在线观看| 九色视频在线免费观看| 国产在线麻豆波多野结衣| 欧美在线导航| 欧美精品另类| 免费又爽又刺激高潮网址 | 色综合久久88色综合天天提莫| 亚洲无码37.| 波多野结衣国产精品| 特级做a爰片毛片免费69|