RabbitMQ实现延迟队列的方式 发表于 2022-07-011.背景 最近在做类似拍卖系统的上架功能,卖家上架物品以后,例如到期时间24小时或者48小时,如果无竞拍者或者购买者,则物品自动下架到用户的邮件中。诸如电商用户下单,30分钟未支付,则自动取消订单,归还库存.实现这些类似的业务场景,大家想到最简单的方式和我想的差不多如下.看看是否和你想的基本一致.1.1 MySQL+轮询 &nbs ...阅读全文 »
rsync+inotify文件实时同步 发表于 2022-04-05简介 最近有一个比较特殊的需求,某个服务提供文件上传功能。但是由于要解决单点问题,所以会程序会部署在多台服务器上实现高可用。但是也会随之带来一个和共享cookie类似的问题,那就是文件存储也应该是共享的.其实大部分同学想到的,第一个肯定是使用NFS来解决。大家通过NFS mount到同一个目录即可实现. 但是为什么我们没有选择这个解决方案呢? 那是因为之前不知道是我们使用不当 ...阅读全文 »
Kong集群(hybrid混合)部署模式 发表于 2022-02-10一.简介上一篇文章简单入门和了解到了Kong自定义插件开发方式。紧跟着,这篇主要介绍Kong集群部署模式。生产环境/流量较大的环境下,我们的Kong就要解决单点问题和性能问题,单个Kong节点无法满足我们高并发、高访问量的需求。那么我们自然想到,Kong自身有提供集群部署模式么?答案是肯定的。 如果Kong自身没有提供集群模式,那么我们也可以自己通过负载均衡的模式,在前端架设一个高可用的7 ...阅读全文 »
2022最新Kong插件开发教程 发表于 2022-01-29一.前言很久没更新博客内容了~,之前一直想看Api网关的开源框架Kong,但是奈何各种事情打扰也没静下心来学习。不知道是什么缘故,之前总感觉Kong很难,入门门槛高。不过经过这几天的学习,发现和学习一个Nginx也没太多区别。可能人对自己未知的事物总是抱有一种恐惧感吧。今天分享记录一下Kong插件开发的基本流程。 二.原理分析Kong本身就是一个Lua包,并且是在Openresty的基础之上 ...阅读全文 »
filebeat重复采集数据问题排查 发表于 2021-07-18 | 分类于 ELK , DevOps一.背景公司基于ELK的日志系统一直很稳定,不过有一天下午,微信收到Kafka topic延迟堆积告警将近6000w条数据。首先接收到告警,查看了这个业务最近7天的一个流量图,基本上量都很小,每秒也就2k左右的数据流量,但是今天下午流量直接跑到了30k/s并且持续了一段时间.首先找到业务方负责的SRE同事,确认流量是否属于正常(不排除上线新款游戏流量暴增的情况).SRE同事确认流量异常,最近无新游 ...阅读全文 »
PHP中MySQL server has gone away问题 发表于 2020-08-22 | 分类于 DevOps一.背景 之前在Codeigniter里面写过类似console命令行的脚本. 脚本里存在sleep语句时间比较久, 导致出现一个现象就是sleep之前的SQL都是操作成功的,但是sleep之后,再执行SQL操作竟然报错: MySQL server has gone away. 也就是mysql的这个连接失效. 后来分析才知道, MySQL中存在2个重要的配置参数:inter ...阅读全文 »
FastCGI协议内容 发表于 2020-04-27 | 分类于 HTTPCGI或者Fast-CGI协议的定义: WebServer(web服务器软件如nginx httpd等)与真实后台处理请求的程序之间通信的一种约定规范,找了一篇文章把fastcgi协议讲得比较清楚,记录一下。总结: 和理解http协议一样去理解fastcgi协议其实很都是b/s架构, 一个客户端发一个request请求,一个server端响应数据。 此时WebServer作为client fast ...阅读全文 »
采用xhprof扩展对PHP项目进行性能分析 发表于 2020-04-09 | 分类于 PHP背景 由于我们的项目是另外一个团队的server端,给他们提供的2个接口他们偶尔反应程序调用超时,他们设置httpClient的超时时间为10s。一般情况下来说我们程序一定要保证在5s以内就要返回response给客户端了,所以我们想分析一下我们的程序到底是哪个模块或者函数调用上耗时严重. 一般我们最容易想到的方法就是在某个方法前拿到开始时间戳,然后在方法执行完以后得出结束时 ...阅读全文 »
git中rebase(变基)和merge(合并)区别 发表于 2020-03-23 | 分类于 git简介 以前用git基本上针对git flow以及基本的git操作命令基本上满足日常开发需求,其实也没必要过于深究,常用命令80-90%基本上满足我们正常使用了。 但是其实很多人,包括我自己,git的官方文档基本没扫完一遍,所以抽时间其实几个小时也就能看完的事情。 其中在合并branch的时候,网上有很多关于使用git rebase 还是 git merge有无数篇文章进行所谓 ...阅读全文 »
Protobuf数据交换格式 发表于 2020-01-08 | 分类于 gPRC简介 ProtoBuf(Google Protocol Buffer)是由google公司用于数据交换的序列结构化数据格式,具有跨平台、跨语言、可扩展特性,类型于常用的XML及JSON,但具有更小的传输体积、更高的编码、解码能力,特别适合于数据存储、网络数据传输等对存储体积、实时性要求高的领域。以 .proto为后缀,有自己的编译器 protoc, protoc2 和 pro ...阅读全文 »