秒杀系统上云,从1342ms提升到138ms
小伙伴们好呀,拖拖拉拉的我,终于把秒杀项目部署到云端上去了!
这次过程也比较顺利,搭建下RabbitMQ就好了。helminstallrabbitmqbitnamirabbitmqnamespaceprodfconfig。yaml
不过我发现,每次都得研究下这个配置文件,真的是头大,而且后面如果要装插件,开启插件这些好像也挺麻烦的,像Redis的布隆过滤器,RabbitMQ的延迟插件等等。
而且捣鼓到最后,还得打包成自己的镜像才能好好保存下来
越操作越不耐烦,还是写代码省心
这个算是我部署在云端的第一个有意义的k8s应用,有点小激动,狠狠地测试下
代码基本没啥改动,简单地调整下这些host。
顺手将redisson改成了主从,代码中lettuce还没修改。
写个Dockerfile部署下。FROMadoptopenjdk:11jrehotspotasbuilderMAINTAINERJav4yeWORKDIRapplicationARGJARFILEtargetseckilldemo。jarCOPY{JARFILE}application。jarRUNjavaDjarmodelayertoolsjarapplication。jarextractFROMadoptopenjdk:11jrehotspotWORKDIRapplicationCOPYfrombuilderapplicationdependencies。COPYfrombuilderapplicationspringbootloader。COPYfrombuilderapplicationsnapshotdependencies。COPYfrombuilderapplicationapplication。ENVTZAsiaShanghaiENVJVMOPTSXmx512mXms512mENTRYPOINT〔sh,c,java{JVMOPTS}org。springframework。boot。loader。JarLauncher〕
单机
jmeter测试
下面是十次测试结果数据,可以跳到阅读小结内容
第一次平均响应是1711ms,50的请求是1808ms,99是2552ms,最小是708ms,最大是2961ms,吞吐量是224。1s。
第一次
第二次平均响应是400ms,50的请求是394ms,99是1002ms,最小是21ms,最大是1198ms,吞吐量是503。3s。
第二次
第三次平均响应是337ms,50的请求是311ms,99是791ms,最小是11ms,最大是847ms,吞吐量是557。4s。
第三次
第四次平均响应是97ms,50的请求是85ms,99是236ms,最小是17ms,最大是365ms,吞吐量是745。2s。
第四次
第五次平均响应是124ms,50的请求是109ms,99是332ms,最小是11ms,最大是3033ms,吞吐量是248s。
第五次
第六次平均响应是84ms,50的请求是83ms,99是156ms,最小是14ms,最大是217ms,吞吐量是805s。
第六次
第七次平均响应是224ms,50的请求是224ms,99是486ms,最小是18ms,最大是565ms,吞吐量是657。5s。
第七次
第八次平均响应是92ms,50的请求是81ms,99是326ms,最小是9ms,最大是3024ms,吞吐量是250。5s。
第八次
第九次平均响应是80ms,50的请求是72ms,99是173ms,最小是14ms,最大是396ms,吞吐量是789。9s。
第九次
第十次平均响应是72ms,50的请求是63ms,99是138ms,最小是12ms,最大是347ms,吞吐量是792。4s。
第十次
小结
第一次这么认真的测试,但是这种测试还不严谨,看网上说要命令行的方式去运行jmeter测试,但是我还是偷个懒,这样和上文测试出来的结果也好有个比较。
在上文《写个简易版秒杀系统练练手》中,有下面这份报告
当然,上文的这个报告是取最好的那一次,也就是预热JVM后的结果。
这次,测试了十次,也是500并发。
可以看到第一次请求的数据效果非常差!99的请求要2552ms,这可能就是没预热JVM的情况。
第二次,第三次,效果也很差,但是到第四次开始,效果就好起来了99的请求在350ms以下。
最好的一次,是第十次,99的请求在138ms。
对比上文的结果,从1342ms提升到138ms,硬生生提升了10倍的效率,这要是放在生产环境下,那不得把牛吹坏了
当然,从表中还可以发现,这网络抖动还有点大,不知道怎的,这个max突然就卡到3024ms去,严重降低了这个吞吐量。
上文也提到过,最大的问题应该是网络开销,毕竟还是用了MQ异步下单,内存标记,Redis预扣库存等手段去优化。
现在都部署到k8s上,RabbitMQ,Redis,MySQL都在上面,就不会有这么大的网路开销了。接下来怎么优化呢?
目前只有零星的思路,比如吞吐量的话,我可能会尝试下这个reactive的方式,或者将Springboot内嵌的Tomcat换成jetty,undertow试试。
代码的话,试试将lettuce也更换成主从模式的看看,再看看API有哪些可以优化的。
最主要的,还是这个JVM,下次用VisualVM连上去看看JVM在这期间的变化,看看CPU,内存,等的变化。
集群(3个)
虽然一直吐槽部署变得麻烦,但是这个点一点就扩容,一下子就变成集群真的太赞了!
所以我在上文提到直接用分布式锁就好了,毕竟很难忍住不试下。
一下子变成多个消费者,但是好在用了这个分布式锁,避免了重复消费订单的问题。
这也很符合我理想中的代码,业务代码就归业务代码好了,微服务那一套能分离的就尽量分离出来,现在靠这个k8s就能实现负载均衡了,确实好方便,当然,不方便的就落到k8s运维人员身上去了,比如负载均衡策略的调整啥的。
第一次平均响应是1705ms,50的请求是1795ms,99是3838ms,最小是16ms,最大是4155ms,吞吐量是157。1s。
第一次
第二次平均响应是587ms,50的请求是529ms,99是2162ms,最小是20ms,最大是2265ms,吞吐量是388。7s。
第二次
这我就有点纳闷了,怎么还这么慢的!
按理说,我这集群是来提高吞吐量的啊!难道是因为我这是假的集群(都在minikube节点上)
结果查看容器日志时,发现居然有错
把日志下载到本地发现,原来是这个ID重复了
之前偷个懒,直接用hutool工具生成了,现在变成集群也不好修改呀。
那好吧,先暂时作罢,看来还得把这个分布式ID生成器搭建下。
那咱们下文见,下文就来看看单机下JVM的变化先吧,over!
喜欢的小伙伴记得关注下哦,全网同名
翟潇闻周雨彤恋情曝光,牵手回家感情稳定,相差五岁不被看好娱乐圈又一男明星恋情曝光!2月24日,有狗仔晒出了一段翟潇闻与女生牵手回家的画面,消息一出,迅速引发热议。事情发生在这个月16日,翟潇闻现身机场后直接乘车回家,到了晚上,翟潇闻拖着
科幻电影背后的中国制造流浪地球2中使用的傲鲨智能外骨骼机器人道具。受访企业供图技术人员在新一代人造太阳真空室内解决技术难点。王雨萌摄流浪地球2中的运输重卡,由徐工全地形运输平台改造而来。受访企业供图流浪
深度解析甄嬛传3个多数人都没发现的伏笔甄嬛傳處處的伏筆,不是看一次就能發現的,當你看過十幾遍之後,才能真正看懂甄嬛傳最細緻精彩的部分。接下來再來跟大家聊聊,三個多數人都沒發現的伏筆。一甄嬛的生日,就是一個最大的暗示甄嬛
宫崎骏执导经典动画电影天空之城将于内地重映!宫崎骏执导经典动画电影天空之城将于内地重映!据悉,此次公映的将是天空之城数位纪念版。这部由吉卜力工作室制作,动画大师宫骏导演担任原作监督和脚本的经典巨作,不但比龙猫更早问世,片中由
IMDB排行榜第一名肖申克的救赎看过吗?肖申克的救赎是一部由弗兰克德拉邦特执导的电影,改编自斯蒂芬金的小说。影片讲述了银行家安迪杜佛兰(由蒂姆罗宾斯饰演)被错误定罪并入狱的经历,以及他与瑞德(由摩根弗里曼饰演)等囚犯在狱
夏花别猜了,何冉跟萧寒的结局早就注定了电视剧夏花即将迎来它的大结局,网友们对何冉跟萧寒的爱情结局比较关注,有着自己的猜测。夏花是根据网络小说他站在夏花绚烂里改编的,原著讲述的是一个患有先天白血病的花季少女喜欢上落魄大叔
手游每日情报2。22EngageKill3月1日正式开服!动画时间线战斗RPGEngageKill3月1日正式开服!日本SQUAREENIX在2月20日实施的新作RPG手游EngageKill()正式开始服务直前节目中宣布,游戏将于202
湘潭县云龙中学创意作画趣味多多为提高学生综合素养,助力学生全面发展,落贯彻实双减政策,云龙中学七年级部和生物教研组布置了一道双减新作业创意果壳画,鼓励孩子们利用身边的各色各样的果壳,来创造生动有趣的作品。一颗颗
大尺度恐怖片被删减3次才成功上映,18惊悚电影无边泳池最近在网上疯传的大尺度恐怖片无边泳池(InfinityPool),引起了网友们的热烈讨论。据说电影融入了血腥暴力色情的元素,让观众很是期待!根据网上给出的消息,无边泳池18的剧情包
126到53!离开湖人和詹姆斯,这次打错了算盘,成交易最大输家对于NBA角色球员和边缘球员而言,他们的生存空间本来就很狭小。或许是大家看惯了那些超级巨星的光鲜靓丽,其实角色球员要付出更多的努力,他们才能留在这个联盟。角色拼图式的球员,就应该专
年轻人爱上解压玩具!情绪消费催热解压经济三湘都市报新湖南客户端全媒体记者卜岚实习生龙思言躺不平也卷不赢,敲敲木鱼宽宽心。2月23日,95后长沙女孩小黄闭着眼睛,在平板电脑上敲着电子木鱼,都说这是款解压神器,敲敲木鱼好像真
反转?陈妍希疑似婚内出轨,与彭冠英举止亲密,被扒细节真假难辨娱乐圈真是乱啊,之前传言陈晓陈妍希疑似婚变,理由是陈晓出轨,不过最终随着时间推移,谣言不攻自破。可谁曾想,没过多久,有网友爆料称陈妍希疑似婚内出轨彭冠英,消息一出,瞬间引起无数网友
请停止吃这4种鱼,或含有甲醛和重金属,不妨转给家人看看你喜欢吃鱼吗?鱼肉算是厨房当中的常客,也是常见的,肉食家家户户餐桌必不可少,相对比其他的肉类营养价值高,脂肪含量低,老少皆宜。虽然鱼肉的营养物质多,可并不代表着所有的鱼肉都能吃,有
老百姓的钱也不是大风刮来的,老百姓的钱是用来过日子的2022年中国老百姓存款增加了15万亿,如果拿出三分之一的存款,恢复对房子的购买,装修和其他购买,中国经济就能恢复!知名砖家孟晓苏乍一看孟砖家在第三届南方财富峰会上接受采访时说的这
智能家居加速落地居家办公场景大有可为当前,物联网处于发展初期向爆发期的过渡阶段。手机企业互联网企业与电信运营商传统家电厂商正在不断进行生态打通,拓宽智能设备的使用场景。未来,居家办公场景将迎来新的发展机会,传统家电也
阴阳两虚,肾精不足,四味药阴阳双补,益精髓,补精血,防衰老冬日生活打卡季人有三宝精气神,精足才可以气盛,气盛才可以神旺,随着年龄的增长,生活的劳累,酒色的浸染,身体中的精都在不断消耗。人的生长壮老已其实就是肾精由盛到衰的过程。黄帝内经记载
宝娟嗓吃不下饭怎么办?喝奶茶也行最近朋友圈里突然开始流传这样一幅图有些人表示全身症状明显,浑身酸疼,喉咙疼得犹如吞刀片,除了勉强吃药,什么都吃不下。在这里整理了几条实用的合理膳食小tips,帮助你增强抵抗力,战胜
八组对穴调病疗效好来源生命时报中国中医科学院西苑医院针灸科夏万颖主任医师张路对穴是指2个穴位的配伍使用,其性能上具有相辅相成相反相成的有机联系,能够调节气血提高临床疗效。中医有八组天生对穴,搭配运用
旅途物语新疆1一城一物语新疆,一听这个名字就觉得这是个很遥远的地方,它远在边疆,远在祖国的西北角,它深居亚洲大陆腹地中心,远离海洋,高山阻挡,气候干燥记得地理书上用一句话很好地形容了新疆的气候早
新机要来了?华为MATE60申请RS版本商标中国经济周刊经济网讯天眼查App显示,近日,华为技术有限公司申请注册MATE60RSHUAWEIMATE60GTSHUAWEIMATE70GTSHUAWEIMATE80GTSHUA
网红专家张文宏也开始干正事了,也学陈薇院士埋头研发新药了网红专家张文宏最近没有发声,那他到底在搞什么呢?据报道一款新冠口服新药(索乐匹尼布)已于1月4日在上海复旦大学附属华山医院实现首例感染者服药,该药就是张文宏教授牵头研发的,目前处于
为什么说,从来就没有马云的时代?今天某知名媒体人写文章说,不止有时代的马云,同时马云的时代也是存在的,理由是,如果没有马云,我不相信中国会有阿里巴巴式的电商模式,同时,很可能不会有支付宝这样的产品。拿这个去问了一