摘要:
[ 'uid' => 695, 'uname' => '王大西' ], 3 => [ 'uid' => 698, 'uname' => '王3西' ], 6 => [ 'uid' => 699, ... 阅读全文
摘要:
function middle_search($arr, $search){ if (empty($arr) || empty($search)) { return false; } $left = 0; $right = count($arr); $result = null; while ($left $arr[$middl... 阅读全文
摘要:
nodeId = $nodeId; $this->left = $left; $this->right = $right; } } class ListArr { private $list = null; public function construct() { } //创造一个n长度链表 pu... 阅读全文
摘要:
setRedis(); } private function setRedis () { if (is_null($this->objRedis)) { $this->objRedis = new Redis(); $this->objRedis->connect("127.0.0.1", 6688); ... 阅读全文
摘要:
rabbitmq构造rpc 前言 rpc——remote procedure call 远程调用。在我接触的使用过http协议、thrift框架来实现远程调用。其实消息队列rabbitmq也可以实现。 原理 我们称调用远程服务者为Client,远程服务提供者为Server。 Client充当生产者, 阅读全文
摘要:
publish and subscribe 前言 前面的例子 我们都是用到的都是消息单一消费,即一条消息被单个消费者消费。像微博系统的消息推送,是一条消息推送给所有订阅到该频道的用户。 这里我们就需要用到rabbitmq的发布与订阅(publish and subscribe) 原理 前面我们弱化r 阅读全文
摘要:
消息均发 前言 由前文 RabbitMq初探——消息分发 可知,rabbitmq自带分发机制——消息会按顺序的投放到该队列下的多个消费者,例如1,3,5投放消费者C1,2,4,6投放消费者C2。 这就有个隐含的缺点:每个消息的消费时间可能不一样,极端情况下,投放给C1的每个消息消费都需要很长时间,而 阅读全文
摘要:
消息持久化 前言 通过上一节,我们知道,有消息确认机制,保证了当消费者进程挂掉后,消息的不丢失。 但是如果rabbitmq挂掉呢?它的队列和消息都会丢失的。为了保证消息在rabbitmq挂掉重启后不丢失, 我们需要用到rabbitmq的持久化机制。 开启持久化功能 1. 首先保证queue的持久化, 阅读全文
摘要:
消息确认机制 前言 消息队列的下游,业务逻辑可能复杂,处理任务可能花费很长时间。若在一条消息到达它的下游,任务刚处理了一半,由于不确定因素,下游的任务处理进程 被kill掉啦,导致任务无法执行完成。而沿用我们前面几章的消息删除【消息一旦抛给下游,就立马从队列删除】,这可能会引发问题——消息没有处理完 阅读全文
摘要:
消息分发 前言 我们在用到消息队列的场景,一般是处理逻辑复杂,耗时,所以将同步改为异步处理,接入队列,下游处理耗时任务。 队列消息数量很大,且下游worker进程(消费者)处理耗时长,所以就有了任务的积压。rabbitmq提供了任务分发的机制。 流程弱化如下图: 可以接入多个消费者,rabbitmq 阅读全文