到目前为止,我们一直在使用 ThreadLocal 来承载一些数据,以免使 API 混乱。但是下面是一些我不喜欢使用本地线程的问题
1)这些年来,本地线程中承载的数据项有所增加 2)自从我们开始使用线程(用于一些轻量级处理)以来,我们也将这些数据迁移到池中的线程并再次将它们复制回来
我正在考虑为这些使用内存数据库(我们不想将其添加到 API 中)。我想知道这种方法是否很好。有什么好处和坏处。
好的,这是一个简单的场景
- 用户登录并提交请求
- 系统为整个请求建立上下文,其中包括 - 此请求的唯一 ID - 用户名 - 登录的系统(用户可以登录多个系统) - 一些 DOMAIN EVENTS 供以后使用
- 请求通过多个逻辑层(表示、业务领域、规则、集成)等
- 在集成层,我们从池中借用少量线程来并行拉取多个伙伴的数据。每个拉取都需要一些先前存储在线程本地的数据,因此我们将这些数据迁移到池线程
- 在从伙伴处收到所有数据后,我们将子线程中积累的新线程本地数据迁移回主线程
- 在交互结束时,我们将 DOMAIN 事件持久化到 DB