memcache扩展版本 3.0.8

一. retry_interval

$retry_interval 某个rpc服务器端失败后故障转移的时间,retry_interval的时间内,该节点会被一直标记为不可用,隔离掉,为小于0的数一直隔离。

int mmc_server_valid(mmc_t *mmc TSRMLS_DC) /*
checks if a server should be considered valid to serve requests {{{ */
{
if (mmc != NULL) {
if (mmc->tcp.status >= MMC_STATUS_DISCONNECTED) {
return ;
} if (mmc->tcp.status == MMC_STATUS_FAILED &&
mmc->tcp.retry_interval >= && (long)time(NULL) >= mmc->tcp.failed + mmc->tcp.retry_interval) {
       //这里用当前时间和故障发生时间+隔离时间作对比
return ;
}
} return ;
}

二.重试策略

请求某个节点超时或者失败会有一次重试的机会,但是当服务器重启以后,貌似没有做重试,只是标记了连接状态为不可用。当第二次用到这个连接的时候才会重建连接,这样重启前有多少连接,就会有多少请求不可用。

/* read more data from socket */
if (php_stream_eof(mmc->readreq->io->stream)) { //服务器端主动断开连接的情况,stream读到EOF
result = mmc_server_failure(mmc, mmc->readreq->io, "Read failed (socket was unexpectedly closed)", TSRMLS_CC);
if (result == MMC_REQUEST_FAILURE) {
/* take server offline and failover requests */
mmc_server_deactivate(pool, mmc TSRMLS_CC);
}
if (result == MMC_REQUEST_RETRY) {
mmc_select_retry(pool, mmc, mmc->readreq TSRMLS_CC);
}
}
break;

红字是我后加的,原来扩展虽然标记了result为MMC_REQUEST_RETRY,但是没做重试。简单的方法也可以在扩展中再new Memcache(),addServer一次。

PHP使用memcache长连接作为RPC客户端需要注意的地方的更多相关文章

  1. java Socket 长连接 心跳包 客户端 信息收发 demo

    今天写了个socket的测试小程序,代码如下 import java.io.IOException; import java.io.InputStream; import java.io.Output ...

  2. NIO单一长连接——dubbo通信模型实现

    转: NIO单一长连接——dubbo通信模型实现 峡客 1.2 2018.07.15 19:04* 字数 2552 阅读 6001评论 30喜欢 17 前言 前一段时间看了下dubbo,原想将dubb ...

  3. TCP同步与异步,长连接与短连接【转载】

    原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到T ...

  4. HTTP的长连接和短连接

        本文总结&分享网络编程中涉及的长连接.短连接概念.     关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一.什么是长连接 HTTP1.1规定了默认保持长连接(HTT ...

  5. Web 通信 之 长连接、长轮询(转)

    Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...

  6. Web 通信 之 长连接、长轮询(long polling)

    基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易 ...

  7. HTTP长连接短连接

    一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...

  8. Web 通信 之 长连接、长轮询(long polling)(转)

    基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易 ...

  9. HTTP协议中的长连接和短连接(keep-alive状态)

    什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待在同 ...

随机推荐

  1. zookeeper+dubbo简单部署方案

    1.zookeeper服务 首先,我们需要下载:zookeeper-3.4.9 解压后,在conf文件夹中添加一个配置文件zoo.cfg,内容如下: tickTime=2000 dataDir=/Us ...

  2. (转)shell命令:echo命令详解

    shell命令:echo命令详解 原文:https://www.cnblogs.com/xyz0601/archive/2015/04/23/4450736.html 功能说明:显示文字. 语 法:e ...

  3. js判断文件是否存在的方法

    在做电力监控项目的时候,有一个需求就是左右布局的框架,点击左边的图形文件地址,然后去文件夹中找到文件,再在右边出现对应的图形文件,但是有些文件可能是配置的时候有问题,找不到文件,所以js需要判断,以下 ...

  4. 3、java内存模型特点

    java内存模型是围绕着在并发过程中如何处理原子性,可见性跟有序性这三个问题来建立的.先看一下这三个特性: 1.原子性 由java内存模型来直接保证的原子性变量操作就是上文2中提到的8种基本操作,我们 ...

  5. TOJ 4523 Transportation

    Description Given N stations, you want to carry goods from station 1 to station N. Among these stati ...

  6. adb调试安卓

    http://blog.csdn.net/liushida00/article/details/49797239

  7. pat1005. Spell It Right (20)

    1005. Spell It Right (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given ...

  8. JS识别不同浏览器信息

    总所周知,不同浏览器兼容是不一致的,然而今天我在Coding的时候深深体会到那个痛苦,一样的代码在Firefox里面是没问题的,可以根据索引找到 对应的对象元素然后进行操作,但是同样的却获取不到对象元 ...

  9. Python Fabric ssh 配置解读

    Python Fabric ssh 配置解读 Fabric 2.4简介: Fabric is a high level Python (2.7, 3.4+) library designed to e ...

  10. json对象字符串互转

    json对象字符串互转 1.Node.js中 JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json ...