.Net中线程栈的隔离性应用
来源:互联网 发布:2015最流行的网络歌曲 编辑:程序博客网 时间:2024/06/06 12:26
在架构设计中合理的利用线程栈是实现高并发和高吞吐的重要前提。
大多数应用上下文在架构上就是利用线程栈作为上下文,包括事务上下文、用户会话上下文、安全上下文等。
线程栈在基于Http请求的短连接中应用是最为广泛的,因为Http的无状态性正好符合了线程栈的处理。
放到线程栈中处理的几种常见情景
1、资源隔离,放到线程栈里处理,可以自然做到资源隔离,因为栈中的数据只对本栈负责,而不会影响其他线程的状态,这就保证了隔离安全性,前提是A线程栈中的资源不会流入B线程栈,这个通常会在架构层面隔离开来。
2、用户会话隔离,一个好的系统架构在会话请求层面应该是隔离的,A用户请求不会访问到B用户的数据,开发人员在使用已设计好的架构时,不会去考虑A可能访问B的资源时的冲突问题,他们更多的是只关心单一的逻辑的实现,而单一的逻辑实现大多数也是为某一会话负责的,良好的架构要保证请求层面就开始隔离。因为线程栈自我隔离性能,会话就可以构建在对应的处理线程栈上,会话就可以跟着处理线程栈流动到会话的其他服务上,可能本进程的服务,也可能是远程的过程调用。
3、事务隔离,尤其涉及到在分布式的事务环境下,事务上下文要求在整个请求阶段具有一个持久性,而事务失败或异常请求结束等,整个事务容易又能自动回收处理,事务环境如果依托到线程栈上,如果出现请求失败或连接丢失,对应的线程栈也会进入异常处理回收,此时事务容器如果关联到线程栈上就可以自动的释放回收。
4、连接会话隔离,在多线程的应用环境中,客户端可能会同时发起很多个连接请求,每个连接请求可能都是基于异步的处理,如果依靠给连接做标记,这在业务处理上就会相当麻烦,开发人员要时刻注意是哪个ID标记的连接,如果利用线程栈,那就可以利用线程的唯一性来区分,回调可以根据返回的线程栈ID来处理。
0 0
- .Net中线程栈的隔离性应用
- .NET中事务的隔离级别
- Titan线程隔离的验证
- C# 中线程的应用
- android中线程的应用
- Android中线程的应用
- .net中线程的状态
- 数据库中事务的隔离性
- spring 中事务的隔离性。
- 二、Hystrix隔离服务的实现原理---线程池隔离
- iOS编程中线程的应用以及线程简单应用
- .Net中Hashtable的应用
- .Net中Hashtable的应用
- .net中Cache的应用
- .net 中HttpHandler的应用
- .net中ViewState的应用
- .NET中反射的应用
- .net中Cache的应用
- java 中的transient
- iOS 中 AES256 的实现 - 更喜欢 C 实现,OC 封装的风格
- 程序的编译过程
- 寻找最接近自然数
- S3C2440上LCD驱动 (FrameBuffer)实例开发讲解
- .Net中线程栈的隔离性应用
- spring3.0 aop原理
- 迷茫的程序猿
- 黑马程序员 Java高新技术 四
- spring http invoker 实践
- 给文档加密,你懂多少?
- shell/终端
- Display 开发的经验分享
- Ubuntu下安装可视化SVN客户端Rabbitvcs