【问题标题】:PHP curl_init load ballance multiple serversPHP curl_init 负载均衡多台服务器
【发布时间】:2013-06-03 16:15:38
【问题描述】:

我有一个正在调用 REST 服务器的服务。我正在使用 CURL 发出请求。我们有三个端点用于分配负载。我可以创建一些“随机”选择端点的基本逻辑,但这似乎不是一个“好的”解决方案。我想知道是否有更好的解决方案?

define ("REST_SERVER", "http://myService.myCompany.com:8280");
...
$url = REST_SERVER.URL_SIGN;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'Content-Type: application/json',
  'Content-Length: ' . strlen($data_string))
);
$curl_result = curl_exec($ch);

【问题讨论】:

  • 在您的服务器上使用实际负载平衡器?
  • 我会说你的“客户端”代码(= 使用 REST API 的那个)不应该做负载平衡,你的端点应该做......如果你不想这样做,那么你的想法还不错

标签: php rest curl


【解决方案1】:

如果您正在寻找一个穷人的负载均衡器,您可以将您的端点枚举到一个数组中,调用 shuffle() 和 array_pop() 幸运的赢家。

<?php
$endpoints = array(
   'http://api1.myco.com',
   'http://api2.myco.com'
);

shuffle($endpoints);

define('REST_SERVER', array_pop($endpoints));

// ...
?>

我还建议您在发出 API 调用之前对每个候选人进行审查,以确保其“启动”/“可用”,这超出了本问题的范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2017-06-12
    相关资源
    最近更新 更多