В этой статье описывается php-программист, который просто выполняет операцию архитектуры управления службами. Для вашей справки приведем следующие сведения:
Не привлекая другие языки и инструменты, мы поговорим о том, как реализовать управление сервисами из самого PHP
Этот человек-обезьяна написал хорошую службу управления https://github.com/CrazyCodes/Service-Govern.git
Управлять чем?
Легко обнаружить, что управление-это сервис, а сервис-это наш проект. Управление этими сервисными решениями называется управлением услугами.
Теперь на сервере есть четыре службы, которые
- Обслуживание пользователей
- Обслуживание в Магазине
- Товары и Услуги
- Живая Служба
Эти услуги называются поставщиками услуг
Приложение, которое вызывает службу, называется потребителем службы, например
- Пользовательский Api
- Магазин-Api
- Товары-Api
- Live-Api
Служба-это внутренняя служба, в то время как API-это внешняя служба
Проблема управления услугами заключается в том, как управлять этими четырьмя услугами, как предоставлять внешние услуги и как контролировать процесс обслуживания
Полагаясь на Реализацию
Прежде чем внедрять управление услугами, нам необходимо знать следующие моменты знаний
- бережливость
- rpc
- свул
бережливость
Временно это можно понимать как метод, который можно использовать для вызова других языков разработки
rpc
RPC (удаленный вызов процедуры) – удаленный вызов процедуры, это своего рода протокол, который запрашивает обслуживание у удаленной компьютерной программы по сети, не зная базовой сетевой технологии. Протокол RPC предполагает существование некоторых транспортных протоколов, таких как TCP или UDP, для передачи информации между программами связи. В модели сетевой связи OSI RPC пересекает транспортный уровень и уровень приложений. RPC упрощает разработку приложений, включая сетевое распределенное мультипрограммирование. RPC использует режим клиент/сервер. Запрашивающий-это клиент, а поставщик услуг-сервер. Сначала процесс вызова клиента отправляет сообщение о вызове с параметрами процесса процессу обслуживания, а затем ожидает ответного сообщения. На стороне сервера процесс остается в спящем режиме до тех пор, пока не поступит сообщение о вызове. Когда приходит вызывающее сообщение, сервер получает параметры процесса, вычисляет результат, отправляет информацию об ответе и затем ожидает следующего вызова
Службы могут взаимодействовать друг с другом через RPC или UDP
свул
Это продукт перекрестного века в PHP circle. Причина, по которой он используется, заключается в том, что swote поддерживает связь RPC. В этой главе мы используем метод swote RPC для реализации связи между потребителями и поставщиками услуг
Реализовать RPC-связь
Очень важная часть управления услугами заключается в том, чтобы позволить потребителю a звонить поставщикам услуг a, B, C без восприятия. Конечно, на самом деле это никогда не бывает возможным. Его вообще нет в пространстве памяти. Нам нужно самим смоделировать этот режим использования
$userSerivce = $client->client ('UserService'); $result = $userSerivce->getUserInfo (['user_id' => 100]); var_dump($result);
В потребителе нет службы пользователя или метода getUserInfo. Все это содержится в заявлении поставщика услуг. Как их назвать?
Прежде всего, с помощью метода__ вызова PHP для перехвата несуществующего метода
public function __call($name, $arguments) { $client = new ClientRpc($this->serviceName); $response = $client->send ($this->serviceName, $name, $arguments); return (json_decode ($response, true)); }
После получения, вызовите метод отправки, написанный самостоятельно, появится свул.
class ClientRpc { protected $client; public function __construct($service_name, $centerConfig) { $this->client = new \swoole_client(SWOOLE_SOCK_TCP); $center = Dispatcher::loadBalance ($service_name, $centerConfig); $this->client->connect ($center['ip'], $center['port'], 0.5); } public function send($service, $action, $arguments) { $request = new Request(); $request->setService ($service); $request->setAction ($action); $request->setParameters ($arguments[0]); //Reorganize the parameters, combine them into the format you want, and send them to the service provider in JSON $this->client->send (json_encode ((array)$request)); return $this->client->recv (); } public function __destruct() { $this->client->close (); unset($this->client); } }
Подробнее о содержании, связанном с PHP заинтересованные читатели могут ознакомиться с этой темой сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Навыки работы с массивом PHP (массив)”, “Вводный курс по основному синтаксису PHP”, “Краткое описание операций и использования операторов PHP”, “Краткое описание использования символьной строки (строки) PHP”, “Учебное пособие по вводу в работу с базой данных PHP + MySQL” и “Общая работа с базой данных PHP”, Краткое описание навыков написания
Я надеюсь, что эта статья поможет вам в программировании на PHP.