SlideShare a Scribd company logo
Magento




PHP and Asynchronous
Communication
Magento




About myself


                                  Eugene Tulika
                Magento Expert Consulting Group
                   Senior Developer / Team Lead
Magento




PHP in a Rocket Science
                           Agile
                           Time To Market



                          It’s a language to "solve the web
                             problem"



                           Enterprise Open Source
                           PHP Frontend / Java Backend
Magento




      PHP

PHP
Magento




Asynchrony
Magento




Asynchrony in PHP



                        Save User information

                    Send e-mail “User is created”
                      Save Shipping information

                       Save Order Information

                    Send e-mail “Order is created”
Magento




Asynchrony in PHP

          UI            Front Server     Mail Service
                     Save User
                    information        Send e-mail
                                         “User is
                    Save Shipping       created”
                     information

                     Save Order
                    Information
                                       Send e-mail
                                        “Order is
                                        created”
Magento




Asynchrony Architecture
Magento




Asynchrony in PHP
                    Front Server




                                    Users Server




                                   Shipment Server




                                     Sales Server
Magento




Messages and Channels
Magento




Messages and Channels
Magento




Message Queue Concept
 Messages arrived to Channel
                                          Event-Driven
                               Notify      Consumer


                                Poll    Polling Consumer



                                           Competing
                                           Consumers
Magento




Message Queue on PHP Based on Tables


        Consumer                           Java ESB
 cron
         Node#1


        Consumer    Shared
 cron              Database   Endpoint
         Node#2
                              Controller

        Consumer
 cron
         Node#3
Magento




Publish/Subscribe


                        Channel   Subscriber 1




  Publisher   Channel   Channel   Subscriber 2




                        Channel   Subscriber 3
Magento




Response is Needed
Magento




Request-Reply Pattern
Magento




Synchronous blocking on PHP



                    Sync Bridge

         PHP
      application
Magento




Synchronous blocking on PHP


            Requestor




                                        Message channel
                           Receiver
                         (controller)
            Persisted
            Messages
Magento




Request/Response Tables

    Request Id    Request Data
    1             {“Color”:”P!nk”}




    Response ID   Request ID         Response Data
    1             Null
    2             1                  {“Color”:”P!nk”,“Sa
                                     ved”:”true”}
Magento




Your request is being proceeded
Magento




Asynchronous callback on PHP
    Business Logic        Messaging Layer



                         Requestor




                                                           Message channel
     PHP
  application


                                              Receiver
                                            /controller/



      DB        Update   Callback
Magento




UI changes
Magento




Testing with Stubs
Magento




Contacts
 vranen@gmail.com
 etulika@ebay.com
 http://vrann.com/

More Related Content

More from Vrann Tulika

Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018
Vrann Tulika
 
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce CompanyCareer of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Vrann Tulika
 
Magento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for MagentoMagento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for Magento
Vrann Tulika
 
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQMage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
Vrann Tulika
 
Enterprise Patterns in Magento
Enterprise Patterns in MagentoEnterprise Patterns in Magento
Enterprise Patterns in Magento
Vrann Tulika
 
Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...
Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...
Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...
Vrann Tulika
 

More from Vrann Tulika (6)

Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018Magento Web API Ecosystem. Imagine 2018
Magento Web API Ecosystem. Imagine 2018
 
Career of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce CompanyCareer of the Software Engineer in Modern Open-Source e-Commerce Company
Career of the Software Engineer in Modern Open-Source e-Commerce Company
 
Magento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for MagentoMagento Live Australia 2016 Facebook Chatbot for Magento
Magento Live Australia 2016 Facebook Chatbot for Magento
 
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQMage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
 
Enterprise Patterns in Magento
Enterprise Patterns in MagentoEnterprise Patterns in Magento
Enterprise Patterns in Magento
 
Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...
Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...
Розпаралелювання Програм на Фортрані з Використанням Техніки Переписувальних ...
 

Recently uploaded

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 

Recently uploaded (20)

LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 

PHP and Asynchronous Systems

