1. 问题概述
生产环境中,一个基于 SOFA 框架的定时任务在执行过程中,出现了严重的数据不一致现象:任务调度执行上游服务 A 创建指令数据,服务 A 在逻辑中(同事通过手动事务)进行了提交;随后调用服务 B,服务 B 能成功查询到该指令数据,但在尝试更新数据状态时失败(异常被内部捕获处理)。然而,流程结束后检查数据库,发现服务 A 创建的指令数据完全消失,且数据库层面未记录到该数据的成功提交日志。此现象不符合预期的业务逻辑和数据库 ACID 特性。
令人比较费解的是,尽管在异常流程中,服务 B 能够成功查询到由服务 A 创建的数据,并且其内部尝试更新数据时发生的失败异常得到了妥善的捕获和处理(未向外抛出),服务 A 创建的本应持久化的数据最终却从数据库中完全消失,同时数据库层面也未能追踪到该数据成功提交的事务日志。
后续通过一项关键的验证步骤——在生产环境中临时移除对服务 B 的调用后,此数据丢失问题便不再复现。
2. 问题背景与详细现象描述
@Transactional
),但服务 A 早期被描述为“手动提交事务”,可能存在手动 JDBC 事务代码与 @Transactional
的混合使用。系统中未使用分布式事务中间件(如 Seata)。UPDATE
操作时发生错误。具体错误原因未在本次排查中明确(可能是锁竞争、约束违反等),但这本身不是数据丢失的直接原因。try-catch
块捕获了 UPDATE
操作抛出的异常,仅在日志中打印了 error 信息,没有将异常重新抛出。因此,从调用栈来看,服务 B 的方法是“正常”返回给服务 A 的。DELETE
语句来删除这条指令数据的代码。大模型集成 LobeChat
大模型工具使用,需要设定返回格式新增一个JSON
编辑 settings.yml
找到 formats
在下面添加:
shformats: - html - json
如果你打算使用 Docker 创建公共实例,推荐使用维护良好的 searxng/searxng @dockerhub
镜像。该 Docker 容器的源托管于 searxng - docker
,容器内包含一个 HTTPS 反向代理(caddy)和一个 Redis 数据库。容器还对 SearXNG 进行了一系列配置,如启用限制器保护以防机器人攻击、启用图像代理以更好保护隐私、启用缓存破坏以节省带宽等。
原文Blog:https://docs.searxng.org/admin/installation-docker.html
在打算自己构建和维护一个 Docker 镜像前,确保已经安装了 Docker。在 Linux 系统上,不要忘记将你的用户添加到 docker 组中(注销并重新登录以重新评估组成员身份),执行命令:
bashsudo usermod -a -G docker $USER
searxng/searxng
镜像该 docker 镜像基于 git://Dockerfile
,并可在 searxng/searxng @dockerhub
处获取。使用该 Docker 镜像非常简单,以下是拉取并部署本地实例的步骤:
bashmkdir my-searxng
cd my-searxng
请先访问 硅基流动 注册新用户账户。新用户将获得 15元额度。
注意保护API请勿发送给别人
访问以下链接下载 Cherry Studio 安装包: Cherry-Studio-1.0.0-setup.exe
或者自行去官网下载最新版本:(如果可以打开国外网站的话)
双击安装包,按安装步骤提示,安装到电脑上。