.Net中线程栈的隔离性应用
2014-01-11 21:01
176 查看
在架构设计中合理的利用线程栈是实现高并发和高吞吐的重要前提。
大多数应用上下文在架构上就是利用线程栈作为上下文,包括事务上下文、用户会话上下文、安全上下文等。
线程栈在基于Http请求的短连接中应用是最为广泛的,因为Http的无状态性正好符合了线程栈的处理。
放到线程栈中处理的几种常见情景
1、资源隔离,放到线程栈里处理,可以自然做到资源隔离,因为栈中的数据只对本栈负责,而不会影响其他线程的状态,这就保证了隔离安全性,前提是A线程栈中的资源不会流入B线程栈,这个通常会在架构层面隔离开来。
2、用户会话隔离,一个好的系统架构在会话请求层面应该是隔离的,A用户请求不会访问到B用户的数据,开发人员在使用已设计好的架构时,不会去考虑A可能访问B的资源时的冲突问题,他们更多的是只关心单一的逻辑的实现,而单一的逻辑实现大多数也是为某一会话负责的,良好的架构要保证请求层面就开始隔离。因为线程栈自我隔离性能,会话就可以构建在对应的处理线程栈上,会话就可以跟着处理线程栈流动到会话的其他服务上,可能本进程的服务,也可能是远程的过程调用。
3、事务隔离,尤其涉及到在分布式的事务环境下,事务上下文要求在整个请求阶段具有一个持久性,而事务失败或异常请求结束等,整个事务容易又能自动回收处理,事务环境如果依托到线程栈上,如果出现请求失败或连接丢失,对应的线程栈也会进入异常处理回收,此时事务容器如果关联到线程栈上就可以自动的释放回收。
4、连接会话隔离,在多线程的应用环境中,客户端可能会同时发起很多个连接请求,每个连接请求可能都是基于异步的处理,如果依靠给连接做标记,这在业务处理上就会相当麻烦,开发人员要时刻注意是哪个ID标记的连接,如果利用线程栈,那就可以利用线程的唯一性来区分,回调可以根据返回的线程栈ID来处理。
大多数应用上下文在架构上就是利用线程栈作为上下文,包括事务上下文、用户会话上下文、安全上下文等。
线程栈在基于Http请求的短连接中应用是最为广泛的,因为Http的无状态性正好符合了线程栈的处理。
放到线程栈中处理的几种常见情景
1、资源隔离,放到线程栈里处理,可以自然做到资源隔离,因为栈中的数据只对本栈负责,而不会影响其他线程的状态,这就保证了隔离安全性,前提是A线程栈中的资源不会流入B线程栈,这个通常会在架构层面隔离开来。
2、用户会话隔离,一个好的系统架构在会话请求层面应该是隔离的,A用户请求不会访问到B用户的数据,开发人员在使用已设计好的架构时,不会去考虑A可能访问B的资源时的冲突问题,他们更多的是只关心单一的逻辑的实现,而单一的逻辑实现大多数也是为某一会话负责的,良好的架构要保证请求层面就开始隔离。因为线程栈自我隔离性能,会话就可以构建在对应的处理线程栈上,会话就可以跟着处理线程栈流动到会话的其他服务上,可能本进程的服务,也可能是远程的过程调用。
3、事务隔离,尤其涉及到在分布式的事务环境下,事务上下文要求在整个请求阶段具有一个持久性,而事务失败或异常请求结束等,整个事务容易又能自动回收处理,事务环境如果依托到线程栈上,如果出现请求失败或连接丢失,对应的线程栈也会进入异常处理回收,此时事务容器如果关联到线程栈上就可以自动的释放回收。
4、连接会话隔离,在多线程的应用环境中,客户端可能会同时发起很多个连接请求,每个连接请求可能都是基于异步的处理,如果依靠给连接做标记,这在业务处理上就会相当麻烦,开发人员要时刻注意是哪个ID标记的连接,如果利用线程栈,那就可以利用线程的唯一性来区分,回调可以根据返回的线程栈ID来处理。
相关文章推荐
- Attribute在.net编程中的应用(五)
- 在.NET中应用SQLDMO
- 一些很酷的.net的应用技巧
- 反射在Java Swing编程中的应用之java 模仿.net事件处理
- .Net语言 APP开发平台——Smobiler学习日志:在手机应用开发中如何快速实现应用间的分享功能
- Attribute在.net编程中的应用(一)
- Attribute在.NET编程中的应用(三)
- Attribute在.net编程中的应用(一)
- Log4net是.Net 的全部应用(可以用来记录自己的日志中心的日志)
- sqlite在.NET中的应用
- 使用XML创建Excel文档-.NET教程,XML应用 http://www.z6688.com/info/47612-1.htm
- 一起谈.NET技术,关于c#静态方法和实例方法的辨析和应用
- 数据结构在.net反流程混淆中的应用
- Attribute在.net编程中的应用
- 新建了个论坛,主题是.NET下PDF的应用与开发
- 一起谈.NET技术,WPF 基础到企业应用系列4——WPF千年轮回
- .Net 消息队列(MSMQ) 应用
- Attribute在.net编程中的应用(一)
- 反射在.NET中的简单应用(一)