sentinel流量统计核心代码-滑动窗口 /** * Get the window at current timestamp. * * @return the window at current timestamp */ public WindowWrap<T> currentWindow() { return currentWindow(TimeUtil.currentTimeMillis()); } /** * Get win...
redisson链接数被打满 1.背景:redis集群: 腾讯云redis单节点云缓存服务-32G:8 分片/4GB/1 副本客户端: redisson-3.15.0 集群模式现象: redis服务端8万连接数打满,重启服务后连接数依然逐渐被打满, 打满后后续请求全部连接失败业务监控抛出大量异常2.问题解决 2.1 怀疑是网络问题:联系运维查询反馈网络没问题, 2.2 怀疑是代码问题:系统运行一段时间,最近没有相关发布代码,重启服务,过了一段时间依旧打满 2.3 从日志中看...
业务服务建模经验 概述此处的“服务”主要指业务服务,中间件服务的设计大体一致,但是侧重点会稍有不同。我们将从以下几点描述一个规范的业务服务设计需要包含的内容: 业务场景分析; 业务领域分析; 业务领域建模; 系统间交互链路设计; 系统内处理流程设计; 系统内关键算法设计; 系统接口设计; 系统数据表设计; 系统非功能设计:高可用性、高性能、安全性、伸缩性、弹性、可扩展性、可测试性、可观测性等; 服务设计原则原则一:端到端业务
全链路压测的大概思路 1.梳理核心接口2.梳理接口哪些不能压测:比如短信,可以降级3.最好梳理下业务用到的中间件:mysql,redis,mq降级过程需要观察相关中间件指标4.数据的mock,尽量真实5.一定要确认好,第三方依赖能不能接收压测流量6.测试环境要和线上环境一致,包括依赖的相关服务7逐步平滑加压8.jemter写压测脚本时机首先要清楚的一点就是,什么时候开始做全链路压测?我们有另外一个业务线,现在就没有打算做,那个业务线的日均单不到十万,而要压测的业务线的日均单到了200万..
TIDB问题记录 ①不支持分区,删除数据是个大坑。 解决方案:set @@session.tidb_batch_delete=1;②插入数据太大也会报错 解决方案:set @@session.tidb_batch_insert=1;但是需要注意的是set @@session.tidb_batch_insert=1;set @@session.tidb_batch_delete=1; 虽然一次插入、删除的记录变多了,但是它会破坏事务。底层的原理是将这批大数据切分成一小段一小段,每一...
低代码平台建设经验总结 文章目录前言 一、低代码平台简介 二、架构设计 1.架构图 2.内容详解 3.有趣的问题 总结前言在某卖菜公司做低代码平台开发接近2年,收获了很多,踩了很多坑,现在做个年终总结和经验设计分享。欢迎指正一、低代码平台简介网上开源的低代码平台大家自行搜索,我们服务和其他公司的不一样,我们主要是服务于公司内部要求,其核心功能主要包括1.快速创建微型项目,降本增效2.构建业务模型为上游提供服务3.接入业务系统需求4.提供统一的数据管控...
消息消费者降级告警应用 背景:因为项目需要异步接受各方的mq消息进行发起流程/完成任务等操作。但是发起流程因为业务逻辑较重,在并发tps很高的时候容易导致mysql竞争激烈(分库分表逻辑需要优化),进而导致消费速率跟不上生产速率,导致mq消息积压。所以要针对这种情况进行监控-告警-降级方案:详细介绍1.消费速率怎么统计2.获取rabbitmq队列积压数量3.是否进入同步队列算法4.定时任务轮询存在的问题,以及如何优化5.数据库的数据消费速率设置多少合适...
reactor初探 一。背景:因为要做一个内存的流程引擎,调研了下spring5 提供的reactor project,特整理下相关的知识点二。知识点:响应式包括:controller,service,dao,redis,webclient,db,mq各个层面的响应。有一方不是响应式则背压机制失效,就能称之为响应式开发一。响应式宣言所谓回弹性指的是系统在出现失败时,依然能够保持即时响应性;而弹性则是指的系统在各种请求压力之下,都能保持即时响应性。二。Spring WebFlux
流程业务监控设计一览 初衷:为了流程开放平台的高可用,可监控,快速报警,人员快速响应问题解决,更重要的就是用户体验,因为你app的响应时间很大程度影响用户喜好,所以我们项目对监控内容作了详细划分监控工具:cat打点,granafa监控配置,运维监控报警平台监控分类一.系统层监控这一块基本不用业务开发设计,目前的cat,zabbx等都提供基础监控:gc,redis,mysql,io,带宽等等二.业务监控1.接口响应时间监控,报警频率不需要每次超过阙值就报警,一般超过阙值的频率10/s就需要报警2....
activti实际使用 目录: activiti6内容解析 流程中心如何建设 一.内容解析 1.快速入门网址:https://blog.csdn.net/qq877507054/article/details/60143099 2.核心步骤: 画流程图->生成bpmn文件(ACT_GE_BYTEARRY) 部署流程图->生成流程定义(每次修改流程图部署都会产生新版本ACT_RE_PROCDEF)...
Activiti6.0节点驳回,自由跳转核心代码 //获取流程定义Process process = repositoryService.getBpmnModel(processDefinitionId).getMainProcess();//获取目标节点定义FlowNode targetNode = (FlowNode) process.getFlowElement(flowElementId);List<Execution> executionList = runtimeService.createExecutionQuery(..
activiti6节点跳转设计 简介:工作流开发过程中,因为国内的需求变态原因,会有流程图节点任意跳转的需求一.普通的流程跳转设计因为普通流程只需要根据连线进行节点跳转就行直接贴代码: //获取流程定义 Process process = repositoryService.getBpmnModel(processDefinitionId).getMainProcess(); //获取目标节点定义 FlowNode targetNode = (FlowNode)
netty内存知识整理 1.ByteBufapi: read ,write,set,mark,resetbyteBuf分类图:1.pooled和u'npooledpooled:从预先分配好的内存中分配,unpooled:每次申请新内存 就是池化和非池化的区别2.unsafe和非unsafeunsafe:可以直接拿到jvm的内存,依赖jdk的unsafe ( JDK的rt.jar包中的Unsafe类提供了硬件级别的原子性操作,Unsafe类中的方法都是native方法 )其实...
netty学习笔记整理一基础篇 一:.netty组件:服务端启动过程:通过jdk创建channel并包装为自己的channel -> init初始化channel->注册selector ->dobind()往jdk注册一个op-accept实现就可以开始接受消息了 1.NioEventLoopGroup 相当于serversocket接受连接bossgroup,传输消息的功能workgroup, 其实就是线程池管理NioEventLoop 2.NioEventLo...