Maison > cadre php > Swoole > le corps du texte

Comment utiliser le framework Hyperf pour les appels de service distribués

王林
Libérer: 2023-10-20 14:41:02
original
1194 Les gens l'ont consulté

Comment utiliser le framework Hyperf pour les appels de service distribués

Comment utiliser le framework Hyperf pour les appels de service distribués

Introduction :
À mesure que l'entreprise se développe, la taille et la complexité des applications augmentent également rapidement. Dans ce cas, afin d'améliorer l'évolutivité et l'évolutivité de l'entreprise, les systèmes distribués deviennent de plus en plus importants. L'invocation de services dans les systèmes distribués est également devenue complexe, nécessitant un cadre fiable pour simplifier le développement et la gestion.

Hyperf est un framework haute performance basé sur l'extension Swoole, axé sur les liens longs et les coroutines, fournissant un grand nombre de composants et de fonctions. Dans cet article, nous présenterons comment utiliser le framework Hyperf pour effectuer des appels de service distribués.

1. Préparation

  1. Installer le framework Hyperf

Tout d'abord, nous devons installer le framework Hyperf localement. Hyperf peut être rapidement installé via la commande suivante :

composer create-project hyperf/hyperf-skeleton
Copier après la connexion
  1. Fichier de configuration

Une fois l'installation terminée, une configuration de base du framework Hyperf est requise. Vous pouvez modifier le fichier .env pour configurer la connexion à la base de données, Redis et d'autres informations associées. .env文件来配置数据库连接、Redis等相关信息。

二、创建服务提供者

  1. 创建服务提供者类

app/Provider目录下创建一个服务提供者类,命名为RemoteServiceProvider。该类中将定义一个远程服务的方法。

<?php

declare(strict_types=1);

namespace AppProvider;

use HyperfRpcClientAbstractServiceClient;

class RemoteServiceProvider extends AbstractServiceClient
{
    protected $serviceName = 'ServiceName';

    protected $protocol = 'jsonrpc-http';

    public function remoteMethod(array $params)
    {
        return $this->__request(__FUNCTION__, compact('params'));
    }
}
Copier après la connexion

上述代码中,RemoteServiceProvider继承了AbstractServiceClient,并且定义了一个名为remoteMethod的远程方法。

  1. 配置服务提供者

编辑config/dependencies.php文件,添加以下代码:

use AppProviderRemoteServiceProvider;

return [
    'dependencies' => [
        // ...

        RemoteServiceProvider::class => RemoteServiceProvider::class,
    ],
];
Copier après la connexion

三、创建服务消费者

  1. 创建控制器类

app/Controller目录下创建一个控制器类,命名为TestController。该类中将调用远程服务。

<?php

declare(strict_types=1);

namespace AppController;

use AppProviderRemoteServiceProvider;
use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationPostMapping;

/**
 * @Controller()
 */
class TestController
{
    /**
     * @PostMapping(path="/test")
     */
    public function test(RemoteServiceProvider $service)
    {
        $params = ['key' => 'value'];

        return $service->remoteMethod($params);
    }
}
Copier après la connexion

上述代码中,TestController类中的test方法注入了RemoteServiceProvider,并调用了其remoteMethod方法。

  1. 配置路由

编辑config/routes.php

2. Créez un fournisseur de services

    Créez une classe de fournisseur de services
Créez une classe de fournisseur de services dans le répertoire app/Provider et nommez-la RemoteServiceProvider. Cette classe définira une méthode de service distant.

use AppControllerTestController;

$router->addRoute(['POST'], '/test', [TestController::class, 'test']);
Copier après la connexion

Dans le code ci-dessus, RemoteServiceProvider hérite de AbstractServiceClient et définit une méthode distante nommée remoteMethod.

    Configurez le fournisseur de services
Modifiez le fichier config/dependencies.php et ajoutez le code suivant :

php bin/hyperf.php start
Copier après la connexion
Copier après la connexion

3. Créez un consommateur de service

Créez la classe du contrôleur

dans < Créez une classe de contrôleur dans le répertoire code>app/Controller et nommez-la TestController. Les services distants seront appelés dans cette classe.

php bin/hyperf.php start
Copier après la connexion
Copier après la connexion

Dans le code ci-dessus, la méthode test de la classe TestController injecte le RemoteServiceProvider et appelle son remoteMethod méthode.

🎜🎜Configurer le routage🎜🎜🎜Modifiez le fichier config/routes.php et ajoutez le code suivant : 🎜rrreee🎜 4. Démarrez le serveur et le client 🎜🎜🎜Démarrez le serveur 🎜🎜🎜Utilisez le commande suivante Démarrez le serveur Hyperf : 🎜rrreee🎜Le serveur commencera à écouter le port spécifié et attendra les demandes des clients. 🎜🎜🎜Démarrez le client🎜🎜🎜Utilisez la commande suivante pour démarrer le client Hyperf : 🎜rrreee🎜Le client lancera automatiquement une requête au serveur et obtiendra le résultat de la réponse. 🎜🎜Conclusion : 🎜Grâce aux étapes ci-dessus, nous pouvons utiliser le framework Hyperf pour effectuer des appels de service distribués. Tout d’abord, nous créons une classe de fournisseur de services et y définissons une méthode distante. Nous avons ensuite créé une classe de contrôleur, y avons injecté le fournisseur de services et appelé ses méthodes. Enfin, nous avons démarré le serveur et le client pour terminer l'appel de service distribué. 🎜🎜Le framework Hyperf fournit des fonctions et des composants puissants, rendant le développement de systèmes distribués plus simple et plus efficace. En utilisant le framework Hyperf, nous pouvons créer rapidement des applications distribuées et mettre en œuvre facilement une architecture de microservices. 🎜🎜J'espère que cet article vous aidera à comprendre comment utiliser le framework Hyperf pour effectuer des appels de service distribués. Je vous souhaite du succès dans le développement de systèmes distribués ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal