公司的系统完全没有容错机制。于是想到了java微服务。首先是需要一个注册表getService.php[["url"=>"http://127.0.0.1/testSwitch/producer1.php","status"=>"1"],["url"=>"http://127.0.0.1/testSwitch/producer2.php","status"=>"-1"],["url"=>"http://127.0.0.1/testSwitch/producer3.php","status"=>"-1"],]];echojson_encode($array);?>三个服务提供者,使用status表示状态。服务的消费者和调用者。主要分为三个步骤。第一步是获取可以调用的服务。第二步是选择服务。第三步是调用服务。如果服务出现问题,可以通知注册中心修改当前服务状态,同时通过短信通知运维人员。这样可以保证下次调用正常。array('timeout'=>10,)));$content=file_get_contents($url,false,$ctx);返回空($内容)?false:$content;}functiongetServices($serviceName){//或异常捕获$services=file_get_contents('http://127.0.0.1/testSwitch/getService.php');如果(空($services)){返回假;}$services=json_decode($services,true);$urls=$services[$serviceName];返回空($urls)?false:$urls;}functionrun($serviceName){$urls=getServices($serviceName);if(!$urls){//注册中心错误,可能异常returnfalse;$url=chooseUrl($urls);如果(空($url)){//没有服务可用,可能异常返回false;}$content=getContent($url);if(empty($content)){//服务错误,更新服务信息echo$url."服务错误";返回假;}return$content;}$result=run("produce");if(!$result){echo"defaultfusemechanism";}else{echo$result;}?>Test1这里的结果是手动修改注册中心由于状态,生产者的评论被取消,服务器上的其他因素导致服务超时。这也允许状态更改。
