![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端
文章平均质量分 82
shuaisunny
这个作者很懒,什么都没留下…
展开
-
聊聊系统架构之负载均衡优化实践
最近在进行线上监控检查时,我遇到了两个超出预期的案例。首先,网关层的监控数据与应用实际监控数据存在不一致性,尤其是max有较大的差异,详见如下图。其次在某个应用中,通过httpclient请求某域名时发现只有一台机器持续出现"Read timed out"的异常错误。鉴于这种情况,我分析了客户端请求到应用集群之间的完整链路。原创 2024-06-18 23:04:59 · 1592 阅读 · 3 评论 -
聊聊限流的一些事儿
最近几年,随着微服务的流行,服务与服务之间依赖越来越强,调用也越来越复杂,服务间的稳定性变突显出来。特别是在遇到突发请求时,常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其中限流是不可或缺的一环。一般每一个对外提供的接口都需要做流量控制,这与保险丝的原理一样。当接口的流量请求超过核定值时就得对请求进行引流或者直接拒绝等操作。特别是在系统应对大流量,高并发的访问时,限流算法可以很好地控制流量,从而避免系统负载过高而崩溃。原创 2024-06-03 20:59:35 · 662 阅读 · 1 评论 -
如何从消失的异常堆栈定位线上问题
然后搜索日志发现大量的Caused by: java.lang.NullPointerException,没有详细的异常堆栈,很显然是由于fast throw导致的,然后不断向前追溯相同的日志来定位问题如下图。可以看出,如果某个异常在同一位置被抛出多次,会被JIT C2优化成空异常,例如本文的NullPointerException,既没有message,也没有堆栈.但他的速度非常快,不用分配内存和获取堆栈.一般是由于链路的服务器或端口无法访问,对于虚拟机或者docker,还需要考虑宿主机的问题。原创 2023-06-05 09:43:48 · 597 阅读 · 0 评论 -
断网演练中遇到的问题及总结
对于核心接口,接口稳定性非常重要,涉及到系统的架构分布式设计、缓存体系、异步处理、数据库设计、降级限流策略等方方面面。我们聚集一下,对于本次遇到问题的跟源,在于断网演练开始阶段,由于jsf接口部署的数据中心网络不通,jsf接口不可用,引起jsf接口连接超时,然而jsf本身的worker心跳检测是通过worker实现的,需要一定的时间周期,最终直接影响jsf接口的性能。下面给一张jsf注册中心的基础架构图。那么,面对此类问题如何解决呢?原创 2023-03-27 14:51:52 · 556 阅读 · 0 评论 -
数据迁移——技术选型
数据库技术选型原创 2023-02-14 09:46:41 · 1406 阅读 · 0 评论 -
spring5支持velocity
spring5支持velocity原创 2022-08-25 14:19:49 · 745 阅读 · 0 评论 -
Clickhouse分布式表式对本地表的对比
clickhouse本地表与分布式表的数据写入原创 2022-08-05 10:29:27 · 2723 阅读 · 0 评论 -
聊聊军演压测中热key导致Redis实例CPU100%的问题
在Redis集群中,热key指得是那些在某一段时间内访问特别高的键值。热key的问题在于,大量访问流量集中到某一个Redis实例中,达到单个实例处理上限,可能会导致该实例CPU使用率100%,或者网卡流量达到上限等,对集群以及应用系统的稳定性和可用性造成影响,更为严重出现服务器宕机。可造成的影响1、热key会导致流量集中,redis缓存与数据库被击穿,从而引发系统雪崩(大量请求失败,直接访问数据库等)。2、请求分配不均,存在热key的节点面临较大的访问压力,可能导致该数据分片的...原创 2022-05-18 16:20:19 · 866 阅读 · 0 评论 -
一个默认cookie处理器引发的问题
最近对系统进行jdk升级的过程中,其中一个预发环境在设置顶层域名cookie时出现了如下的错误,这里tomcat版本为:8.5.42, jdk版本为1.8.0u192。java.lang.IllegalArgumentException: An invalid domain [.XXXX] was specified for this cookieat org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateDomain(...原创 2022-04-20 18:35:00 · 896 阅读 · 0 评论 -
ETCD Client 的endPoint生命周期管理
最近,我司在进行某机房的断网演练,我在使用etcd中间件时,发现了一个平时不太关注的问题——ETCD client的生命周期。即ETCD集群中涉及到节点切换,或者机器宕机或者断网的情况下,ETCD Client无法快速重连到可用的ETCD节点,导致client端不可用。当然,上面的问题可以通过临时创建一个新的ETCD clinet或重启操作,但每次遇到断网错误或者断网时间较长,那么这段时间内所有的请求都要重新创建一个新的ETCD client来重启吗?频繁创建甚至重启ET...原创 2022-03-28 12:44:31 · 2639 阅读 · 0 评论 -
表象:zookeeper因内存使用率导致的集群不可用
线上突然告警,zk集群不可用。随机看了zk节点挂了前的的机器的CPU与内存,内存100%,如下图所示。 首先我看了日志,由于线上配置的问题,所有的日志全部扔掉了。基于日志没有发现有价值的内容,接着又看了节点的网络,TCP连接数,磁盘IO,线程数,这些都是在正常范围内。 接着想着尝试启动一个节点,启动成功。但是通过top命令查看zk线程CPU利用率在30%左右,在正常情况下zk一般不耗内存(除非异常了)。下面是最耗CPU的堆栈信...原创 2021-08-11 18:01:32 · 1400 阅读 · 0 评论 -
MySQL中的Buffer Pool-支撑高并发的一些设计
1、Buffer Pool 概述Buffer Pool 是什么?从字面上看是缓存池的意思,没错,它其实也就是缓存池的意思。它是 MySQL 当中至关重要的一个组件,可以这么说,MySQL的所有的增删改的操作都是在 Buffer Pool 中执行的。但是数据不是在磁盘中的吗?怎么会和缓存池又有什么关系呢?那是因为如果 MySQL的操作都在磁盘中进行,那很显然效率是很低的,效率为什么低?因为数据库要从磁盘中拿数据啊,那肯定就需要IO啊,并且数据库并不知道它将要查找的数据是磁盘的哪个位置,所以这就需...转载 2021-07-27 15:17:39 · 410 阅读 · 0 评论 -
C2 CompilerThread11引起的CPU较高分析
目录1、问题描述2、问题解决过程1、问题描述 在日常巡检时发现,线上部分服务器的性能会出现波动,tp等指标出现飙升。经过一系列的排查,最终发现是由于C2编译线程长时间运间消耗了CPU. 异常的堆栈信息如下:"C2 CompilerThread11" #17 daemon prio=9 os_prio=0 tid=0x00007fdd8c6fc800 nid=0x133 waiting on condition [0x0000000000000000] ...原创 2021-03-09 21:23:41 · 4330 阅读 · 1 评论 -
一种简单通用的重复提交解决方案
对于重复提交,想到的最简单的方案就是该方法保证幂等性,所谓幂等性就是F(F(x))=F(x)多次运算结果都是一致的。比如对于innodb存储引擎,RR级别以上的select查询就天然具有幂等性。 首先重复提交的原因有许多,比如恶意的重复提交,网络重发,,分布式RPC的try重发,nginx重发等情况等等。 下面给一个网络重发的案例。10.175.55.64118.178.88.205 - - [24/Feb/2021:18:12:37 +0800] "118.17...原创 2021-03-01 17:53:31 · 507 阅读 · 0 评论 -
Docker——JVM感知容器的CPU和Memory 资源限制
最近在性能优化中,发现Parallel GC Threads的数量为43,Parallel CMS Threads的数量为11。 应用部署在docker上,配置如下: docker容器为4c8g, gc为CMS。 默认情况下ParallelGCThreads = (ncpus <= 8) ? ncpus : 3 + ((ncpus * 5) / 8),其中ncpus是机器的核数,ParallelCMSThreads=(Parallel...转载 2021-02-24 09:54:16 · 2412 阅读 · 0 评论 -
分布式事务框架Seata
Seata(Simple Extensible Autonomous Transaction Architecture):集高性级与易用性的一种分布式事务微服务架构,其前身是 fescar,github地址:https://github.com/seata/seata。Seata有3个基本组件:事务协调器(TC):维护全局事务和分支事务的状态,驱动全局提交或回滚。 事务管理器TM:定义全局事务的范围:开始全局事务,提交或回滚全局事务。 资源管理器(RM):管理分支事务正在处理的资源,与TC进行对原创 2021-01-26 20:47:21 · 971 阅读 · 1 评论 -
一个普通的死锁案例
目录1、死锁日志2、重现与分析1、死锁日志------------------------LATEST DETECTED DEADLOCK------------------------200526 17:49:17*** (1) TRANSACTION:TRANSACTION 7892ECEC4, ACTIVE 50 sec inserting ## 事务ID=7892ECEC4,活跃了50s mysql t原创 2021-01-09 17:27:35 · 452 阅读 · 1 评论 -
数据库读写分离下的数据同步解决方案
目录1、读写分离解决了什么问题2、读写分离与业务的架构3、实际案例4、解决方案1、读写分离解决了什么问题 读写分离其实将数据库分离一个主库,多个从库,主从库之前通过某种机制(如binlog)进行数据同步,这是一种常见的数据库架构。在大多数互联网业种中,都是读多写少的业务,为了能够线性提升数据库的读性能,消除读写冲突并提升写的性能,一般可以采用读写分离的思想(当然还有其他解决方案:如复本集,缓存策略等等)。其实,用一句话来概括,读写分离基本原理就是将数据库的读写操作路由到不...原创 2021-01-09 14:26:26 · 3326 阅读 · 0 评论 -
分布式一致性算法介绍
分布式数据一致性简单点理解就是在多个节点中同一时间视图时数据值是一致的。大体上可以将这些算法分为强一致性与弱一致性。强一致性 raft(该协议是实现etcd高可靠的基础,大名鼎鼎的k8s就使用了etcd保存集群中所有的网络配制和对象的状态信息) zab协议(zk基于该协议实现了主备模式的系统架构) paxos 弱一致性 gossip协议(这个应用在redis集群中) 下面对上述算法进行简要的...原创 2021-01-07 21:29:27 · 2183 阅读 · 0 评论 -
Jeremy Cole大神关于Innodb的文章分享
这是关于Innodb的经典博客,特友情分享,原博客地址:https://blog.jcole.us/innodb/原创 2021-01-06 10:08:09 · 559 阅读 · 0 评论