SOA的e-commerce (B2C)应用的2个设计原则
SOA的基本架构就是把e-commerce各个模块(component)以WebServices的形式进行构建。模块之间以HTTP的形式进行交互,每个模块由多台分布式的PC服务器提供服务。这种架构不同于传统的JEE三层架构以Object或者Interface为接口,而是以WebServices为接口。这种架构带来的好处是模块之间的松耦合以及易于扩展,但是这种基于HTTP的远程WebServices接口的性能却又是在实践中最为头痛的问题。
在这种基于SOA架构的高交易量(Millionsonlineusers,ThousandsServers)的电子商务(e-commerce)系统的设计中,怎么从应用架构角度提高性能呢?
第一原则就是分离。一定要把复杂的认证和授权以及一些非功能性的模块分离出去。大家知道,WS(WebServices)标准中,有许多类似WS-Security的标准。如果SOA的架构要满足这些specification,那么高性能的WebServices就无从谈起。一个BestPractice就是,用DMZ把所有内部WebServices服务器圈定在一个可信的区域,不需要身份验证。WebServices就只提高自己本身的服务。
第二原则就是在ACID事务处理上,对于大部分Web服务(除了Payment,calculations等有精确服务需求的),一定要通过降低数据一致性(consistency)来换取高可用性(availability)。在WebServices中,可以利用cache,replication等技术来实现高性能。
先写到这儿,以后有机会扩展。