Рубрики
Uncategorized

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

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

В этой статье описывается php-программист, который просто выполняет операцию архитектуры управления службами. Для вашей справки приведем следующие сведения:

Последнее слово в управлении услугами-это обслуживание. В компании есть программисты, которые играют на разных языках. Проблема заключается в том, как единым образом управлять услугами, которые они разрабатывают.

В предыдущей главе в основном говорилось о том, что необходимо для управления услугами и как этого достичь. В этой главе мы “расчленим” очень важного члена управления услугами-бережливость

Вот что он написал в последней главе

Временно это можно понимать как метод, который можно использовать для вызова других языков разработки

Этот человек-обезьяна написал хорошую службу управления https://github.com/CrazyCodes/Service-Govern

Разъяснение терминов

Бережливость на самом деле является программной основой для разработки расширяемых и кросс-языковых сервисов. Он сочетает в себе мощный программный стек и механизм генерации кода для сборки на C + +, Java, go, python, PHP, ruby, Erlang, Perl, Haskell, C ා, cocoa, JavaScript, Node.js , Smalltalk и Ocaml эти языки программирования являются простыми и эффективными сервисами.

Теперь вам интересно, как это назвать на разных языках

Основные понятия

Как это назвать, нужно рассказать о нашем мощном протоколе связи.

http (tcp)

Протокол передачи гипертекста используется при обычном посещении браузера. Вам нужно пожимать руки между клиентом и сервером, когда вы смотрите новости и ходите по магазинам. Если вам это удастся, вы сможете отобразить его в обычном режиме. Отток среднего рукопожатия очень сложен, и выполняются все виды декодирования и кодирования

rpc

RPC использует режим клиент/сервер. Запрашивающий – это клиент, а поставщик услуг-сервер. Сначала процесс вызова клиента отправляет сообщение о вызове с параметрами процесса процессу обслуживания, а затем ожидает ответного сообщения. На стороне сервера процесс остается в спящем режиме до тех пор, пока не поступит сообщение о вызове. Когда приходит вызывающее сообщение, сервер получает параметры процесса, вычисляет результат, отправляет информацию об ответе, а затем ожидает информацию о следующем вызове. Наконец, клиент вызывает процесс для получения информации об ответе, получает результат процесса, а затем вызывает выполнение для продолжения.

RPC имеет много преимуществ. Теперь вы можете понять, что RPC-связь намного быстрее, чем HTTP-связь.

В настоящее время Facebook и Apache очень хороши. Они разработали набор бережливости на основе протокола связи RPC

Способ реализации

  • Если вы не понимаете вышесказанного, то здесь мы боремся.
  • Прежде всего, мы используем swot для реализации RPC, других ручных кодов.
  • Разделен на клиент и сервер, чтобы выполнить следующую демонстрацию

клиент

Сначала мы создаем новый клиентский класс для вызова класса обслуживания пользователей сервера и вызываем метод getUserInfo в классе userservice.

$client = new Client('UserSerivce');
$userInfo = $client->getUserInfo(1);

var_dump($userInfo);

В клиенте нам нужно сделать только одну вещь, используя PHP magic method__ Call для вызова метода этого не существует

class Client{
 protected $serviceName;
   
 public function __construct($serviceName){
  $this->serviceName = $serviceName;
 }
 public function __call($name, $arguments){
  $rpcClient = new \swoole_client(SWOOLE_SOCK_TCP);
  $rpcClient->connect('127.0.0.1',9503,0.5);
  //The data we are going to send is agreed in advance, just like the API for opening to the outside world
  $rpcClient->send(json_encode([
   'service'=>$this->serviceName,
   'action'=>$name,
   'params'=>$arguments[0]
  ]));
  $rpcClient->close();
 }
}

В это время данные отправляются на сервер в формате JSON по протоколу RPC

Сервер

$server = new swoole_server("127.0.0.1", 9503);
$server->on('connect', function ($server, $fd){
 echo "connection open: {$fd}\n";
});
$server->on('receive', function ($server, $fd, $reactor_id, $data) {
 //$data is the data sent by the client. We can do this to call the class. Of course, you must comply with psr-4 autoloader
 $request = json_decode ($data, true);
 $className = $request['service'];
 $app  = new $className;
 $response = $app->{$request['action']}($request['params']);
 
 $server->send($fd, "Swoole: {$data}");
 $server->close($fd);
});
$server->on('close', function ($server, $fd) {
 echo "connection close: {$fd}\n";
});
$server->start();

Предыдущие статьи

  • Как PHP-программисты разрабатывают простую архитектуру управления сервисами (1)

Подробнее о содержании, связанном с PHP заинтересованные читатели могут ознакомиться с этой темой сайта: “Вводный учебник по объектно-ориентированному программированию PHP”, “Навыки работы с массивом PHP (массивом)”, “Вводный курс по основному синтаксису PHP”, “Краткое описание операций и использования операторов PHP”, “Краткое описание использования символьной строки (строки) PHP”, “Учебник по введению в работу с базой данных PHP + MySQL” и “Общая работа с базой данных PHP”. Краткое изложение навыков письма

Я надеюсь, что эта статья поможет вам в программировании на PHP.

Оригинал: “https://developpaper.com/php-programmers-simple-operation-of-service-governance-architecture-2/”