码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 记一次大事务优化历程(短信发送)


    问题背景

    短信服务数据库连接数告警,grafana查看数据库连接池被打满。

    问题分析

    在这段时间内,通过链路分析,发现最终调用第三方短信发送服务偶然耗时过长,分析了原有发送逻辑的代码,该实现在入口send处加了事务,导致后续的消息通道等逻辑判断,以及调用第三方发送逻辑全部在一个长事务里。

    解决方案

    由于环境因素,不同环境部署的中间件不一致,有些环境没有使用mq,所以mq不考虑在解决方案内

    1、双缓存队列+动态线程池
    在这里插入图片描述
    2、初始化线程处理
    在这里插入图片描述

    Q1:为什么不用线程池?

    为保证任务不丢失,线程池拒绝策略

    AbortPolicy - 抛出异常,中止任务。抛出拒绝执行 RejectedExecutionException 异常信息。线程池默认的拒绝策略。必须处理好抛出的异常,否则会打断当前的执行流程,影响后续的任务执行
    CallerRunsPolicy - 使用调用线程执行任务。当触发拒绝策略,只要线程池没有关闭的话,则使用调用线程直接运行任务。一般并发比较小,性能要求不高,不允许失败。但是,由于调用者自己运行任务,如果任务提交速度过快,可能导致程序阻塞,性能效率上必然的损失较大
    DiscardPolicy - 直接丢弃,其他啥都没有
    DiscardOldestPolicy - 丢弃队列最老任务,添加新任务。当触发拒绝策略,只要线程池没有关闭的话,丢弃阻塞队列 workQueue 中最老的一个任务,并将新任务加入
    
    • 1
    • 2
    • 3
    • 4

    CallerRunsPolicy策略不会丢失任务,但是会使用提交线程执行任务,加入提交线程执行的任务超长耗时,将会导致整个线程池不可用

    Q2:使用固定线程数不会丢数据吗?怎么解决?

    在应用重启的时候,是会丢失极少部分数据,可以通过定时钟补偿。

  • 相关阅读:
    Python——基础知识
    重装系统会影响到电脑的正常使用吗
    大模型应用开发:手把手教你部署并使用清华智谱GLM大模型
    “机器学习”名字的由来
    基于场景分析法的电动车优化调度(Matlab代码实现)
    Mac开发环境配置- Shell/Homebrew/ruby
    django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间
    rust学习—— 不一样的break
    Mac 超好用的工具推荐
    Azure 机器学习 - 使用 Jupyter Notebook 探索 Azure 机器学习
  • 原文地址:https://blog.csdn.net/qq_31426247/article/details/127241855
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号