Рубрики
Uncategorized

Простая работа Php-программиста с архитектурой управления услугами (1)

Автор оригинала: David Wong.

В этой статье описывается 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.