关于会话的一些应用
来源:互联网 发布:163邮箱ssl端口 编辑:程序博客网 时间:2024/05/06 09:34
在软件的系统设计中涉及到了各种会话,权限会话、事务会话、连接会话、http请求会话等等,所谓会话就是用来保证在多任务或多线程执行环境下,保持数据一致性的用户上下文。
很多时候我们可以利用线程栈的隔离性做会话处理,比如在处理一些事务的场合,但是在一些高并发场合的连接会话处理上,就没法利用线程栈的隔离性作为会话上下文,因为可能在一个线程栈上维持了多个连接,这几个连接在异步端口上做的调用。
作为连接层会话,高性能的并发连接都是利用异步端口的复用,因为有很多的TCP连接,并且每一个连接上的数据也不一定会在一次接收时完毕,此时单靠一次连接上的数据,做数据处理,显然就不行了,我们需要构建一个连接会话,这样在该会话下的所有数据,就知道了都属于同一个连接发来的数据。
构建了完整的连接会话,就可以在应用层高枕无忧了吗,显然也还是不行,因为总会有新的需求,比如,为了提高系统的执行效率,我们需要发起多个并发连接,来接收同一个数据源,比如多线程下载或P2p下载,因为多个线程,在数据源上做切割,首先要做的就是搞定数据源的偏移量,但是怎样能清楚的知道不同连接来的数据,是为某一个相同的数据源服务,还有就是网络断开后,重传怎样重新通过线程分配调度,这都需要一个上下文来协调,这就涉及到了应用会话上下文,但是这种上下文,一般在面向企业级的开发应用中,使用的很少。原因在于这是一个复杂的并行编程,并行编程太复杂了,作为并行编程需要协调的东西,必须在其应用上下文之间,不停的通知,因为这样能及时处理一些异常的死链接等,重新开辟新的连接等,这相当于在应用层面构建了很多小的服务处理容器,这是绝大多数的软件开发人员所驾驭不了的,因为这需要相当好的架构,否则就是一个灾难。
不同的应用场合需要不同的会话,同一概念的会话,也有不同的应用场景,这个需要根据业务的偏向所决定,本质上架构还是面向业务而架构,当业务场景变掉了,可能原来的架构就不适应了,因为不同的架构所偏重的场合不同。一个多线程下载软件和一个实时控制软件的架构,都是面向多线程的架构,但是多线程下载软件的架构,需要考虑的是会话的连贯性,在时间维度上可以持续很长时间,但是所有的应用会话不能变,而实时控制软件的架构,需要的是连接会话的及时性,当会话超时之后,需要立即给出应答,否则控制逻辑,将产生严重的时序不可控性,这会导致连接放在线程栈上的处理将不同。
- 关于会话的一些应用
- 关于会话的一些总结
- 关于MySQL的全局变量与会话变量的一些思考
- 关于DBMS_ALERT的一些应用
- 关于DNS的一些应用
- 关于pandas的一些应用
- 关于数组的一些应用
- 关于会话的statistics
- 关于会话的管理
- 关于j2me应用实现会话跟踪
- 关于天气的经典会话
- 关于 Rich Client 应用的一些想法
- 关于IEWebControls的安装及一些应用
- 关于JS计时器的一些应用
- 关于IEWebControls的安装及一些应用
- 关于UBUNTU应用的一些常识
- 关于手机应用的一些解决方案
- 关于Calendar类的一些应用
- maven发布jar到远程仓库
- C++_01_入门
- 【转】c++中WaitForSingleObject函数解析
- C++ primer 笔记二
- 不要公开宣布你的奋斗目标,否则你将可能无法实现自己的目标
- 关于会话的一些应用
- Java类对象数组声明和初始化
- 黑马程序员——OC三大特性(继承、多态、封装)
- wild card matching
- 大家好
- webHttpBinding、basicHttpBinding和wsHttpBinding区别
- 解决:ClassNotFoundException: com.mchange.v2.ser.Indirector
- html5 input list 用法及兼容性
- 解决:java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp