Автор оригинала: 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/”