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

workman 服務端處理大量業(yè)務邏輯阻塞

caption

本機用workman 做了服務端與客戶端,

客戶端起定時器去通知服務端與做業(yè)務處理,

我的業(yè)務處理是定時從表內(nèi)讀取機器人curl調(diào)用一系列的接口發(fā)送一些數(shù)據(jù)。
我想問下,我這種會導致阻塞嗎?

客戶端時間到了去通知服務端去處理。服務器業(yè)務處理時間比較長。等第二個通知到了可能第一個還沒處理完,這種情況也會導致阻塞貌似

有什么比較好的解決方案嗎?

5951 5 1
5個回答

caption

workman服務端不停的接受到 onMessage 消息,消息是多線程處理嗎?還是要等上一次的處理完才能處理

  • 暫無評論
phpcreeper

workerman并沒有多線程的概念,是多進程模型,單進程內(nèi)調(diào)用curl請求會造成業(yè)務阻塞的,但是從多進程角度看這個可看做是并行運行的,如果任務特別繁忙,可以考慮使用:
http://doc.workerman.net/faq/async-task.html

  • caption 2019-12-13

    我已經(jīng)用了這個了,客戶端AsyncTcpConnection 服務端通知服務端去處理業(yè)務。

caption

知道怎么做了。沒有多線程多進程處理吧

  • 暫無評論
caption

看來只能設置workman 的 count ,多進程來處理業(yè)務了。

  • 暫無評論
phpcreeper

1、關(guān)于curl部分:既然 curl 部分存在阻塞并且你無法忍受這部分阻塞,那么可以考慮非阻塞版的curl, 或者干脆就這部分阻塞代碼再抽出來放在另外一組獨立worker來處理,然后同樣可以考慮利用 AsyncTcpConnection 進行通信;
2、關(guān)于服務端部分:服務端已經(jīng)剝離出來的這部分已經(jīng)處于異步架構(gòu)模式,所以這點肯定沒問題,如果業(yè)務處理還是很慢,那么就得考慮多進程,甚至是分布式集群處理,讓機器處理的更快一些;

總之繁重的業(yè)務或者說存在阻塞地方,使用異步架構(gòu)肯定沒錯。

  • caption 2019-12-13

    我現(xiàn)在就是把阻塞的代碼放到單獨的work服務端去處理,服務端開多進程去處理,但是還是會慢,麻煩看下這個。https://wenda.workerman.net/question/4791

  • phpcreeper 2019-12-13

    我覺得阻塞和慢并不能簡單的等同,你原先的慢有一部分是因為curl的阻塞,采用異步架構(gòu)后,現(xiàn)在的慢應該說的是你業(yè)務本身處理的慢吧。

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