该作什么的就作什么程序员
保障整个系统的可用性和稳定性,第一步须要作 的就是,使总体架构清晰化、层次化。那么,对系统进行合理拆分,是最直观的选择。从业务和技术角度出发,遵循SRP(Single Responsibility Principle)原则,合理拆分系统中的各个模块,明确每一个模块的职责。这样能够方便快速定位和排查问题,甚至能够有针对性地对每一个模块进行优化。架构
拆分方式基本上分为两种,路由拆分和物理拆 分。所谓路由拆分,就是按照请求特征,将请求流量分摊到两个或多个同质的集群里面;而物理拆分,就是在路由拆分的基础上,按照业务和技术上的特征,将同质的集群进行完全拆分,成为非同质集群。优化
下面以交易流程为例,来看一下如何操做拆分。spa
交易流程主要包括购物车、下单、支付等几个环节,具体的拆分结果,如图1所示。.net
图1 交易流程拆分结果 架构设计
通过分析,整个交易流程按照架构层次能够分解为展现层、业务层及外围应用三块内容,这三部分因为职责差别比较大,因此先按照物理拆分,让层次清晰。设计
再来看展现层,因为存在一些共享的东西,如页面元素等,作物理拆分,会引入额外的成本,因此路由拆分是不错的选择。日志
接着来看业务层。这一层是很容易按照角色和业务场景进行拆分的,例如,交易管理服务是给管理人员提供管理功能的,须要考虑权限、内控等问题;交易核心服务是给业务主流程提供主要业务功能,须要考虑可用性;交易查询服务是读取交易数据的主要途径,须要考虑易用性;交易网关服务主要是对接外部支付渠道,须要考虑连通性。很明显,这一层因为自身的差别性比较大,因此采用物理拆分是上上策。orm
最后来看外围应用,其中包括后台管理、日志查 询、业务监控及交易超时控制等,这些应用基本上都是在底层系统平台(管理平台、日志平台、监 控平台以及任务平台)进行二次开发而成的,因此天生就适合进行物理拆分。ip
从上面不难看出,拆分是一个细活,能够选择的 维度不少,拆分方式也比较讲究。良好的拆分方案,会让系统更加清晰明了,每一个模块该作什么的就作什么。这样应对大型促销活动时,能够游刃有余地按照模块特征进行优化。