- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2015-08-17 12:50 编辑
初次架构并行交易系统的朋友们,往往注重并行度,异步化这些问题。
但是,事情并非是越并行,越异步越好。
先说并行度的问题:
在一个分布式交易系统中,有好多环节分布在不同的服务器上,每个环节会产生每个环节的瓶颈。但是,整个系统必然有一个主瓶颈。最常见的主瓶颈是数据库,有时也可能是网络带宽。
对于数据库来说,有一个最佳并行度,它不是一个值,而是一个范围,在这个范围之外效率会降低。其他环节的并行度,受限于这个并行度,过高的并行度并无好处。
再说异步操作问题:
并非是异步操作比同步操作高效,相反,异步操作通常效率较低(这里所说的异步,并不单纯指异步IO,有些业务处理也可以异步的)。那么我们为什么要考虑异步操作呢?为了并行操作服务。
异步操作是为了腾出CPU进行其他任务,也就是并行辅助手段。并行和异步都是有开销的,有时开销还很大。
如果一个大的作业被划分成小的并行单元,这个单元过小,为他付出并行和异步开销是否合算?
所以,并行架构设计要注意三个适度:
适度并行。
适度异步。
适度粒度(批量).
对于OLAP(在线分析处理,通常是在线交易分析),对于大批量的数据源,通常是需要拆分成小的并行单元。他的处理环节也比较多,哪里设计并行,哪里需要异步,批次大小的选择,有时就需要一个或几个demo系统,综合评价一下。
而OLTP(在线交易处理),通常处理的颗粒度很小,往往需要合并。一个用户不太容易与另外的用户合并。应该是把自己的各个步骤合并,而不是拆分。典型的,例如12306那样的交易系统,可以把:到发站车次查询,时刻表查询,票价查询,席位余额查询合并。事实上也是这么做的。
|
|