如何保证mq消息的幂等性

由于mq是为了系统之间的解耦,很好的解除了订阅者、发布者之间的耦合。
当mq中的消息发布的时候,如果发布失败,返回非200,或者超时,则直接进行重试的机制,不断的重试。所以目前线上经常有消费者因为代码有问题后,mq的报警就不断,一直fatal。
因为mq的重试机制,所以我们需要考虑消息的幂等性。

 php sort排序实现原理

php有很多的排序函数,比如普通的sort函数,倒序的rsort函数,还有按照键来排序的ksort、krsort函数,或者自定义比较函数的usort、ursort。这些在/ext/standard/php_array.h里面都有定义。

1
2
3
4
5
6
7
8
9
10
11
PHP_FUNCTION(ksort);
PHP_FUNCTION(krsort);
PHP_FUNCTION(natsort);
PHP_FUNCTION(natcasesort);
PHP_FUNCTION(asort);
PHP_FUNCTION(arsort);
PHP_FUNCTION(sort);
PHP_FUNCTION(rsort);
PHP_FUNCTION(usort);
PHP_FUNCTION(uasort);
PHP_FUNCTION(uksort);

现在我们拿sort函数举例

 为什么redis内存不宜过大

redis的效率问题是毋庸置疑的,简直甩了mysql几百条街。导致现在很多的接口,为了追求性能问题,都开始滥用redis。在目前主流的redis分布式系统中,一般一个redis集群有多个redis分片,而一个redis分片是由一个主库和多个从库组成。其实当一个redis分片有太多的内存是不友好。接下来从几个方面讲解为什么不好的原因:

redis超时问题排查

通过查询线上redis的耗时,发现已经严重超出预期了,竟然有10%的耗时超过了3ms。作为redis,每个请求都应该在1ms以下。10ms、20ms已经严重影响用户体验了。接下来我来一步一步追踪我们的redis导致怎么了?该怎么解决这个问题?

 redis数据持久化_RDB_AOF

redis作为内存数据库,一共支持2种数据持久化方案:RDB、AOF。这两种方案把数据存储到磁盘中,既可以同时使用,也可以单独使用,甚至都不使用,具体使用可以配置。
把数据存储到磁盘主要是为了以后重用数据,或者防止系统出现故障而将数据备份到远程位置。

,