下面以一个假想的在线网店部份用例为例,列举常见的企业级应用场景
网店中有大量的商品信息及图片,通常用户登录网站后会用大部份时间来查看或检索产品,然后再通过在线下单系统生成订单,目前该网店的日营业额在百万元人民币左右,估计未来一段时间内营业额会呈指数级增长,并且有近一半的订单是集中在晚上的8点到12点之间下达,为了不影响销售,要求系统在升级及维护中不要停止对外服务。另外除了在线下单外,也允许客户通过客服电话来下单,或者企业用户通过对其提供的服务接口下单。在订单产生后,同时引发一系列的业务处理流程,如生成订单确认邮件,产生物流派送信息,根据产品的相关性自动生成推送广告,如果是企业客户还要通知相应的服务专员等等,那我们在设计系统架构的时候初步设想如下:
其中最主要的几点考虑如下:
一、为保证高可用性和可扩充性,整个系统构建在服务之上,并在多个层次如Web站点、应用层上支持负载均衡,而且对于数据库也要实现双机热备。
二、由于订单量巨大且集中,提交订单以异步方式进行,这样在集中时间段下订单也不会产生明显拥堵现象,对于创建订单的数据库也主要以数据增加为主,不键索引,通过数据库复制等技术异步的将数据同步到查询数据库中,再在查询数据库中构建索引,以优化数据的查询。
三、由于产品信息、图片信息实时性要求不是太高,并且修改也不是很频繁,可以通过生成静态网页,或者引入分布式缓存等技术提高用户响应。
四、对于订单的后续处理,我们可以通过发布/订阅模式来实现,当订单创建成功后,可以引发订单创建事件,然后根据现在和未来的后续处理场景来开发订阅者来侦听事件。