- 博客(45)
- 收藏
- 关注
原创 XXL-JOB原理
(2)它内部维护了一个调度线程池,用Quartz实现了任务的定时触发。(1)负责任务的统一管理、触发、监控。(1)XXL-JOB Admin注册到Nacos。(3)内置Netty服务接收调度中心的执行指令。(3)通过数据库存储任务信息、执行记录等数据。(1)执行器(你的Java服务)收到调度命令。- 通过Netty发送调度命令到目标执行器。(2)通过注解@XxlJob标记执行方法。- 启动内置的Netty服务等待调度指令。- 通过反射调用@XxlJob注解的方法。(4)维护了一个本地线程池处理具体任务。
2025-02-06 11:40:47
310
原创 RocketMQ怎么保证消息不丢失
(2)Master-Slave架构:支持同步复制和异步复制。(3)文件持久化机制:使用CommitLog存储消息内容。(1)一般业务消息:使用同步发送即可。(2)分布式事务场景:使用事务消息。(3)非重要消息:可以使用异步发送。(1)刷盘机制:同步刷盘或异步刷盘。
2025-02-05 16:16:15
211
原创 rocketmq架构
(2) ConsumeQueue:消息消费队列,相当于CommitLog索引。(2)TransactionMQProducer:事务消息生产者。(1)DefaultMQPushConsumer:服务端推送模式。(3) IndexFile:消息索引文件,提供消息Key查询。(1)DefaultMQProducer:普通消息生产者。(1)Broker Master:提供读写服务。(2)Broker Slave:提供读服务。(1)CommitLog:消息存储文件。(3)支持集群消费和广播消费。
2025-02-05 15:46:45
575
原创 高可用架构设计
接入层防护:* 使用Sentinel实现接口级限流,支持QPS、并发线程数等多维度限流* 配置基于滑动时间窗口的热点参数限流策略* 实现自适应限流算法,根据系统负载动态调整阈值- 服务层防护:* 实现基于RateLimiter的方法级限流* 配置线程池隔离,避免服务间相互影响* 使用Hystrix实现服务熔断,配置错误率阈值自动降级- 数据层防护:* 实现数据库连接池管理,配置最大连接数限制* Redis集群访问限流,防止缓存雪崩。
2025-02-05 14:25:30
363
原创 cpu飙高问题排查
5. 查找对应的高 CPU 线程堆栈 grep -A 30 [16进制线程ID] stack.txt。4. 执行 jstack 并输出到文件 jstack 29851 > stack.txt #3. 将线程 ID 转换为 16 进制 printf "%x\n" [线程ID]2.先找出占用 CPU 最高的线程 ID。1.top命令查看cpu情况。
2025-01-09 13:40:09
185
原创 服务自动重启脚本
我的jar项目路径是/test,日志在/test/logs, 日志文件是全路径是/test/logs/test-error.log。项目的启动脚本是 app.sh, 停止方式sh app.sh stop , 开始:sh app.sh start。1.锁超时,导致服务不可用。重启服务,几个小时后又出现了。
2024-12-27 12:04:59
233
原创 程序员必备:通义灵码(太强大了)
1.1打开idea,File->Settings1.2.搜索通义灵码,点击install安装。1.3效果:在idea右侧就能看到“通义灵码”的图标了,登陆后使用。
2024-08-15 17:44:53
637
1
原创 skywalking架构
负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。数据是分布式追踪数据,它记录了一个请求在整个分布式系统中的完整路径和所有涉及的服务或组件。这种数据通常用来追踪请求的执行情况,包括每个服务或操作的耗时、调用顺序和状态。数据是指标数据,它定期收集系统的运行状态信息,比如CPU使用率、内存占用、请求数量、错误率等。: Metrics 数据主要用于性能监控和容量规划。
2024-08-10 15:19:02
710
原创 请求https接口时的:SSLHandshakeException: Received fatal alert: handshake_failure
调用3方接口一直异常,报错显示是SSL证书的问题。
2024-08-09 10:34:19
762
原创 prometheus+grafana搭建监控系统
GitHub上面很多人开发了dashboards模板,官方社区上也有很多开源的dashboards模板,我们只需要把模板的Copy ID 或者 Download JSON文件导入到grafana即可,参考官网免费的dashboards模板。也是可以启动的,但是不好的是,不能设置开机自启,如果想要开机自启,还需要手动写一个启动服务器去执行他的命令或者周期性计划任务,所以不推荐使用方法二;,然后搜索主机监控,或者自己定义,搜索,linux什么的都可以,根据自己的需求选择;进入官网,往下拉,可以看到选择这几个,
2024-06-21 20:16:26
1269
原创 Hutool-改变我们的coding方式的工具类
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅。它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。
2024-06-19 14:42:17
1036
原创 MySQL binlog三种模式
statement 记录的是sql语句。比如一条sql,update table_user set age =20 where id between 1 and 100。这条sql会更新100条数据,但是statement 模式下只会记录这条sql语句。不需要记录数据的变化,减少了bin log文件大小,减少IO负担。会导致主从不一致的情况。mysql主从基于binlog,如果master节点的sql包含now()、uuid()等动态函数,会导致主从不一致。
2024-06-05 17:12:11
312
原创 linux部署nacos
进入nacos/conf 文件夹,找到mysql-schema.sql ,在自己的mysql创建里面的表。进入/root/nacos/conf 文件夹,vi application.properties。上传到服务器,tar -zxvf nacos-server-2.2.3.tar.gz 解压。在自己的mysql数据库(要部署在linux),新建一个nacos_config数据库。如果您是从代码开始构建并运行Nacos,还需要为此配置。去掉相关注释,修改数据源为自己的mysql地址,保存退出。
2024-04-26 13:00:33
1346
2
原创 雪花算法原理和问题解决
1位标识:最高位是符号位,正数是0,负数是1。由于 id 一般是正数,所以第一位都是0。接下来41位存储毫秒级时间戳,41位可以表示 2^41-1 毫秒。转化成年则是:(2^41-1)/(1000*60*60*24*356)=69 年。这个时间戳大概可以使用 69年 不重复。10位的数据机器位,包括 5 位 datacenterId 和 5 位 workerId,最多可以部署 2^10=1024 台机器。
2024-04-19 16:57:28
898
原创 linux安装dubboAdmin
进入/home/dubbo-dubbo-2.6.0/dubbo-admin/target/dubbo-admin-2.6.0/WEB-INF目录,修改dubbo.properties。进入tomcat的bin目录/root/apache-tomcat-8.5.100/bin,执行./shutdown.sh 先停止,在执行。进入tomcat的bin目录/root/apache-tomcat-8.5.100/bin,./startup.sh启动tomcat。ip+端口+解压目录访问即可,
2024-04-08 12:08:58
579
原创 Linux安装nginx
(或者直接命令的方式下载:wget http://nginx.org/download/nginx-1.24.0.tar.gz)Nginx安装完成后,默认自动创建 /usr/local/nginx 目录。进入nginx解压目录,我这边是/root/nginx-1.24.0。/root/nginx-1.24.0目录下,执行命令。访问机器ip+端口 (访问不了记得在阿里云开启端口)执行make命令和执行make install命令。./nginx启动服务。
2024-03-18 14:09:02
533
原创 如何保证系统的高可用?
高可用(High Availability, HA)是指在正常和预期的工作条件下,系统能够在规定的时间内保持其关键功能持续可用的能力。高可用性的目标是减少系统因为硬件故障、软件故障、网络问题等原因导致的服务中断时间。实现高可用性涉及到多个层面,包括硬件冗余、软件架构设计、数据备份与恢复策略、故障转移机制等。
2024-03-05 11:25:39
1215
原创 docker容器之间是怎么通信的?
Docker 容器之间的通信主要通过 Docker 网络来实现。Docker 提供了几种不同类型的网络,每种网络类型都支持容器之间的通信,但以不同的方式和场景来应用。
2024-03-04 15:04:16
975
原创 docker部署SkyWalking+ES
指定SkyWalking OAP服务器的地址和端口。OAP(Observability Analysis Platform)是SkyWalking的核心组件,负责分析、聚合和存储从agent收集来的数据。tag替换成自己需要的,我们这边是7.5.1。2.3运行SkyWalking OAP(记得把ES服务器的IP换成自己的linux的IP)这个名称用于SkyWalking UI中标识和区分不同的服务,自己随意命名。2.1创建自定义网络(skywalking-net是自己命名的)
2024-03-04 14:38:54
2365
原创 常见的java虚拟机参数
Xms指定了JVM启动时堆的初始大小。JVM会在启动时预分配这么多内存给堆空间,这个值可以设置得与-Xmx相等,这样做可以避免应用运行时频繁地调整堆大小,从而提高性能。-Xmx指定了堆能够使用的最大内存大小。当应用中的对象数量增加,需要更多的堆内存时,JVM会尝试扩展堆空间,直到达到-Xmx指定的限制为止。如果堆空间达到了-Xmx指定的最大值,还需要更多内存时,就会抛出。-Xmx。
2024-02-23 13:56:22
3641
原创 linux安装jdk,maven,git
1.3.3通过命令source /etc/profile让profile文件立即生效。2.3.3通过命令source /etc/profile让profile文件立即生效。查看git版本:git --version。java -version查看是否生效。mvn -v查看是否生效。
2024-02-20 17:20:49
542
原创 nginx高可用怎么做?
Nginx作为高性能的HTTP和反向代理服务器,在前后端分离的架构中常常扮演着前端访问后端服务的关键角色。Nginx宕机可能会导致整个服务不可用,因此,确保其高可用性是非常重要的。
2024-02-18 13:42:40
650
1
原创 springboot集成validation-api,优雅的判断入参
代码抛出异常,返回一个json数据格式,其中"defaultMessage": "订单号不能为空",这才是我们想要返回给前端的信息,而不是整个json。,利用@ControllerAdvice和@ExceptionHandler捕获异常。写一个异常类GlobalExceptionHandler。2.6启动项目postman再测试一次。
2024-01-22 17:36:41
1401
原创 springboot项目集成日志logback.xml
Logback 是一个用于 Java 的日志框架,由同一个人开发,他之前开发了非常著名的 log4j 框架。Logback 通常被认为是 log4j 的后继者,提供了更好的性能和更丰富的功能。
2024-01-22 12:39:50
1402
原创 docker+jenkins+gitee搭建自动部署平台
var/jenkins_home/workspace/user-service-manager/user-service-manager-controller/target/user-service-manager.jar 是你jar包的位置,构建完成后jenkins控制台日志会打印的。15.进入jenkins容器,ps -ef|grep java检查项目启动,发现只有jenkins进程,我们自己的user-service-manager没有启动。用你虚拟的ip+端口号(8080),访问jenkins。
2024-01-16 17:35:10
1747
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人