PHP實現consul服務註冊與服務發現

2021-09-19 06:31:44 字數 1526 閱讀 3867

本文主要介紹怎麼用consul提供的http的api來實現php與consul之間的通訊,實現服務的註冊與發現。

首先官方api:

其次我實現的**:

上圖中資料夾consul之外的php檔案是實現的部分功能內有注釋,例如註冊方法:

<?php 

/** * created by 20.

* user: 20

* 服務註冊

*/define('base_path', __dir__);

include base_path . '/consul/agent.php';

//eg:

//判斷當前協議

$http_type = 'http://';//當前協議是http或https

$secure = 'secure=false';//是否是https協議,https:secure=true

//ip,port預設是本機

$ip = '127.0.0.1';//$_server['server_addr']

$port = 80;$_server['server_port']

$name = 'win1';//自定義

$id = 'win1-7'.$port;//自定義

$tags = array( $secure );//服務的tag,自定義增加值,可以根據這個tag來區分同乙個服務名的服務

$healthcheckip = $http_type.$ip;//健康檢查ip預設與註冊一樣,但需拼接協議,如不同可修改

$healthcheckport = 80;

$healthcheckpath = 'health.php';//健康檢查path,如consul/health

$interval = '10s';//健康檢查間隔

$agent = new consul\agent(array(

'host' => ''

));$res = $agent->registerservice($id, $name, $ip, $tags, $port, $healthcheckip, $healthcheckport, $healthcheckpath, $interval);

echo "";

var_dump($res);

其他用到的可根據我的呼叫方式自行實現,多看下官方的api這些就變得簡單了。

consul服務註冊

這是定義服務的根級引數。您可以指定引數來配置服務。範圍描述 預設必需的 id 指定服務 id 的字串值。如果未指定,name將使用該字段的值。每個節點的服務必須具有唯一的 id,因此如果預設值name會與其他服務衝突,您應該指定唯一的值。name引數值 可選的name 指定服務的名稱。如果id未指定...

Consul服務註冊中心 Consul工作原理

consul工作原理如下圖所示 當服務producer啟動時,會將自己的ip host等資訊通過傳送請求告知consul,consul接收到producer的註冊資訊後,每個10s 預設 會向producer傳送乙個健康檢查的請求,檢驗producer是否監控。當consumer請求producer...

服務註冊之Consul

consul是hashicorp公司推出的開源工具,consul由go語言開發,部署起來非常容易,只需要極少的可執行程式和配置檔案,具有綠色 輕量級的特點。consul是分布式的 高可用的 可橫向擴充套件的用於實現分布式系統的服務發現與配置。consul的應用場景包括服務發現 服務隔離 服務配置 這...