- 博客(14)
- 收藏
- 关注
原创 Springboot集成RabbitMq@RabbitListener不自动生成队列
大意如下,如果定义了RabbitAdmin的Bean,就会自动创建队列。如下配置消费队列,期望会自动创建注解中的queue和exchange。修改rabbit配置,增加RabbitAdmin定义,如下。查看RabbitListener定义。但是启动报错,日志如下。再次启动,成功创建。
2023-02-09 11:11:31 1885 1
原创 账户余额更新优化
业务场景用户预存一定余额,可以用余额在平台购买套餐商品,支付扣除余额需控制并发,当前采用的是乐观锁方式。即每个用户的余额记录都有一个版本号,更新记录时,需要带上版本号。版本号采用整数递增。问题当有两个扣减余额的操作同时发生时,其中一个有几率失败。失败结果直接返回给用户,此时用户操作重试即可,但会影响用户体验。如果一直处于高并发状态,用户可能会连续操作失败多次。主要针对此扣款失败场景进行优化。方案演进增加失败重试int i = 0, max = 3;//最多尝试3次while (i < m
2022-04-06 19:28:20 1081 1
原创 系统数据导出优化
概述线上系统出现文件无法成功导出,或者导出导致虚拟机崩溃等情况。为保证系统稳定和功能正常,需对导出功能做一轮整体优化,以及整理一些可进一步优化的点。初始导出流程如下原因分析1、业务数据处理异常出现比较少,测试的正常操作难以提前发现,系统运行过程中,产生了特定数据可能就会出现的bug2、数据量大导致内存溢出目前系统最大数据量导出为单表3百万行,60列,全部加载到内存中极易导致OOM3、并发操作导致内存溢出与2中类似,实质还是数据量大的问题。由于是并行处理,因此同时存在CPU瓶颈
2022-02-22 19:56:07 1884
原创 shiro的session信息放redis反序列化异常解决
背景在本地session移至redis存储时,原本以为引入spring-session-data-redis依赖,配置RedisHttpSessionConfiguration,在web.xml中引入springSessionRepositoryFilter就结束了,没想到遇到序列化相关的问题,具体就是只有getter,没有setter。日志如下:26-Jun-2021 15:53:16.432 涓ラ噸 [http-nio-8081-exec-6] org.apache.catalina.core.St
2021-06-26 16:42:26 1524 1
原创 httpclient connect timed out
日志中存在大量的连接超时内容:errorMsg=Connect to api.10646.cn:443 [api.10646.cn/122.97.213.18] failed: connect timed out首先使用telnet排除客户端原因telnet api.10646.cn 443 阻塞telnet www.baidu.com 443 正常说明客户端是正常的,很可能是被服务器限制了查看与服务器122.97.213.18之间的连接状态netstat -n | grep 122.97.2
2021-06-07 15:57:25 2391
原创 shell脚本实现代码修改时自动提交
实现了一个shell脚本,自动提交代码更新。配合jenkins使用。完整代码git add .is_change=0temFile="temFile"git status > $temFilewhile read alinedoecho $aline if [ "$aline" = "Changes to be committed:" ]# if [ "$aline" = "Untracked files:" ] then
2021-05-21 14:03:08 399
原创 大表数据安全删除
背景有张记录表包含三千多万条历史记录,其中有一半以上数据为0,为0数据在业务上没有意义,其它表关联此表进行统计查询较多,为提高查询效率,故删除此部分无效数据。方案因为要删除一千五百多万条数据,直接通过条件进行删除耗时较长,且易导致锁表。因此,需要更精细一点的删除。步骤1、筛选记录首先,根据删除条件筛选需要删除的记录的id筛选语句:select id from tablexxx where virtual_flow = 0 and virtual_voice = 0 and flow_date
2021-04-28 19:42:16 111
原创 Docker安装ELK
利用elk进行日志提取分析。安装elasticsearch创建一个内网组,方便其他组件之间直接通过内网访问,比如logstash和kibana等。docker network create elk-net启动Elasticsearch:docker run -d --name elasticsearch --net elk-net -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.0注意:
2021-04-15 15:17:37 198
原创 日志输出规范
1. 组件日志组件有很多,日志门面的选择Slf4jApache Commons Logging日志的实现有:log4jlogbacklog4j2Java Util Logging(jul)Jboss Logging建议统一使用Slf4j作为日志门面,logback作为日志实现。2. 级别日志的级别有很多,我们一般只用四个。日志级别由低到高DEBUG - INFO - WARN - ERROR。DEBUG(调试):开发调试日志。一般来说,在系统实际运行过程中,不会输出该级别
2021-04-15 15:15:50 1021
原创 Spring Cloud Alibaba
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。主要功能服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTempla
2021-03-27 17:16:04 113
原创 黑群晖内网穿透
准备一台外网服务器,可用各种云服务器,推荐阿里云-新人福利一台已经安装好黑群晖的九年前的老笔记本E1-471G,光驱已改造为硬盘架+1T硬盘。服务器端配置shell远程云服务器,输入如下命令,下载frp程序压缩包,并解压curl -LJO https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gztar -zxvf frp_0.36.2_linux_amd64.tar.gz#
2021-03-22 22:51:51 2401
原创 Spring Cloud Gateway配置
![](https://img-blog.csdnimg.cn/img_convert/6cc657529fb3920364d88e221ab8a562.png#align=left&display=inline&height=595&margin=[object Object]&originHeight=595&originWidth=443&size=0&status=done&style=none&width=443)客户端发送
2021-03-10 20:13:12 919
原创 Sentinel限流框架
Sentinel 是什么随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 的历史2012 年,Sentinel 诞生,主要功能为入口流量控制。2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践
2021-03-08 13:08:36 250
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人