Comment Swoole gère la simultanéité élevée
①Introduction au modèle ReactorTutoriel vidéo)
Le programme asynchrone non bloquant de multiplexage IO utilise le modèle classique de Reactor, comme son nom l'indique, signifie réacteur. Il ne traite aucune donnée envoyée ni reçue. Il ne peut surveiller que les changements d'événement d'un handle de socket (ou de tube, eventfd, signal). Reactor n'est qu'un générateur d'événements. Les opérations réelles sur le handle du socket, telles que connecter/accepter, envoyer/recv et fermer, sont effectuées dans le rappel.L'architecture de ②swoole
swoole utilise un Reactor multithread + un Worker multi-processus.
Lorsqu'une requête arrive, swoole la gère comme ceci :
请求到达 Main Reactor | | Main Reactor根据Reactor的情况,将请求注册给对应的Reactor (每个Reactor都有epoll。用来监听客户端的变化) | | 客户端有变化时,交给worker来处理 | | worker处理完毕,通过进程间通信(比如管道、共享内存、消息队列)发给对应的reactor。 | | reactor将响应结果发给相应的连接 | | 请求处理完成
Parce que le réacteur est basé sur epoll, chaque réacteur peut gérer d'innombrables connexions demander . De cette façon, swoole peut facilement gérer une concurrence élevée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!