這是什么?
我的意思是,一個(gè)網(wǎng)絡(luò)組件在接受新連接后,先以文本協(xié)議等候消息,以實(shí)現(xiàn)支持telnet查看的功能。
telnet查看功能
- echo value。
網(wǎng)絡(luò)組件收到消息后,像echo服務(wù)器那樣直接返回value。value還可以是組件預(yù)置的變量,如$time返回服務(wù)器的當(dāng)前時(shí)間。
- name value。
網(wǎng)絡(luò)組件收到消息后,將當(dāng)前連接綁定到value這個(gè)名字上,其目的是為下一條heartbeat指令提供操作對(duì)象。
- heartbeat value。
網(wǎng)絡(luò)組件收到消息后,向value綁定的連接發(fā)起一個(gè)心跳檢測(cè),將回執(zhí)通知telnet端。
這有什么用?
以往telnet在開發(fā)中的作用就是ping具體的服務(wù)器地址和端口,無(wú)法進(jìn)一步使用。有時(shí)候想實(shí)時(shí)的從服務(wù)器中了解一些簡(jiǎn)單的連接信息,但是網(wǎng)絡(luò)組件只處理專有的二進(jìn)制消息,只能實(shí)現(xiàn)一個(gè)不通用的客戶端。
若網(wǎng)絡(luò)組件在接收二進(jìn)制消息之前能夠處理一些簡(jiǎn)單的文本協(xié)議,那么telnet就可進(jìn)一步使用,查看組件狀態(tài)甚至簡(jiǎn)單調(diào)試組件。
還有一種就是服務(wù)器程序監(jiān)控服務(wù),通常這種監(jiān)控服務(wù)只能判斷服務(wù)器程序是否運(yùn)行或者掛掉,但是無(wú)法判斷服務(wù)器是否遇上死鎖而無(wú)法提供服務(wù)。當(dāng)網(wǎng)絡(luò)組件支持這種文本協(xié)議之后,監(jiān)控服務(wù)就能夠通過(guò)echo和heartbeat兩種消息檢測(cè)網(wǎng)絡(luò)組件listen方和connect方是否卡死。
內(nèi)置一個(gè)http服務(wù)器不是更好?
其實(shí)在網(wǎng)絡(luò)組件中內(nèi)置一個(gè)http服務(wù)器不是更好,可以通過(guò)wget,curl甚至瀏覽器進(jìn)行操作,可視化程度也比較高。
我不這么認(rèn)為。其實(shí)內(nèi)置一個(gè)http服務(wù)器有點(diǎn)大了,搞不好比組件本身還大。再者h(yuǎn)ttp服務(wù)是和業(yè)務(wù)連接共用一個(gè)端口呢還是擁有獨(dú)立的服務(wù)端口,獨(dú)立的服務(wù)端口增加了太多的配置,共用端口的話從HTTP協(xié)議變遷到二進(jìn)制協(xié)議是不是太麻煩了點(diǎn)。
posted on 2011-06-12 22:44
LOGOS 閱讀(2366)
評(píng)論(5) 編輯 收藏 引用