国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于 workerman-json-rpc

evilk

初試 workerman-json-rpc,有幾點疑問,希望大大能幫幫忙,謝謝
1.
服務端

$worker = new Worker('JsonNL://0.0.0.0:2015');   

客戶端

$address_array = array(
  'tcp://127.0.0.1:2015',
  'tcp://127.0.0.2:2015'
);

這兩個地方的協(xié)議為何不同 一個是 JsonNL ,一個是tcp,IP也不同,而且為什么客戶端要寫兩個呢

2.
//異步調(diào)用User::getInfoByUid方法
$user_client->asend_getInfoByUid($uid);
如果想異步調(diào)用,必須在方法名前面加 "asend_"嗎? 同理,異步接收也是類似嗎?

3.
不是非常理解異步,我的理解是 服務端接收請求,處理請求,此時在處理請求的過程中,服務端不會一直阻塞在這里(不會一直等待處理結(jié)果),而是會繼續(xù)接收其他請求,當處理中的請求處理完成后,會自動向客戶端返回處理結(jié)果,不知道這樣理解對不對,從官網(wǎng)的示例代碼中,同步與異步的代碼只有些許差別,看得不是很明白

  1. $user_client->asend_getInfoByUid($uid);

//其他業(yè)務邏輯代碼

$ret_async2 = $user_client->arecv_getInfoByUid($uid);
這兩行代碼能否再幫忙講解下,執(zhí)行了第一行代碼,會產(chǎn)生怎樣的效果呢(是不是表明處理請求的過程,但并沒有返回處理結(jié)果,如果這個請求很快就處理完了,那處理完的結(jié)果放在哪里的呢),執(zhí)行完第二句代碼(這句代碼的意思是,這個時候我需要返回客戶端數(shù)據(jù)了,然后再去拿剛才的處理結(jié)果,但這樣的話,不是很明白,是去哪里拿剛才處理的結(jié)果呢)

5.內(nèi)部究竟是如何做到異步的呢

有點啰嗦,因為最近公司在做RPC,看到這個,不是很明白,想請教下大大,謝謝了哈

4084 1 0
1個回答

walkor 打賞

1、workerman是支持多種協(xié)議的,所以workerman上監(jiān)聽要寫上JsonNL。json_rpc客戶端是專門針對JsonNL協(xié)議做的,沒必要寫JsonNL。設計之初考慮支持tcp或者udp,所以默認寫的tcp。
服務端一般不會只是一臺服務器,所以客戶端一側(cè)要指定服務端ip列表,也就是為什么有多個ip的原因。
這樣客戶端直接負載均衡,避免了中間再加其它負載均衡服務,速度更快更穩(wěn)定。

2、如果想異步調(diào)用,必須在方法名前面加 "asend_"嗎? 同理,異步接收也是類似嗎?
是的

3、$user_client->asend_getInfoByUid($uid); 是發(fā)送請求,如果服務端很快處理完返回了,返回的數(shù)據(jù)會在操作系統(tǒng)socket緩沖區(qū)存著,這個是操作系統(tǒng)自動的,程序不用干預。
$ret_async2 = $user_client->arecv_getInfoByUid($uid); 是從緩沖區(qū)讀取返回的數(shù)據(jù),如果恰好數(shù)據(jù)早已返回,則直接能讀取到,如果還沒返回,就會阻塞等待直到返回或者超時(時間5秒)。

  • evilk 2017-11-11

    謝謝老大,再追問下,不是說服務端與客戶端的協(xié)議要一致才能通信嗎?

  • walkor 2017-11-12

    客戶端寫死的JsonNL協(xié)議,協(xié)議是一致的

  • dada 2017-11-15

    @1:大兄弟最近準備搭建個rpc服務,看見workerman-josn-rpc,測試了下還可以。就想問你們穩(wěn)定不呀

  • walkor 2017-11-16

    穩(wěn)定

  • 花兒 2020-11-05

    請教下$statistic_address = 'udp://127.0.0.1:55656';這一段代碼是干啥用的

  • walkor 2020-11-05

    統(tǒng)計用的

年代過于久遠,無法發(fā)表回答
??