Dal2.2.8发布了,开始支持分布式事务(遵循XA规范)
在团队全体成员经过3个月的努力后,Dal2.2系列的一个重要迭代版本Dal2.2.8终于发布了。
在这要说一声,增禄和大庆,你俩辛苦了。
为了支持分布式事务,我们着实费了一点功夫。因为Dal向外提供的特性必须都是语言中立、数据库中立的。所以,我们需要考虑不支持join/suspend/resume等子句的数据库。
MySQL就是这样一个对XA仅提高有限支持的数据库:
For XA START, the JOIN and RESUME clauses are not supported;
For XA END, the SUSPEND [FOR MIGRATE] clause is not supported.
详见:http://dev.mysql.com/doc/refman/5.1/en/xa-restrictions.html
同时,我们还要充份考虑因各种原因造成的状态扰乱问题。还好,最后我们通过嵌套事务扁平化、XA START/XA END命令配对、数据库链接作用域去重叠及链接事务范围内独占来解决这一切问题。
至此,Dal不但继续擅长于提升web2.0+系统的承载能力,而且也适用于保证那些重要系统的关键数据的完整性和安全性。
晚些时候,大庆做了个简单的benchmark,发现在系统复杂度上升、dal-core接口更加易用的情况下,仍然保持和Dal2.1系列一样的性能表现。虽然有些小小的失落(预期是更好),但是也算还好吧。
明天继续灌数据,看看在缓存数据量增大(以触发JVM进行垃圾回收)的情况下的表现吧,顺便profile看看。
能够介绍一下,你们支持分布式式事物的业务场景吗?是基于什么考虑需要支持分布式事物呢?互联网应用由于考虑高性能,高可用性等因素,一般不是采取CAP/BASE策略吗?
Comment by Oscar — April 3, 2010 @ 10:03 am
@Oscar
您说的对,互联网应用确实一般不会采用分布式事务。但Dal不单单只是针对互联网应用,凡是和钱有关的应用一般都需要实时保证数据的完整性和安全性。
Comment by 许超前 — April 3, 2010 @ 9:46 pm