线上项目优化记录

业务场景:

最近几个月都在做项目接口优化,压测等工作。
目前项目缓存主要用的redis和spring的cache以及Ibatis的cache。但绝大部分还是用的redis.
基本步骤:先去缓存查,有就直接返回,没有就去查数据库,然后加失效时间,存缓存,然后返回,但是这中间有个问题,像那种业务逻辑比较多的,虽说缓存的那几秒速度快了,TPS上不去,缓存的失效时间到了,还是会把压力透传到db上。之前用户量少,随随便便就可以撑住,随着用户增长,手机小屏用户变多,机顶盒用户变多,现在用户在700万+,而且为了做推广,做了开户抽奖活动,并发,性能问题越来越严重。

起初优化

起初想到的就是优化代码及业务逻辑,我们三个人,便开始撸代码之旅

代码包括

  • 使用多线程,线程池去做处理
  • 梳理逻辑去掉冗余代码
  • 使用jmap,jstack去查看耗时的堆栈信息
  • JProfiler 优化接口
  • Jmeter压测接口
  • 其他

其中db包括

等这些都做完,出包放到线上,效果还是不好,并不能满足领导性能的要求及想要的TPS

继续优化

然后又是开会讨论讨论研究研究...,最后定了做一个CacheManager(缓存系统),最终达到领导想要的TPS及指标。
这里简单说一下cm一条线路,还有几条线路就不说了,Metadata和API通过MQ做消息传输,消息队列之前用的ActiveMQ,然后改为RabbitMQ,好处网上有一堆,在Metadata侧发数据给API侧时,将数据同时传到cm侧做处理,主要是缓存.以此来减少接口对数据库的压力。

此方案的缺点

觉得MongDB,属于鸡肋
理由,redis已经有持久化了,如果只做展示,运维,加入mongo在这个场景下,会占用很多的空间,各有利弊吧

数据一致性的问题
因为以后基本不过db,直接去缓存取,虽然redis有持久化,但是我们还是引进了MongDB,存redis时顺带存mongo,使用vue写了个简单页面,然后cm提供一组供运维页面使用的接口,在页面做简单请求实现,以此来解决数据一致性的问题(其中包括查问题数据重新刷到redis)

redis相关的问题
压力全部转移到redis,如果redis出现问题,将是致命的,细的我也没怎么看,说几个我知道的

  • 网络延时导致阻塞
  • 阻塞通过查看慢查询日志,找病因
  • redis模式的合理选择
  • 最主要的加机器,机器,机器,重要事说三遍

总结

此方案或许有很多漏洞,不恰当之处请包涵,但整体效果是达到了领导的要求,中间我们就讨论过数据一致性问题,为啥不用binlog去做数据恢复,为啥非得加mongo,画页面等,我当时提的建议是,对于数据一致性修复,咱们得弄可视化让运维去做处理,总不能每次都提供脚本吧。

对于redis模式的选择,推荐使用集群,理由如下

单实例
对于单实例,学习使用就行,在项目中基本不会使用此模式.单实例除小系统外,撑不起整个服务。

主从模式
数据会通过主同步到从,但是受限于单台机器的性能。

哨兵模式
项目之前用的哨兵模式
优点:虽说哨兵有主写从读、主从复制,故障自动转移,通过选举做的.。
缺点:还是受限于单台机器性能,而且数据上去后,每台机器都保存着全量的缓存数据,如果还做持久化了(RDB,AOF),那占用的资源会更大。

集群模式
项目现在用的模式
优点:主从复制,高可用,通过16384个槽,均匀分配到不同的主节点,key通过crc16算槽,压力分配到每台机器上,支持动态加减节点,扩容及收缩,故障自动转移等
缺点:耗机器,需要多台机器

相关资料

链接: https://pan.baidu.com/s/1PedVDbb2NjODoHWuGbiQmw 提取码: 5ii4

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355