linderun / php-eureka-client
Spring Cloud Eureka发现服务器的PHP客户端。
v1.0.4
2020-06-29 03:09 UTC
Requires
- php: >7.1.0
- guzzlehttp/guzzle: ^6.3
This package is not auto-updated.
Last update: 2024-09-30 23:44:01 UTC
README
Spring Cloud Netflix Eureka服务注册和发现的PHP客户端。
安装
运行
composer require linderun/php-eureka-client
或将依赖添加到您的composer.json文件中
"require": {
...
"linderun/php-eureka-client": "^1.0"
}
用法示例
1. 使用所需的包
use EurekaClient\EurekaClient; use EurekaClient\Models\Instance; use EurekaClient\Models\Metadata; use EurekaClient\Models\DataCenterInfo; use GuzzleHttp\Client;
2. 创建Eureka应用实例
// We will use app name and instance id for making requests below. $appId = 'my_app'; $instanceId = 'app_instance_id'; // Create app instance metadata. $metadata = new Metadata(); $metadata->set('instanceKey', 'instanceValue'); // Create data center metadata. $dataCenterMetadata = new Metadata(); $dataCenterMetadata->set('dataCenterKey', 'dataCenterValue'); // Create data center info (Amazon example). $dataCenterInfo = new DataCenterInfo(); $dataCenterInfo ->setName('Amazon') ->setClass('com.netflix.appinfo.AmazonInfo') ->setMetadata($dataCenterMetadata); // Create Eureka app instance. $instance = new Instance(); $instance ->setInstanceId($instanceId) ->setHostName('hostName') ->setApp($appName) ->setIpAddr('127.0.0.1') ->setPort(80) ->setSecurePort(433) ->setHomePageUrl('https://') ->setStatusPageUrl('https:///status') ->setHealthCheckUrl('https:///health') ->setSecureHealthCheckUrl('https:///health') ->setVipAddress('vipAddress') ->setSecureVipAddress('secureVipAddress') ->setMetadata($metadata) ->setDataCenterInfo($dataCenterInfo);
3. 创建Eureka客户端
// Create eureka client. $eurekaClient = new EurekaClient('localhost', 8080);
4. 发送请求
// Register new application instance. $response = $eurekaClient->register($appId, $instance); // De-register application instance. $response = $eurekaClient->deRegister($appId, $instanceId); // Query for all instances. $allApps = $eurekaClient->getAllApps(); // Query for all appID instances. $app = $eurekaClient->getApp($appId); // Query for a specific appID/instanceID. $appInstance = $eurekaClient->getAppInstance($appId, $instanceId); // Query for a specific instanceID. $instance = $eurekaClient->getInstance($instanceId); // Send application instance heartbeat. $response = $eurekaClient->heartBeat($appId, $instanceId); // Take instance out of service. $response = $eurekaClient->takeInstanceOut($appId, $instanceId); // Move instance back into service (remove override). $response = $eurekaClient->putInstanceBack($appId, $instanceId); // Update metadata. $response = $eurekaClient->updateAppInstanceMetadata($appId, $instanceId, $metadata); // Query for all instances under a particular vip address. $instances = $eurekaClient->getInstancesByVipAddress('vipAddress'); // Query for all instances under a particular secure vip address. $instances = $eurekaClient->getInstancesBySecureVipAddress('secureVipAddress'); // Fetch an instance of a service from Eureka. $instance = $eurekaClient->fetchInstance($appId);
5. 发现策略
当从Eureka获取服务实例时,你可能会得到一个可用实例列表。你可以根据你的负载均衡策略选择其中之一。例如,轮询或随机策略可能是你的选择。目前这个库仅支持RandomStrategy,但你可以通过实现DiscoveryStrategy接口的getInstance()方法创建自己的策略
class RoundRobinStrategy implements DiscoveryStrategy {
public function getInstance($instances) {
// return an instance
}
}
然后你只需要将你的自定义策略引入EurekaClient实例
$eurekaClient->getContainer()->setDiscoveryStrategy(new RoundRobinStrategy());