Editor's Notes

  1. Меня зовут я работаю в Эксперт-консалтинг груп занимаюсь преимущественно кастом девелопмент последние полгода работал над интеграцией с x.commerceFabric. Это Платформа объединяюшая между собой различные системы. Работая над ней набил руку “мыслить асинхронно”. В процессе разработки пришлось на ходу изобретать множество решений как переложить понятия понятные в джава разработке в мир PHPСегодня мы поговорим о том месте в котором оказался PHP благодаря развитию индустрии
  2. Сегодня, я хочу чтоб вы задумались о том, какое место занял PHP в современном мире. Я десятки раз слышал фразу «It’s not a rocket science” когда речь шла о PHP. От заказчиков; В интернете. PHP программисты порой сами так думают.По сути за этой фразой скрывается мысль, что ничего серьезного на PHP не напишешь. И все с тоской смотрят на Джаву – вот там есть все, распределенное программирование, паралельное программирование, потоки, очереди.Но на самом деле мир не стоит на месте. А PHP за это время очень уверенно занял нишу языка который в полном смысле слова “Agile”. На нем можно быстро написать, быстро потестировать, быстро задеплоить. Оверхед на обслуживание самого языка минимальный, что сокращает ключевую метрику Time To Market.Что такое PHP сегодня? - Enterprise Open Source. Звучит как оксюморон.часть ентерпрайз функционала под оберткой опен-сорс. Если вы пришли на мейджконф то вы о них прекрастно знаете. Большие компании желают сделать интернет магазин на гибкой стабильной плетформе, выбирают решение на PHP, и тут же его нужно интегрировать в текущую инфраструктуру. Таким образом это еще не энтерпрайз система сама по себе, но уже активный участник мира энтерпрайз. Sugar CRMТретее – мы все таки попали в сферу серьезных разработок. Почти 9 лет упирались руками и ногами, это не для PHP, в PHP это невозможно - web UI для серьезных систем
  3. На этиъ графиках некоторые типичные схемы архитектуры Энтерпрайз Систем. Каждая из них в конечном итоге покахзывает инофрмацию пользователю. И каждая из них в конечном итоге предоставляет Web UI.Так мы постепенно очертили тот контекст, в котором дальше будут происходить события доклада. То с чем от проекта к проекту сталкивается Мадженто.Использлвание систем обмена сообщениями стало стандартом де-факто для крупных систем. Они облегчают интегрирование, оешают проблемы распределения нагрузки. Такой стандарт как JMS.Раз PHP вступает в эту сферу то оно должно учится работать с такими системамиИтак, почему мы говорим об асинхронности? Что это такое?
  4. Что такое Асинхронность?асинхрнонно выполняющийся потокпотоки двигаются каждый со своей скоростью. Если бы какой-то поток начал дожидатся ответа, он поневоле стал бы синхронизироваться со скростью соседнего потока. Так же они могут двигаться каждый со своей скоростьюАсинхронность говорит о том, что один поток не дожидается другогоПо классу решаемых задач асинхронность относится к распределенным вычислениям.Легче говорить от противоположного. При синхронном выполнениии куски кода выполняются один за одним. При асинхронном следующий кусок может начать выполнятся раньше чем завершился предыдущий.Как это сделано?Во-первых потокамиВо-вторых распределенностью исполняющх узлов
  5. - Давайте рассмотрим типичную форму шиппинга- на ней есть три секции- при нажатии на сабмит отправляет данные на сервер- сохраняет юзера- сохраняет шипмент- сохраняет информацию о покупке
  6. - Первый же пример который найдете в интеренете кода будете искать асинхронность в PHP, будет рассылка e-mail ов. В целом логично – мыло рассылается практически в каждоим приложении на PHP, рассылка – операция не столько трудоемкая сколько длительная и вцелом отлично подходит для того чтоб вынести ее в отдельный процесс. - Это может быть даже отдельный скрипт на PHP, на который вы шлете курлом пост запрос, а он начинает рассылать письма.- Только не забудьте поставить авторизацию, например в хедерах, а то желаюших разослать письма на шару не мало
  7. Почему это используют?- Ответ пользователю приходит быстрее- Легко балнсировать нагрузку, поскольку за работу с пользователями отвечают одни сервера, для обработки асинхронных запросов используются другие- Дает меньшая восприимчивость к сбоям, поскольку асинхронные запросы могут быть переадресованы на другой сервер- Уменьшает зависимость между компонентами системы Последние три пункта возможны только в распределенных системах имеющих несколько нод для обработки асинхронных запросов.
  8. - Бывают ситуации, когда приложения, которые взаимодействуют посредствои обмена сообщеними должны дожидаться ответа на свои сообщения.Давайте представим следующий вариант развития событий. - Форма сабмиться и попадает на фронт сервер.Далее контроллер разбирает данные, первую часть посылает на сервер с юзерами вторую на сервер доставки Далее нам нужно собрать идентификаторы юзера и шипмента и послать на сервер заказов третюю на сервер пейментаТут для того чтоб послать третюю часть формы на сервер пеймента опрашивающее приложение должно дождаться Результата выполнении первых двух запросовудаленный вызов процедуры с помощью обмена сообщениями. Запрос – Сommand Message, ответ – Document Message
  9. Message и Channel это паттерны из книжки про интеграционные паттерны.Они возникают в ситуации, когда пприложению нужно послать данные в асинхрнонно выполняющийся поток. Данные упаковываются в Message – к ним дописывается информация, которая позволит доставить сообщение по адресу – заголовок, сами данные – тело. Заголовок нужен для системы обмена сообщениями Канал представляет собой логический адрес в системе обмена сообщениями. В канале все сообщения однообразного формата. Сама система обмена сообщениями не диктует наличие каналов, они добавляются по ходу реализации системы. В то же время добавить канал после релиза проблематично, поскольку нет приложений которые бы использовали добавленный канал. Как приложиния интегрируются используя каналы и сообщения?- приложение 1 помещает сообщение в канал- приложение 2 слушает канал и обрабатывает сообщение- при надобности приложение 2 помещает ответ в канал
  10. - Message Queue это уже не паттерн, а концеация. Она описывается целым набором паттернов – Message, Message Channelдля описания системы обмена сообщениями, и один из Competing Consumer, Polling Consumer, Event-Driven Consumerдля описания тех прцессов которые следят за поступлениями в очередьPoint-to-Point – один канал, меожество слушателей. Система сама заботится о том, чтоб каждое сообщение досталось только одному клиенту. Это может быть сделано либо с помощью диспетчера сообшений. Либо сообщение достается тому клиенту который первый подтвердит что он его получил.
  11. Вернемся от книжных терминов к конкретной реализации на PHP в которой мне довелось поучаствовать.Задача ставилась таким образом, что некое ESB, для нас абстрактное фря, постило фиды с описанием продуктов, которые нужно было заимпортировать.По скольку серверов было три, то их работа была организована в виде очередиНа каждый фид с данными контроллер создавал месседж в очереди База данных общая для всех серверов Процесс запускается по крону, лезет в базу и забирает свою часть работы. Ноды по крону коннектились к очереди, метили свой месседж. Месседж содержит ссылку на файл с данными фида – например 100 продуктовТут решался вопрос поизводительности и организации нескольких серверова в распределенную систему
  12. Похож на паттерн обзервер для распределенных систем каждый подписчик должен быть оповещен о конкретном событии но только один раз сообщение о событии не считается потребленным пока уведомление не получат все подписчики
  13. Вторая ситуация – запрос с помощью обмена сообщениями Сценарий применяется для выпронения запросов, например к базе данных приложения на том конце провода. Ответом в этом случае будет текст, содержащий информацию из базы данных.Третяя ситуация Уведомления/подтверждения – Приложение посылает сообщение о событии, посредством которого осуществляется уведомление, и дожидается получения уведомленияДля решения этих вопросов используется Request/Reply паттерн
  14. Обмен сообщениями предоставляет одностороннее взаимодействие участвующих Иногда взаимодействие должно быть двухсторонним Канал сообщений передает сообщения только в одном направлении Для решения такой ситуации обычно вводят второй канал, канал ответовКанал запросов может быть Point-to-Point или Publish/Subscribe. Канал ответов как правило всегда Point-to-Pointпоскольку нет смысла устраивать широковещательную рассылкуСинхронная блокировка Асинхронный обратный вызов
  15. Подход эмулирующий поведение Джава программыЦентральнй действующий елемент – сокет-демонПриложение посылает запрос на демонДемон пересылает его в канал запросов и подписывается на канал ответов для получения сообщенийКак только получил сообщение – пишет его в сокет PHP приложения
  16. Requestor создает сообщение Сообщение посылается в Message Channelто как ресивер получает месседж зависит от типа канала – это месседж кью или паблиш-сабскрайб ченнел. Либо он будет получать апдейты (Subscriber), либо сам опрашивать очередь и забирать месседжи (Request Polling pattern – потребитель может запросить из канала следующее сообщение когда готов это сделать. Синхронный получатель – блокирует свое выполнение на момент получения месседжа)Receiver – Event-driven consumer. Асинхронный получатель. Нет работающего потока до тех пор пока поток обратного вызова не доставит сообщение. Потребитель может бездействовать до тех пор пока его не вызовет система обмена сообщениями
  17. Проблемы реализации: основная проблема – необходимость держать соединение юзера пока мы ждем ответ на запрос. мы сужаем возможности системы только до одного ответа на каждый запросCorrelation Id pattern Подход хорошо работает для синхронных запросов, таких как например удаленный вызов процедуры, которые нужно передать через систему обмена сообщениями. Но для запросов таких например как например загрузка данных из удаленной системы его лучше избегать. Основная проблема – таймаут. Если при синхронном соединении время отклика включается в понятие QoS, то в асинхронных системах время ожидаения это эмпирическая величина вычисляемая
  18. Поскольку в PHPнет потоков, то для эмуляции их использовались процессы.- Но проблемы тут тоже есть. Основная из них – таймаут. Если при синхронном соединении время отклика включается в понятие QoS, то в асинхронных системах время ожидаения это эмпирическая величина вычисляемая
  19. При переходе на кешированные данные UIдолжен поменятся Никогда не говорить юзеру что все сохранено пока не пришло подтверждение этому по возможности хранить информацию о свежести данных Можно придумать еще сотни способов сказать юзеру о том, что интерфейс не готов. Самое важное обеспечить возможность того, что он подготовится.