天天日夜夜添_精品国产99久久久久久人裸体 _成人app在线观看_日韩色网站

新聞資訊

    要:在阿里云PHP技術(shù)沙龍專場中,阿里云邀請到php-nsq作者,pecl、Swoole開發(fā)組成員吳振宇分享了Swoole進程模型的原理與Swoole協(xié)程實現(xiàn)的原理。并結(jié)合具體開發(fā)案例講解了Swoole在網(wǎng)絡編程中的應用。

    本次直播視頻精彩回顧,戳這里!

    直播回顧:https://yq.aliyun.com/live/965

    PPT分享:https://yq.aliyun.com/download/3528

    以下內(nèi)容根據(jù)演講嘉賓視頻分享以及PPT整理而成。

    Socket編程

    網(wǎng)絡編程又可稱為Socket編程。編程分為基于Server端開發(fā)與基于Client端開發(fā)兩部分。基于Server端的編程由四大步驟組成,開發(fā)者首先創(chuàng)建Socket,利用bind與listen函數(shù)綁定監(jiān)聽地址及相應的端口,最后使用accept函數(shù)接受來自監(jiān)聽端的請求。Client端的操作較為簡便,開發(fā)者在創(chuàng)建Socket后使用connect函數(shù)對服務器端進行連接即可實現(xiàn)。

    下圖所示為Client端與Server端的協(xié)作示意圖。Client端首先向Server端發(fā)起帶有SYN標識的握手請求,Server端接受到請求后,返回給Client端帶有SYN與ACK標識的請求并將Client端中的RCVD文件加載至隊列中,在三次握手完成之后,該文件描述符將被添加至accept隊列中等待下一步邏輯處理。

    下圖所示為Socket編程的實現(xiàn)代碼

    在Socket編程中,Socket的讀寫狀態(tài)判斷十分重要。Socket可讀條件分為以下四條:

    • 該套接字接收緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù)大于等于套接字接收緩存區(qū)低水位。
    • 該連接的讀半部關(guān)閉(也就是接收了FIN的TCP連接)。
    • 有新鏈接到達可讀,該套接字是一個listen的監(jiān)聽套接字,并且目前已經(jīng)完成的連接數(shù)不為0。
    • 有一個Socket有異常錯誤條件待處理.對于這樣的Socket讀操作將不會阻塞,并且返回一個錯誤(-1),errno則設置成明確的錯誤條件。
    • 以上條件中,第一條件與第三條件較為重要。對于TCP和UDP套接字而言,緩沖區(qū)低水位的值默認為1,在默認情況下,緩沖區(qū)中的數(shù)據(jù)均為可讀。當為Socket收到connect請求,執(zhí)行了三次握手的第一步接收SYN請求后,Socket便處于可讀狀態(tài)。對這樣的套接字進行accept操作通常不會阻塞。

    對應于Socket可讀條件的判斷,Socket可寫條件也分為以下四條:

    • 該套接字發(fā)送緩沖區(qū)中的可用空間字節(jié)數(shù)大于等于套接字發(fā)送緩存區(qū)低水位標記時,并且該套接字已經(jīng)成功連接。
    • 該連接的寫半部關(guān)閉。
    • 使用非阻塞的connect套接字已建立連接,或者connect已經(jīng)以失敗告終。
    • 有一個錯誤的套接字待處理。
    • 下圖舉了生活中與網(wǎng)絡阻塞類似的生活事例來展示該過程。在用戶到手機店修手機的過程中,用戶在手機店不做任何事,等待老板將手機修好類似于網(wǎng)絡同步阻塞過程;用戶在店中做些其他工作,不時詢問老板手機是否修好類似于同步非阻塞過程;用戶回到家中,等待手機店老板修好后的電話類似于異步阻塞過程;用戶回到家中做其他事情,等待老板修好后的電話類似于多路IO 復用、異步非阻塞過程。

    在一款應用開發(fā)初期,應用的用戶不多,服務器相對的要求同樣不高,此時開發(fā)者可以使用多進程策略進行應用的開發(fā),以此加快開發(fā)效率。下圖所示為多進程同步阻塞開發(fā)的偽代碼。

    當業(yè)務量擴大,系統(tǒng)需要進行優(yōu)化時,開發(fā)者可以對每個子進程中的套接字進行監(jiān)聽,其偽代碼如下圖所示。

    IO復用與Reactor

    當系統(tǒng)的用戶及業(yè)務量擴大到一定規(guī)模時,開發(fā)者可以使用多路IO復用、Reactor及異步非阻塞等方法對系統(tǒng)進行改進。如下圖所示,在這些系統(tǒng)調(diào)用中,Select方法存在內(nèi)存開銷大,支持文件描述符數(shù)量少的缺點。目前Epoll系統(tǒng)調(diào)用方式占據(jù)開發(fā)的主流位置,Epoll方式采用了紅黑樹的數(shù)據(jù)結(jié)構(gòu)模式,同時擁有就緒列表rdlist,當套接字中存在可讀或可寫的事件時,該事件將被直接添加到就緒列表當中,從而使系統(tǒng)省去了輪詢所有套接字屬性的過程,提高了系統(tǒng)的執(zhí)行效率。

    (1)操作系統(tǒng)調(diào)度原理

    操作系統(tǒng)進程調(diào)用時分為正在運行,阻塞運行及等待運行三個狀態(tài)。在處理進程的過程中,內(nèi)核會不斷發(fā)生中斷,比如三次握手過程中,當ACK發(fā)送時,內(nèi)核會觸發(fā)中斷,系統(tǒng)此時需要放下正在執(zhí)行的任務,去處理TCP的任務。處理完成后,系統(tǒng)結(jié)束中斷處理并恢復運行被打斷的進程。下圖所示為操作系統(tǒng)進程調(diào)度的一些方法。

    在三次握手中,系統(tǒng)執(zhí)行以下三個步驟完成操作系統(tǒng)的調(diào)度:

    1.網(wǎng)卡收到數(shù)據(jù):網(wǎng)卡收到SYN消息,觸發(fā)內(nèi)核中斷,系統(tǒng)將直接打斷當前執(zhí)行的進程,同時CPU將會把套接字加入到Socket Queue隊列當中進行存儲。

    2.中斷回調(diào):若當前沒有新的連接,accept將阻塞到系統(tǒng)調(diào)用上,并將套接字注冊到Wait Queue上。

    3.系統(tǒng)中斷回調(diào):當新的連接產(chǎn)生時,Wait Queue隊列將觸發(fā)回調(diào)函數(shù),將相應數(shù)據(jù)加載至rdlist列表中。

    若網(wǎng)卡收到ACK消息,則繼續(xù)觸發(fā)內(nèi)核中斷,內(nèi)核完成標準的三次握手,將連接從半連接隊列移入連接隊列,于是 listen Socket有可讀事件,內(nèi)核調(diào)用listen Socket的Wait Queue的喚醒回調(diào)函數(shù),將之前阻塞的accept進程置為 Ready調(diào)度狀態(tài)。

    (2)Epoll的在調(diào)度中的作用

    Epoll主要用來監(jiān)聽Socket的可讀可寫過程,在Epoll創(chuàng)建時,開發(fā)者需要傳對應文件描述符EPOLLIN與EPOLLOUT作為可讀與可寫的參數(shù)標志,epoll_wait函數(shù)擁有accept的功能,會在事件發(fā)送后提醒開發(fā)者。下圖羅列了Epoll中的參數(shù)與主要方法。

    將Socket創(chuàng)建與accept過程轉(zhuǎn)化為Epoll的代碼示意圖如下所示。首先將fd作為描述符加入創(chuàng)建好的Epoll中,同時把開發(fā)者想要監(jiān)聽的可讀可寫事件也注冊入Epoll之中。當listen fd監(jiān)聽到事件時,使用accept方法將該fd描述符設為可讀事件,并再次將其加入到Epoll的監(jiān)聽數(shù)組中,此時代表真正的客戶端連接已接入。



    Swoole進程模型與Reactor

    Reactor模型的創(chuàng)建與使用較為簡單,其中含有以下四個方法:

    • Add方法:添加一個Socket到Reactor之中。
    • Set方法:修改Socket對應的事件,如可讀可寫事件等。
    • Del方法:從Reactor中移除相應的對象。
    • Callback方法:事件發(fā)生后回調(diào)指定的函數(shù)方法。
    • Swoole目前使用較多的模式為單線程模式與進程模式。在單線程模式中,系統(tǒng)使用Worker監(jiān)聽accept與鏈接,當Worker掛掉后會對系統(tǒng)產(chǎn)生一些影響。進程模式的Swoole解決了這些問題。下圖為兩種模式的詳細對比。

    在進程模式中,系統(tǒng)采用MainReactor線程監(jiān)聽accept,線程將出現(xiàn)的問題拋給Worker進程進行處理,這樣即使單個Worker進程掛掉也不會對系統(tǒng)產(chǎn)生任何的影響。下圖所示為進程模式的系統(tǒng)結(jié)構(gòu)示意圖。

    下圖展示了對Swoole模式的調(diào)用代碼示意。在用戶使用客戶端去連接服務器的過程中,系統(tǒng)首先注冊可讀可寫與超時三個狀態(tài)回調(diào)函數(shù)。客戶端與服務器連接成功時,套接字變?yōu)榭蓪憼顟B(tài),系統(tǒng)調(diào)用可寫狀態(tài)的回調(diào)函數(shù),在回調(diào)函數(shù)中處理相關(guān)的數(shù)據(jù)。


    Swoole協(xié)程實現(xiàn)原理

    Swoole協(xié)程是由事件驅(qū)動與棧切換兩步共同實現(xiàn)完成的。

    在C語言環(huán)境中,事件的調(diào)用往往使用堆棧進行處理。在堆棧中,指針EBP指向堆棧棧底,指針ESP指向堆棧棧頂,在函數(shù)調(diào)用之后,每個EBP的返回值會返回上一個EBP的地址。以此來進行事件調(diào)用的檢索。下圖所示為C語言中的事件調(diào)用示意圖。


    在PHP中的函數(shù)調(diào)用步驟如下圖所示。PHP首先通過詞法分析與語法分析將代碼編譯成語法樹,語法樹中的每一個語法會被編譯入opcode,語法中的每一個函數(shù)會以oparray的形式存入結(jié)構(gòu)體EG中,EG結(jié)構(gòu)體使用函數(shù)表對這些函數(shù)進行存儲。

    當函數(shù)調(diào)用時,結(jié)構(gòu)體中的call對應指針ESP,prev對應于指針EBP。當用戶調(diào)取函數(shù)時,系統(tǒng)會向zend VM中為每一個方法申請一個堆棧的內(nèi)存。當系統(tǒng)中一個函數(shù)調(diào)用其他函數(shù)時,會調(diào)用code下方儲存的地址,調(diào)用方法的opcode從function存儲的成員中找到并進行編譯與執(zhí)行。當觸發(fā)了opcode后,系統(tǒng)會申請一個新的內(nèi)存來進行新的內(nèi)存分配。下圖為PHP調(diào)用示意圖。

    下圖所示為在PHP函數(shù)調(diào)用中壓棧的過程及函數(shù)中存在的opcode。FCALL與DO_FCALL負責函數(shù)的調(diào)用,當堆棧中第一個opcode執(zhí)行時,將進行參數(shù)壓棧的操作。觸發(fā)函數(shù)調(diào)用時,將執(zhí)行DO_FCALL操作,系統(tǒng)將會把下一個函數(shù)的調(diào)用地址壓入堆棧。當調(diào)用有結(jié)果后系統(tǒng)會將返回值返回入CALL FRAME中。







    下圖所示為Swoole協(xié)程代碼。協(xié)程代碼包括兩個執(zhí)行網(wǎng)絡IO操作的go函數(shù),當系統(tǒng)執(zhí)行connect操作時觸發(fā)網(wǎng)絡IO操作,并將當前的PHP調(diào)用棧先保存起來。在當前調(diào)用棧保存好后,系統(tǒng)順次執(zhí)行下面的函數(shù)調(diào)用。當connect遇到IO函數(shù)時,系統(tǒng)會跳出當前任務去執(zhí)行堆棧中儲存的任務。

    在Swoole2.0中使用C函數(shù)進行線程任務的協(xié)程。當開發(fā)者調(diào)用setjmp時,函數(shù)的返回值為0并調(diào)起first函數(shù)。當調(diào)用longjmp時,setjmp也同樣被調(diào)起,此時返回值為1。Swoole2.0利用該代碼實現(xiàn)了PHP執(zhí)行的跳轉(zhuǎn),代碼示意圖如下。

    Swoole2.0協(xié)程時序圖與代碼展示如下圖所示。setjump方法設置當前函數(shù)堆棧,當有網(wǎng)絡事件產(chǎn)生時,系統(tǒng)將首先對產(chǎn)生的事件進行注冊,并在有事件通知時跳回執(zhí)行中的代碼,以此完成代碼協(xié)程過程。






    Swoole4.0通過實現(xiàn)C堆棧對Swoole2.0中的問題進行了改進。在Swoole4.0中用戶直接調(diào)用MySQL中的鏈接直接就可以形成網(wǎng)絡協(xié)程。下圖所示為Swoole4.0內(nèi)核系統(tǒng)架構(gòu)示意圖。

    Swoole4.0的時序調(diào)度與Swoole2.0差別不大,不同的是Swoole4.0使用匯編指令對C棧與堆棧進行了存儲。在協(xié)程創(chuàng)建時,系統(tǒng)會產(chǎn)生C棧與PHP棧,兩個堆棧間會進行通信,通過這種方法解決了C棧銷毀后的一些問題。下圖展現(xiàn)了Swoole4.0的時序圖。

    當系統(tǒng)鏈接數(shù)量增多后會出現(xiàn)一些問題,開發(fā)者通過設置心跳參數(shù)與心跳收回可以保證系統(tǒng)服務器的資源不會被浪費。下圖列舉了Swoole網(wǎng)絡編程對系統(tǒng)進行優(yōu)化的方式。


    總結(jié)

    下圖為吳老師分享的內(nèi)容的關(guān)鍵詞總結(jié)。

    作者:PHP小能手

    統(tǒng)計顯示,上世紀20年代,公司的平均壽命是67年;而在現(xiàn)在的數(shù)字化時代,縮短到了15年。現(xiàn)在的企業(yè)如果不直面數(shù)字化時代的變革就是跟不上時代變遷,最終就只能被淘汰。不難看出,是否能夠適應數(shù)字化時代的發(fā)展,將會是對企業(yè)生死攸關(guān)的重要因素。

    正如VMware公司全球副總裁、大中華區(qū)總裁郭尊華在去年vFORUM上所言:“當我們討論未來時,未來已經(jīng)到來。”在他看來,企業(yè)數(shù)字化轉(zhuǎn)型的首要任務就是企業(yè)核心能力的升級,進而不斷提升工作效率、改善業(yè)務流程、保障數(shù)據(jù)安全、甚至是創(chuàng)造出全新的商業(yè)模式。

    VMware全球副總裁、大中華區(qū)總裁郭尊華

    所以,作為面向終端用戶計算市場的獨立業(yè)務單元,VMware EUC過去幾年也不斷求新求變,一是不斷充實EUC傳統(tǒng)產(chǎn)品,在原來桌面產(chǎn)品中集成融合AirWatch產(chǎn)品;二是將桌面和移動這兩條相對獨立的終端應用,以整合的銷售模式面向市場,徹底解決了跨越平臺的應用問題;三是推出WorkSpace ONE的產(chǎn)品線,幫助企業(yè)建立數(shù)字化工作空間,實現(xiàn)全新的移動辦公模式。

    近期,VMware更是發(fā)布了EUC產(chǎn)品的一系列新版本,在桌面、移動、數(shù)字化工作空間等領(lǐng)域幫助企業(yè)提升效率、安全性和能力,幫助中國真正實現(xiàn)“新經(jīng)濟”的落地和企業(yè)數(shù)字化的轉(zhuǎn)型。

    Horizon:新一代桌面和應用交付來襲

    眾所周知,桌面虛擬化已經(jīng)被越來越多的應用于各行各業(yè),隨著桌面虛擬化的不斷深入使用,大部分企業(yè)的辦公也開始依賴于這種新的桌面架構(gòu),這也是VMware Horizon在這一領(lǐng)域成為霸主的重要原因。

    今年,VMware發(fā)布了Horizon 7.1版本,其中最為重要的變化就是增加了新一代的桌面和應用交付平臺JMP技術(shù),JMP是即時管理平臺 (Just-in-Time Management Platform) 的縮寫。JMP技術(shù)可以極速、靈活地交付個性化的虛擬桌面和遠程應用,具體來說:

    首先,新增即時克隆 (Instant Clone)技術(shù),可以在幾秒鐘之內(nèi)極速生成新的桌面虛擬機。它不再依靠從磁盤鏡像來啟動虛機,而是從系統(tǒng)中一臺已經(jīng)運行的父虛機中直接創(chuàng)建一臺新的子虛機。這就大大減少了管理員在系統(tǒng)更新上所花的時間。同樣的,應用升級也只需要在應用容器中升級一次,而讓所有的虛機都共享這一軟件升級結(jié)果。

    其次,新增容器化應用管理 (App Volumes),該技術(shù)把應用安裝在應用容器中,通過在虛機間共享應用容器實時交付桌面應用。換句話說,App Volumes 提出了一種應用安裝的新思路,不再把應用安裝到每一個桌面系統(tǒng)中去,而是把應用安裝到一些可共享的應用容器里,再把這些應用容器裝配到每一個桌面成為桌面系統(tǒng)的一部分。

    最后,新增用戶環(huán)境管理 (User Environment Manager),為用戶快速配置個性化的桌面環(huán)境。無論是物理桌面、虛擬桌面還是遠程桌面,通過UEM 都可以為用戶提供個性化的環(huán)境設置,讓用戶感覺每次都像登錄進同一個 Windows 桌面,從而提供一致的用戶體驗。

    值得一提的是,JMP技術(shù)還從硬件和IT支持成本兩方面來降低用戶的開支,讓 Horizon真正有別于其他友商的方案。跟其他友商的遠程桌面和應用方案相比,JMP技術(shù)具有真正領(lǐng)先的技術(shù)優(yōu)勢。

    實際上,在《IDC MarketScape:2016 年全球虛擬化客戶端計算軟件供應商評估》報告中,VMware就連續(xù)兩年被評為該市場的領(lǐng)導者。

    正如IDC MarketScape 報告指出:“我們在參考調(diào)查中發(fā)現(xiàn),客戶選擇 VMware 虛擬化客戶端計算解決方案的兩大主要原因:極具競爭力的性價比,以及更為出色的產(chǎn)品性能。在品牌認知方面,相比同行,VMware在9個領(lǐng)域均高出平均水平。”

    AirWatch:邁向企業(yè)移動化致簡之道

    我們知道,隨著手機、平板和筆記本等各種移動設備的普及,移動和商務邁入了前所未有的快速發(fā)展時期。移動商務不僅僅是一次技術(shù)變革,更是企業(yè)變革其業(yè)務流程的一次巨大機遇,越來越多的企業(yè)通過移動化來加速其業(yè)務轉(zhuǎn)型,以提高客戶的滿意度和員工的生產(chǎn)效率。

    VMware AirWatch正是為此“應運而生”。近期,VMware AirWatch再次被數(shù)據(jù)分析公司Radicati Group在2017年度的EMM 市場象限報告中列為頂級廠商。

    報告顯示,AirWatch在產(chǎn)品功能和策略遠景兩個維度都獲得了最高分,這也是該報告連續(xù)第六年把AirWatch列為頂級廠商,這充分顯示了VMware在EMM行業(yè)持續(xù)的技術(shù)創(chuàng)新和投入,它的優(yōu)點主要有三個方面:

    一是,支持統(tǒng)一端點管理 ,企業(yè)可以通過同一個管理平臺,就能夠管理從 iPhone 手機到安卓可穿戴設備、Windows 10 電腦等各種設備,把企業(yè)內(nèi)的各種智能設備和個人電腦納入統(tǒng)一管理。

    二是,具備完備的移動生態(tài)系統(tǒng),AirWatch支持多種操作系統(tǒng) (iOS、Android、macOS、Windows 10、Chrome 等) ,并且與業(yè)界的知名應用廠商緊密合作,通過在開發(fā)中使用 AirWatch SDK 等手段保證主流應用 App 與 AirWatch 平臺的無縫集成。

    三是,擁有靈活部署方式以及具有較高的安全性。用戶能夠選擇云端 SaaS 服務、現(xiàn)場部署、或是混合云的方式來部署 AirWatch 平臺,能夠滿足不同規(guī)模客戶的多種部署需求和業(yè)務模式。此外,AirWatch 還提供了安全瀏覽器、安全郵件、應用級 VPN、安全沙箱、遠程企業(yè)擦除等一系列工具和技術(shù)手段來保證企業(yè)數(shù)據(jù)的安全。

    總的來看,AirWatch實現(xiàn)了移動設備與內(nèi)容管理,它為用戶帶來了移動化辦公的支持,同時還可以通過混合云的部署,實現(xiàn)了統(tǒng)一的內(nèi)容訪問控制,使得用戶在內(nèi)容與協(xié)作方面得到了更好的管理,是企業(yè)數(shù)字化轉(zhuǎn)型過程中的最佳選擇。

    WorkSpace ONE:數(shù)字化工作空間新平臺

    在移動及云計算時代,企業(yè)員工的工作方式以及所使用的終端辦公設備發(fā)生了巨大的變化,以智能手機、平板電腦、筆記本電腦等多種移動終端組成的移動辦公終端和更為靈活的BYOD工作方式成為主流。“數(shù)字化工作空間”的概念就是在這種基礎(chǔ)上誕生的。

    VMware Workspace ONE正是一款簡單且安全的企業(yè)級數(shù)字化工作空間新平臺,可在任何智能手機、平板電腦或筆記本電腦上交付和管理任何應用。

    首先,該平臺可為用戶提供對云計算、移動和 Windows 應用的消費級自助式單點登錄訪問權(quán),并包括為員工提供支持的強大集成式電子郵件、日歷、文件和社交協(xié)作工具。

    其次,Workspace ONE還將多種優(yōu)勢集中在單一移動平臺上,幫助企業(yè)IT部門為員工交付關(guān)鍵業(yè)務資源,并進行安全管理,支持終端用戶實現(xiàn)消費級簡單訪問。

    最后,通過將身份管理、實時應用交付和企業(yè)移動化管理相集成,Workspace ONE 可調(diào)動數(shù)字化員工的積極性、減少數(shù)據(jù)泄漏威脅以及革新傳統(tǒng)IT運維方式以迎接移動云計算時代。

    再補充一點,在即將發(fā)布的Workspace ONE新版本中,該平臺還將訪問控制推廣至更多應用,以統(tǒng)一管理各類應用,利用AirWatch 統(tǒng)一端點管理創(chuàng)新技術(shù)把提供跨平臺支持的企業(yè)級安全性擴展至移動、桌面、強固和物聯(lián)網(wǎng)設備(包括Windows 10),進而簡化了IT部門和終端用戶體驗。此外,Workspace ONE 解決方案的靈活打包定價可滿足客戶數(shù)字化工作空間進程中的各種需求。

    可以說,Workspace ONE是VMware整合了所有EUC產(chǎn)品線功能的一款產(chǎn)品,目前市場上類似的工作空間產(chǎn)品都沒有Workspace ONE功能這么全,Workspace ONE 進一步加強了VMware 在終端用戶計算領(lǐng)域的領(lǐng)導者地位。

    綜上所述,數(shù)字化轉(zhuǎn)型是中國企業(yè)在當下發(fā)展趨勢下“升級換代”的必經(jīng)之路,也是各行業(yè)發(fā)展的必要選擇,而VMware EUC在這個過程中,不斷通過一系列的新產(chǎn)品、新技術(shù)和新解決方案,幫助中國各行各業(yè)的企業(yè)從容應對數(shù)字化轉(zhuǎn)型,其價值遠不止于眼下,更在于未來。

    申耀的科技觀察,由非著名科技媒體人申耀創(chuàng)辦、10萬公里公路自駕經(jīng)驗老斯基,在各大自媒體平臺擁有專欄,致力于科技行業(yè)的觀察和思考,在這里讀懂科技行業(yè),知趨勢,贏未來!

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權(quán)所有