Зміни в документі Асинхронність
Остання зміна 2024/05/17 11:30 автором Ashterix
Підсумок
-
Властивості сторінки (1 змінено, 0 додано, 0 видалено)
Подробиці
- Властивості сторінки
-
- Вміст
-
... ... @@ -1,0 +1,47 @@ 1 +{{box cssClass="floatinginfobox" title="**Зміст**"}} 2 +{{toc/}} 3 +{{/box}} 4 + 5 +(% class="box infomessage" %) 6 +((( 7 +Бібліотека JsonRpcBundle активно використовує асинхронність для обробки запитів, що дозволяє значно підвищити ефективність взаємодії з API та продуктивність системи. 8 +))) 9 + 10 += Асинхронність в синхронних запитах = 11 + 12 +Коли з боку клієнта приходить HTTP [[batch-запит>>doc:docs.JsonRpcBundle.functionality.batch.WebHome]] або [[запит з callback>>doc:docs.JsonRpcBundle.functionality.callback.WebHome]], на сервері насправді відбувається асинхронна обробка даних завдяки механізму [[Symfony Process>>https://symfony.com/doc/current/components/process.html]]. 13 + 14 +== ##Batch-запити## == 15 + 16 +Batch-запити дозволяють об'єднати декілька запитів в один, що знижує навантаження на мережу та сервер. Сервер отримує один запит, який містить кілька операцій, обробляє їх асинхронно та повертає одну відповідь з результатами всіх операцій. 17 + 18 +== ##Callback-запити## == 19 + 20 +Запити з callback використовують параметр {{code language="none"}}$rpc.callback{{/code}}, який містить DSN для зворотного виклику. Сервер приймає запит, валідовує DSN, миттєво повертає відповідь з підтвердженням прийняття запиту, обробляє його асинхронно та відправляє результат на вказаний callback URL. 21 + 22 += Використання асинхронного транспорту для RPC = 23 + 24 +Другий варіант передбачає налаштування параметра[[ {{code language="none"}}async:rpc_async{{/code}}>>https://docs.ufo-tech.space/bin/view/docs/JsonRpcBundle/config#H41143B43E43AA0-1]], який приймає DSN підключення до асинхронного транспорту, такого як RabbitMQ, Redis, Kafka тощо. В такому випадку RPC сервер використовує [[Symfony Messenger>>https://symfony.com/doc/current/components/messenger.html]]. 25 + 26 +(% class="box warningmessage" %) 27 +((( 28 +Цей механізм знаходиться на ранньому етапі впровадження і ще немає деатльно описаних механік 29 +))) 30 + 31 +== ##Підключення асинхронного транспорту## == 32 + 33 +Щоб підняти консюмера, необхідно виконати команду: 34 + 35 +{{code language="bash"}} 36 +php bin/console messenger:consume rpc-async 37 +{{/code}} 38 + 39 +Це підніме RPC сервер як слухача вказаного транспорту, і він буде обробляти всі RPC запити, які надходять через цей канал. 40 + 41 +== ##Переваги використання асинхронного транспорту## == 42 + 43 +1. **Масштабованість**: Використання асинхронного транспорту дозволяє легко масштабувати систему, додаючи нові консьюмери. 44 +1. **Висока продуктивність**: Асинхронний транспорт забезпечує швидку обробку великої кількості запитів, розподіляючи навантаження між різними компонентами системи. 45 +1. **Надійність**: Використання таких транспортувальників, як RabbitMQ або Kafka, гарантує надійну доставку повідомлень і обробку запитів. 46 + 47 +Використовуючи ці можливості асинхронності, ви зможете значно покращити продуктивність вашої системи та забезпечити більш зручний і швидкий обмін даними між клієнтом та сервером.