无意间发现我们Kafka管理平台的服务的openfiles和CPU监控异常,如下图,有一台机器CPU和opfenfiles指标持续在高位,尤其是openfiles达到了4w+。原因分析第一反应是这个服务请求很高?但是这个服务是一个管理服务不应该有很高的请求量才对,打开监控一看,QPS少的可怜。既然机器还在就找devops同学帮忙使用Arthas简单看下是什么线程导致的,竟然是GC线程,瞬时CPU几乎打满了。查看了GC监控,每分钟56次相比其他的正常节点要多很...
之前线上发生了一个很诡异的异常,网上各种搜索、排查,都没有找到问题,给大家分享一下。大概在2月份的时候,我们的某个应用整合了中间件的kafka客户端,发布到灰度和蓝节点进行观察,然后就发现线上某个Topic发生了大量的RetriableCommitException,并且集中在灰度机器上。E20:21:59.770RuntimeExceptionorg.apache.kafka.clients.consumer.RetriableCommitFailedExceptionERROR[ConsumerclientIdxxxx.40,groupIdxxx...
现象线上某个服务有接口非常慢,通过监控链路查看发现,中间的GAP时间非常大,实际接口并没有消耗很多时间,并且在那段时间里有很多这样的请求。原因分析先从监控链路分析了一波,发现请求是已经打到服务上了,处理之前不知道为什么等了3s,猜测是不是机器当时负载太大了,通过QPS监控查看发现,在接口慢的时候CPU突然增高,同时也频繁的GC,并且时间很长,但是请求量并不大,并且这台机器很快就因为Heap满了而被下掉了。去看了...
历史原因,公司存在多个MQ同时使用的问题,我们中间件团队在去年下半年开始支持对Kafka和Rabbit能力的进行封装,初步能够完全支撑业务团队使用。鉴于在之前已经基本完全实施Kafka管控平台、以及Kafka集群迁移管控,我们基本可以认为团队对于Kafka的把控能力初具规模。因此,考虑到以下几点原因,我们决定对RabbitMQ不再做维护和支持。原因使用混乱和维护困难基于我们的数据统计和分析发现,基本上没有服务使用我们自己封装的Rab...
前段时间把ShardingSphere升级到了5.1.1版本,奈何官方版本升级太快跟不上速度,这不最近又发现了一个BUG。问题现象数据库做了分库分表,在需要查询多表数据进行merge的时候发生了一个NPE的异常。Causedby:java.lang.NullPointerExceptionatorg.apache.shardingsphere.sharding.merge.dql.orderby.OrderByValue.getOrderValuesCaseSensitiveFromTables(OrderByValue.java:73)[shardingsphereshardingcore5.1.1.jar:5.1.1]atorg....
上个周日12月18号,阿里云香港服务器发生了都不知道算P几事故的史诗级宕机事件,整个事件导致香港地区C区ECS、OSS、EBS、RDS等云服务大范围不可用,故障时间从早上8点多一直持续到晚上10点多才最终恢复,整个故障时间长达14个小时。比较有名的交易所平台如Gate.io和OKEX都受到大面积故障影响,我都还以为他们跑路了。而按照本次事故的时间来计算,可用性大概是98%左右了,也就是说基本可以获得的赔偿是月度服务费的25%。昨天,...
延迟队列在实际项目中有非常多的应用场景,最常见的比如订单未支付,超时取消订单,在创建订单的时候发送一条延迟消息,达到延迟时间之后消费者收到消息,如果订单没有支付的话,那么就取消订单。那么,今天我们需要来谈的问题就是RabbitMQ、RocketMQ、Kafka中分别是怎么实现延时队列的,以及他们对应的实现原理是什么?RabbitMQRabbitMQ本身并不存在延迟队列的概念,在RabbitMQ中是通过DLX死信交换机和TTL消息过期来实现延迟队...
最近看到不少好玩的、实用的Github项目,就来给大家推荐一把。1.跨平台终端Tabby(前身是Terminus)是一个可高度配置的终端模拟器和SSH或串口客户端,支持Windows,macOS和Linux。还有一些功能比较常见和易于使用的:1.集成了SSH,Telnet客户端和连接管理器,可以在SSH会话中通过Zmodem进行直接文件传输2.可以定制主题和配色方案3.完全可配置的快捷键和多键快捷键4.支持分体式窗格、自动保存标签页5.支持PowerShell(和PSCore)、...
11月24号,SpringBoot3.0发布了第一个正式的GA版本,一起看看新版本到底有哪些变化。2.7版本升级指南官方提供了一个从2.7版本升级到3.0的指南:https:github.comspringprojectsspringbootwikiSpringBoot3.0MigrationGuide,官方建议在升级到SpringBoot3.0之前先升级到SpringBoot2.7。新的变化基于Java17和支持Java19SpringBoot3.0使用Java17作为最低版本,如果你目前使用的是Java8或Java11,那么需要升级先升级JDK,并且新版本...
上一次的升级过程中差不多已经跑起来90%了,这周一上班解决完一点小问题,服务已经正常跑起来了,于是再拿着一些其他的服务测试了一下,又发现了一些其他的报错,所以继续。14.DiscoveryEnabledServerNotFound主要问题还是eureka中没有了ribbon相关的依赖。Causedby:java.lang.NoClassDefFoundError:comnetflixniwsloadbalancerDiscoveryEnabledServeratjava.lang.Class.getDeclaredMethods0(NativeMethod)[:]atjava.lang.Class...
前段时间写了一篇文章,给ShardingSphere提了个PR,不知道是不是嫌弃我?,之后发生了一些挺好玩的事儿。本来在解决问题的时候文章其实就已经写好了,只是习惯设置定时过两天再发,发完顺手发了一个朋友圈(这时候PR还没有合并,离我提PR已经过去了好像有几天时间了),然后就有一个好友回复我了,当时第一感觉是这标题起的是不是让人误会了啊。然后我就跟这个加了很久但是一直没有聊过天的兄弟聊起来了,聊了几句发现这位大佬...
从2018年2月28号发布SpringBoot2.0版本开始,整个2.X版本已经经过了4年多的时间,累计发布了95个不同的版本,而就在前不久,2.X系列的也已经迎来了他的最终版本:2.7。前几天我还写了一篇关于SpringBoot从2.1版本升级到2.7的文章,而现在,SpringBoot3.0也要来了!时间就定在本月的24号,SpringBoot将要发布3.0的最终RELEASE版本。截止到现在为止,SpringBoot3已经发布了6个版本,累计5个里程碑版本,2个RC候选版,现在就跟着我...
最近由于各方面的原因在准备升级SpringCloud和SpringBoot,经过一系列前置的调研和分析,决定把SpringBoot相关版本从2.1.6升级到2.7.5,SpringCloud相关版本从Greenwich.SR1升级为2021.0.4。升级包含基础的业务服务代码的升级改造适配,还有就是中间件一堆代码的改造,上周经历了一周的修改,用来测试的服务仍然还没有跑起来,所以这篇文章我会记录下来这升级过程中的一些问题,由于革命仍未成功,所以这是上篇。1.hibernateval...
背景目前,公司方面RPC调用如Dubbo、Feign已经能支持基于灰度的调用,但是MQ还没有支持灰度的能力,因此导致在测试和生产环境业务验证、消息隔离方面体验比较差,因此我们基于RabbitMQ和Kafka实现了消息灰度的能力。灰度场景大部分场景下MQ的灰度并不会像RPC那样那么严格,但是我们需要确认消费场景,即当灰度消费者不存在的情况下,消息是否应该由正常消费者去消费。1.灰度消息只由灰度节点消费事实的情况是可能大家都想要这种...
今天教大家借助一款框架快速实现一个数据库,这个框架就是Calcite,下面会带大家通过两个例子快速教会大家怎么实现,一个是可以通过SQL语句的方式可以直接查询文件内容,第二个是模拟Mysql查询功能,以及最后告诉大家怎么实现SQL查询Kafka数据。CalciteCalcite是一个用于优化异构数据源的查询处理的可插拔基础框架(他是一个框架),可以将任意数据(Anydata,Anywhere)DML转换成基于SQL的DML引擎,并且我们可...
这几天,在搞ShardingSphere,这不又来了一个问题嘛,启动的时候报了一个NPE出来。好在,这个问题不影响使用,只是启动会报点错,接下来,又是辛苦的排查过程。直接定位到报错的地方,发现是ShardingSphere在启动时候去加载表一些元数据信息报错,看到这个地方就很明显的猜测是map去get的时候报错了。一通往上翻源码,发现这里定义的是TreeMap,那应该没毛病了,就是上面dataType是个null,所以报错了,可是我还是年轻了。问题...
在之前的文章提到过一个问题,而且网上很多文章也是这么说的,前几天有人对这个问题提出了一点不同的意见,抱着谨慎的态度做了一个测试。问题是这样的:COMPACT格式下,NULL值列表是否一定会占用一个字节的空间?对于这个问题,我的回答和网上很多回答是一样的,如果都是NOTNULL就不会有NULL值列表,所以不会占用,反之则会占用。今天,就对这个问题做一个验证。存储空间先回顾一下之前的知识。数据库中的一行记录在最终磁盘文...
说来惭愧,干了10来年程序员,还没有给开源做过任何贡献,以前只知道嘎嘎写,出了问题嘎嘎改,从来没想过提个PR去修复他,最近碰到个问题,发现挺简单的,就随手提了个PR过去。问题问题挺简单的,就是在使用mybatis和ShardingSphere的时候,有人在model类使用了OffsetDateTime这个时间类型,发现会报错。Causedby:java.lang.ClassCastException:classjava.sql.Timestampcannotbecasttoclassjava.time.OffsetDateTime(ja...
昨天线上又出了个问题,花了一天的时间才找到原因,说起来原因其实特别的坑爹啊。事情是这样的,最近我们上线了一个刷新用户token的功能,也就是APP里经常有的,只要你经常操作,就能让你一直保持在线状态,不用一直重新登录,需求就是这么一个并不复杂的需求,也很快的上线了。但是上线之后发现了一个用户在某段时间持续长达15天没有调用过刷新token的接口,还一直保持在登录状态(默认token失效是7天),这个就很奇怪了。由于...
最近在跟同事讨论问题的时候,他突然对我说。。。这个死太丢死不太对,需要改一下。。。我当时应该是愣住了,然后想了一下,你说的是status吗???看着他疑惑不解的眼神,我当时的表情。。。好吧,好吧,我承认我低估了我们理科同志们的文科英语水平,以至于我发现,我这些年不也是这样水深火热的过来的嘛。于是,带着好奇、疑惑和忐忑的心情,我重新Google、百度了一遍那些我觉得不太确认的单词到底怎么读,结果简直颠覆了我...