高频分布式系统一些关键点记录

1,  任务调度问题问题。

任务调度会遇到下面的坑:

    1.1,任务丢失。

        业务中出现过几种任务丢失的情况。第一种,使用不熟悉的队列rabbitmq,使用不熟悉的连接池,没使用ack,io太高后出现废弃连接,任务丢失。第二种,使用队列自带超时,最后由队列推断在队列阶段丢弃了任务。

    1.2,任务校验:入口参数校验,获取文件大小校验,上传文件大小校验。分布式系统都是不可靠的。被坑过几次。

    1.3,任务状态的变更。

    1.4,持久化/削峰。对于多阶段任务,需要持久化,避开跨部门或者跨小组沟通,同时方便任务重新导入。

    1.5,任务重发。注意去重和哈希。

    1.6,任务优先级问题。

3,批量io。注意io 合并,使用多级buff,尽量少io。

4,http parse 导致cpu 太高。在高频请求的时候,解析http 请求时,尽量使用c 库封装的库。

5,三线机器问题,注意两个点,一个是出口ip bind,一个是查询dns 的时候bind ip。

6,  日志太多,适当控制。分级别log ,能明显提高性能。

7,高并发的日志,要带上阶段 和taskid,便于查问题。多线程或者多协程,日志不带id,或者日志位置不对的,都是白打的日志,你都不知道是哪个任务生成的。

8,连接池的单例共享。

9, 全局catch,防止全局崩溃。

10,优雅退出。一般捕捉信号,循环位标记,然后退出。

11,内存queue的去重问题。定时器重新推任务到队列前,应该看下set中是否有这个任务了。

12,队列饿死。重cpu任务,导致cpu打满,上下文不能切换,队列之间出现某些队列始终不消费的情况。

13,原子计数问题。

14,阻塞还是非阻塞获取任务的问题。

15,业务异常的监控。对错误日志,队列等敏感信息监控。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值