本地启动在第三篇自定义中间件的前提下,已经说了很多关于本地通过CRD或者File作为provider的启动方式,这里想要补充一下关于本地DEBUG3.0.0版本代码的问题,后续的源码分析也都会基于目前最新的3.0版本。在写文章的时候,目前3.0版本还是beta版本。按照上述文章的方式安装之后其实会发现本地启动会报一个关于v1alpha1.ServersTransportTCP相关的错误,这是因为之前我们安装的CRD资源定义和RBAC都是2.10版本的,需要重...
2023-10-07 11:08:15 1964浏览 0点赞 0回复 0收藏
Aurora简述AmazonAurora是亚马逊自研的云原生数据库,除兼容性、性能、扩展性外,它在设计之初,就以极致的可用性作为目标,尽可能减少故障对应用程序的影响。AmazonAurora在故障恢复方面的设计理念主要包括:1.能在较大范围故障时仍然提供服务:跨3个可用区的6备份存储使它在一个可用区和另一个额外备份发生故障时仍能提供服务;跨区域的全球数据库能在主区域发生故障时快速切换到从区域;2.加快故障恢复的速度:将数据拆分成1...
2023-10-07 11:07:40 1963浏览 0点赞 0回复 0收藏
Traefik是一款开源的反向代理和负载均衡软件,可以自动地为多个微服务实例进行负载均衡,并提供HTTPHTTPSTCPUDP等协议支持。Traefik具有简单易用、自动发现服务、动态配置、可插拔的中间件等特点,被广泛应用于云原生和容器化场景中,介绍中也是表明自己是一个云原生网关。Traefik支持多种后端服务,包括Kubernetes、DockerSwarm、Mesos、Consul、Etcd、Zookeeper、Redis等,同时也提供了丰富的API和Dashboard等管理工具,使得...
2023-10-07 11:07:09 2888浏览 0点赞 0回复 0收藏
有同学在星球问了这样一个问题。代码是这样的:publicclassMain{privatestaticfinalMaininstancenewMain();privatebooleanba;privatestaticbooleanainitA();privatestaticbooleanca;privatestaticbooleaninitA(){returntrue;}privatestaticbooleangetC(){returnc;}publicstaticvoidmain(String[]args){System.out.println(instance.b+""+getC());}}最后的输出结果你以为是truetrue,其实是falsetrue。GPT表示对于这个问题,他确...
2023-10-07 11:06:45 1249浏览 0点赞 0回复 0收藏
无意间发现我们Kafka管理平台的服务的openfiles和CPU监控异常,如下图,有一台机器CPU和opfenfiles指标持续在高位,尤其是openfiles达到了4w+。原因分析第一反应是这个服务请求很高?但是这个服务是一个管理服务不应该有很高的请求量才对,打开监控一看,QPS少的可怜。既然机器还在就找devops同学帮忙使用Arthas简单看下是什么线程导致的,竟然是GC线程,瞬时CPU几乎打满了。查看了GC监控,每分钟56次相比其他的正常节点要多很...
2023-09-27 11:20:31 1728浏览 0点赞 0回复 0收藏
之前线上发生了一个很诡异的异常,网上各种搜索、排查,都没有找到问题,给大家分享一下。大概在2月份的时候,我们的某个应用整合了中间件的kafka客户端,发布到灰度和蓝节点进行观察,然后就发现线上某个Topic发生了大量的RetriableCommitException,并且集中在灰度机器上。E20:21:59.770RuntimeExceptionorg.apache.kafka.clients.consumer.RetriableCommitFailedExceptionERROR[ConsumerclientIdxxxx.40,groupIdxxx...
2023-09-27 11:19:29 2742浏览 0点赞 0回复 0收藏
现象线上某个服务有接口非常慢,通过监控链路查看发现,中间的GAP时间非常大,实际接口并没有消耗很多时间,并且在那段时间里有很多这样的请求。原因分析先从监控链路分析了一波,发现请求是已经打到服务上了,处理之前不知道为什么等了3s,猜测是不是机器当时负载太大了,通过QPS监控查看发现,在接口慢的时候CPU突然增高,同时也频繁的GC,并且时间很长,但是请求量并不大,并且这台机器很快就因为Heap满了而被下掉了。去看了...
2023-09-27 11:16:04 2123浏览 0点赞 0回复 0收藏
历史原因,公司存在多个MQ同时使用的问题,我们中间件团队在去年下半年开始支持对Kafka和Rabbit能力的进行封装,初步能够完全支撑业务团队使用。鉴于在之前已经基本完全实施Kafka管控平台、以及Kafka集群迁移管控,我们基本可以认为团队对于Kafka的把控能力初具规模。因此,考虑到以下几点原因,我们决定对RabbitMQ不再做维护和支持。原因使用混乱和维护困难基于我们的数据统计和分析发现,基本上没有服务使用我们自己封装的Rab...
2023-09-27 11:14:35 2688浏览 0点赞 0回复 0收藏
前段时间把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....
2023-09-27 11:13:26 2526浏览 0点赞 0回复 0收藏
上个周日12月18号,阿里云香港服务器发生了都不知道算P几事故的史诗级宕机事件,整个事件导致香港地区C区ECS、OSS、EBS、RDS等云服务大范围不可用,故障时间从早上8点多一直持续到晚上10点多才最终恢复,整个故障时间长达14个小时。比较有名的交易所平台如Gate.io和OKEX都受到大面积故障影响,我都还以为他们跑路了。而按照本次事故的时间来计算,可用性大概是98%左右了,也就是说基本可以获得的赔偿是月度服务费的25%。昨天,...
2023-09-27 11:11:37 2220浏览 0点赞 0回复 0收藏
延迟队列在实际项目中有非常多的应用场景,最常见的比如订单未支付,超时取消订单,在创建订单的时候发送一条延迟消息,达到延迟时间之后消费者收到消息,如果订单没有支付的话,那么就取消订单。那么,今天我们需要来谈的问题就是RabbitMQ、RocketMQ、Kafka中分别是怎么实现延时队列的,以及他们对应的实现原理是什么?RabbitMQRabbitMQ本身并不存在延迟队列的概念,在RabbitMQ中是通过DLX死信交换机和TTL消息过期来实现延迟队...
2023-09-27 11:10:49 2002浏览 0点赞 0回复 0收藏
最近看到不少好玩的、实用的Github项目,就来给大家推荐一把。1.跨平台终端Tabby(前身是Terminus)是一个可高度配置的终端模拟器和SSH或串口客户端,支持Windows,macOS和Linux。还有一些功能比较常见和易于使用的:1.集成了SSH,Telnet客户端和连接管理器,可以在SSH会话中通过Zmodem进行直接文件传输2.可以定制主题和配色方案3.完全可配置的快捷键和多键快捷键4.支持分体式窗格、自动保存标签页5.支持PowerShell(和PSCore)、...
2023-09-27 11:00:52 2121浏览 0点赞 0回复 0收藏
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,并且新版本...
2023-09-27 10:44:46 3288浏览 0点赞 0回复 0收藏
上一次的升级过程中差不多已经跑起来90%了,这周一上班解决完一点小问题,服务已经正常跑起来了,于是再拿着一些其他的服务测试了一下,又发现了一些其他的报错,所以继续。14.DiscoveryEnabledServerNotFound主要问题还是eureka中没有了ribbon相关的依赖。Causedby:java.lang.NoClassDefFoundError:comnetflixniwsloadbalancerDiscoveryEnabledServeratjava.lang.Class.getDeclaredMethods0(NativeMethod)[:]atjava.lang.Class...
2023-09-27 10:43:48 2732浏览 0点赞 0回复 0收藏
前段时间写了一篇文章,给ShardingSphere提了个PR,不知道是不是嫌弃我?,之后发生了一些挺好玩的事儿。本来在解决问题的时候文章其实就已经写好了,只是习惯设置定时过两天再发,发完顺手发了一个朋友圈(这时候PR还没有合并,离我提PR已经过去了好像有几天时间了),然后就有一个好友回复我了,当时第一感觉是这标题起的是不是让人误会了啊。然后我就跟这个加了很久但是一直没有聊过天的兄弟聊起来了,聊了几句发现这位大佬...
2023-09-25 14:43:33 2132浏览 0点赞 0回复 0收藏
从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候选版,现在就跟着我...
2023-09-25 14:42:04 1944浏览 0点赞 0回复 0收藏
最近由于各方面的原因在准备升级SpringCloud和SpringBoot,经过一系列前置的调研和分析,决定把SpringBoot相关版本从2.1.6升级到2.7.5,SpringCloud相关版本从Greenwich.SR1升级为2021.0.4。升级包含基础的业务服务代码的升级改造适配,还有就是中间件一堆代码的改造,上周经历了一周的修改,用来测试的服务仍然还没有跑起来,所以这篇文章我会记录下来这升级过程中的一些问题,由于革命仍未成功,所以这是上篇。1.hibernateval...
2023-09-25 14:41:23 1990浏览 0点赞 0回复 0收藏
背景目前,公司方面RPC调用如Dubbo、Feign已经能支持基于灰度的调用,但是MQ还没有支持灰度的能力,因此导致在测试和生产环境业务验证、消息隔离方面体验比较差,因此我们基于RabbitMQ和Kafka实现了消息灰度的能力。灰度场景大部分场景下MQ的灰度并不会像RPC那样那么严格,但是我们需要确认消费场景,即当灰度消费者不存在的情况下,消息是否应该由正常消费者去消费。1.灰度消息只由灰度节点消费事实的情况是可能大家都想要这种...
2023-09-25 14:40:52 1695浏览 0点赞 0回复 0收藏
今天教大家借助一款框架快速实现一个数据库,这个框架就是Calcite,下面会带大家通过两个例子快速教会大家怎么实现,一个是可以通过SQL语句的方式可以直接查询文件内容,第二个是模拟Mysql查询功能,以及最后告诉大家怎么实现SQL查询Kafka数据。CalciteCalcite是一个用于优化异构数据源的查询处理的可插拔基础框架(他是一个框架),可以将任意数据(Anydata,Anywhere)DML转换成基于SQL的DML引擎,并且我们可...
2023-09-25 14:40:05 2170浏览 0点赞 0回复 0收藏
这几天,在搞ShardingSphere,这不又来了一个问题嘛,启动的时候报了一个NPE出来。好在,这个问题不影响使用,只是启动会报点错,接下来,又是辛苦的排查过程。直接定位到报错的地方,发现是ShardingSphere在启动时候去加载表一些元数据信息报错,看到这个地方就很明显的猜测是map去get的时候报错了。一通往上翻源码,发现这里定义的是TreeMap,那应该没毛病了,就是上面dataType是个null,所以报错了,可是我还是年轻了。问题...
2023-09-25 14:39:25 2857浏览 0点赞 0回复 0收藏