From 57e286254993325a3c938558e133ec9f99261183 Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Mon, 26 Aug 2019 11:11:47 +0800 Subject: [PATCH] add requirement scenario --- README.md | 3 ++- docs/requirement-scenario.md | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0942d4d0..ba278b5a 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,8 @@ 1. 分布式跟踪系统 2. 日志收集记录系统上下文 -3. 应用容器或上层框架跨应用代码给下层`SDK`传递信息 +3. `Session`级`Cache` +4. 应用容器或上层框架跨应用代码给下层`SDK`传递信息 各个场景的展开说明参见子文档 [需求场景](docs/requirement-scenario.md)。 diff --git a/docs/requirement-scenario.md b/docs/requirement-scenario.md index 1643b64c..0eff13d6 100644 --- a/docs/requirement-scenario.md +++ b/docs/requirement-scenario.md @@ -14,7 +14,8 @@ - [🌵 2. 日志收集记录系统上下文](#-2-%E6%97%A5%E5%BF%97%E6%94%B6%E9%9B%86%E8%AE%B0%E5%BD%95%E7%B3%BB%E7%BB%9F%E4%B8%8A%E4%B8%8B%E6%96%87) - [`Log4j2 MDC`的`TTL`集成](#log4j2-mdc%E7%9A%84ttl%E9%9B%86%E6%88%90) - [`Logback MDC`的`TTL`集成](#logback-mdc%E7%9A%84ttl%E9%9B%86%E6%88%90) -- [🛁 3. 应用容器或上层框架跨应用代码给下层`SDK`传递信息](#-3-%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E6%88%96%E4%B8%8A%E5%B1%82%E6%A1%86%E6%9E%B6%E8%B7%A8%E5%BA%94%E7%94%A8%E4%BB%A3%E7%A0%81%E7%BB%99%E4%B8%8B%E5%B1%82sdk%E4%BC%A0%E9%80%92%E4%BF%A1%E6%81%AF) +- [👜 3. `Session`级`Cache`](#-3-session%E7%BA%A7cache) +- [🛁 4. 应用容器或上层框架跨应用代码给下层`SDK`传递信息](#-4-%E5%BA%94%E7%94%A8%E5%AE%B9%E5%99%A8%E6%88%96%E4%B8%8A%E5%B1%82%E6%A1%86%E6%9E%B6%E8%B7%A8%E5%BA%94%E7%94%A8%E4%BB%A3%E7%A0%81%E7%BB%99%E4%B8%8B%E5%B1%82sdk%E4%BC%A0%E9%80%92%E4%BF%A1%E6%81%AF) - [上面场景使用`TTL`的整体构架](#%E4%B8%8A%E9%9D%A2%E5%9C%BA%E6%99%AF%E4%BD%BF%E7%94%A8ttl%E7%9A%84%E6%95%B4%E4%BD%93%E6%9E%84%E6%9E%B6) @@ -49,7 +50,7 @@ PS: 多谢 [@wyzssw](https://github.com/https://github.com/wyzssw) 对分布 com.alibaba log4j2-ttl-thread-context-map - 1.2.0 + 1.3.0 ``` @@ -76,7 +77,22 @@ PS: 多谢 @bwzhang2011 和 @wuwen5 对日志场景说明交流和实现上讨 这个集成已经在 **_线上产品环境_** 使用的。说明详见[欧飞网的使用场景](https://github.com/alibaba/transmittable-thread-local/issues/73#issuecomment-300665308)。 -## 🛁 3. 应用容器或上层框架跨应用代码给下层`SDK`传递信息 +## 👜 3. `Session`级`Cache` + +对于计算逻辑复杂业务流程,基础数据读取服务(这样的读取服务往往是个外部远程服务)可能需要多次调用,期望能缓存起来,以避免多次重复执行高成本操作。 + +同时,在入口发起不同的请求,处理的是不同用户的数据,所以不同发起请求之间不需要共享数据,这样也能避免请求对应的不同用户之间可能的数据污染。 + +因为涉及多个上下游线程,其实是`Session`级缓存。 + +通过`Session`级缓存可以 + +- 避免重复执行高成本操作,提升性能。 +- 避免不同`Session`之间的数据污染。 + +更多讨论与使用方式参见[**_`@olove`_**](https://github.com/olove) 提的Issue:[讨论:Session级Cache场景下,TransmittableThreadLocal的使用](https://github.com/alibaba/transmittable-thread-local/issues/122)。 + +## 🛁 4. 应用容器或上层框架跨应用代码给下层`SDK`传递信息 举个具体的业务场景,在`App Engine`(`PAAS`)上会运行由应用提供商提供的应用(`SAAS`模式)。多个`SAAS`用户购买并使用这个应用(即`SAAS`应用)。`SAAS`应用往往是一个实例为多个`SAAS`用户提供服务。 \# 另一种模式是:`SAAS`用户使用完全独立一个`SAAS`应用,包含独立应用实例及其后的数据源(如`DB`、缓存,etc)。 -- GitLab