个人观察
1.通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性。
2.单一职责原则SRP,真的很关键,广大程序员需要不断深入理解这个原则。
3.架构图是架构师的重要输出,通过图可以直观地看出整个架构思路。
本文转载于

《程序员》2014年11月刊:电商峰值系统架构设计

原文链接:http://www.csdn.net/article/2014-11-04/2822459

该做什么的就做什么

保障整个系统的可用性和稳定性,第一步需要做 的就是,使整体架构清晰化、层次化。那么,对系统进行合理拆分,是最直观的选择。从业务和技术角度出发,遵循SRP(Single Responsibility Principle)原则,合理拆分系统中的各个模块,明确每个模块的职责。这样可以方便快速定位和排查问题,甚至可以有针对性地对每个模块进行优化。

拆分方式基本上分为两种,路由拆分和物理拆 分。所谓路由拆分,就是按照请求特征,将请求流量分摊到两个或多个同质的集群里面;而物理拆分,就是在路由拆分的基础上,按照业务和技术上的特征,将同质的集群进行彻底拆分,成为非同质集群。

下面以交易流程为例,来看一下如何操作拆分。

交易流程主要包括购物车、下单、支付等几个环节,具体的拆分结果,如图1所示。

图1  交易流程拆分结果

经过分析,整个交易流程按照架构层次可以分解为展示层、业务层及外围应用三块内容,这三部分由于职责差异比较大,所以先按照物理拆分,让层次清晰。

再来看展示层,由于存在一些共享的东西,如页面元素等,做物理拆分,会引入额外的成本,所以路由拆分是不错的选择。

接着来看业务层。这一层是很容易按照角色和业务场景进行拆分的,例如,交易管理服务是给管理人员提供管理功能的,需要考虑权限、内控等问题;交易核心服务是给业务主流程提供主要业务功能,需要考虑可用性;交易查询服务是读取交易数据的主要途径,需要考虑易用性;交易网关服务主要是对接外部支付渠道,需要考虑连通性。很明显,这一层由于自身的差异性比较大,所以采用物理拆分是上上策。

最后来看外围应用,其中包括后台管理、日志查 询、业务监控及交易超时控制等,这些应用基本上都是在底层系统平台(管理平台、日志平台、监 控平台以及任务平台)进行二次开发而成的,所以天生就适合进行物理拆分。

从上面不难看出,拆分是一个细活,可以选择的 维度很多,拆分方式也比较讲究。良好的拆分方案,会让系统更加清晰明了,每个模块该做什么的就做什么。这样应对大型促销活动时,可以游刃有余地按照模块特征进行优化。

总结一下在可用性和稳定性工作中的一些感悟。 
首先,清晰的架构划分可以大大减轻稳定性工作量;
其次,功夫要尽量在平时做足,避免总是出临时解决方案;
再次,普及稳定性思维,注意细节;
最后,出现问题,先快速恢复再查找根源。  

电商架构设计-通过系统和业务拆分,遵循单一职责原则SRP,保障整个系统的可用性和稳定性的更多相关文章

  1. C#软件设计——小话设计模式原则之:单一职责原则SRP

    前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...

  2. IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle)

    定义 就一个类而言,应该仅有一个引起它变化的原因. 定义解读 这是六大原则中最简单的一种,通俗点说,就是不存在多个原因使得一个类发生变化,也就是一个类只负责一种职责的工作. 优点 类的复杂度降低,一个 ...

  3. 架构师之路——单一职责原则SRP (我单纯,我快乐)

    定义: 不要存在多于一个导致类变更的原因.通俗地讲,一个类只做一件事情.   单一职责原则的好处: 1.类的复杂性降低,实现什么职责都有清晰明确的定义: 2.可读性提高,复杂性降低,那当然可读性提高了 ...

  4. 【面向对象设计原则】之单一职责原则(SRP)

    单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能 ...

  5. 设计模式学习--面向对象的5条设计原则之单一职责原则--SRP

    一.SRP简介(SRP--Single-Responsibility Principle): 就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因.   所谓职责,我们可以理解他为功能,就是设 ...

  6. 六大设计原则(一)SRP单一职责原则

    单一职责原则SRP(Single reponsibility principle) BO(Business Object):业务对象 Biz(Business Logic):业务逻辑 SRP最简单的例 ...

  7. Java生鲜电商平台-生鲜售后系统的退款架构设计与代码分享

    Java生鲜电商平台-生鲜售后系统的退款架构设计与代码分享 说明:任何一个电商行业都涉及到退货与退款的问题,但是生鲜电商行业还设有一个显著的特点,那就是换货.在人性面前,各种各样的退货,退款,换货的售 ...

  8. Java生鲜电商平台-会员积分系统的设计与架构

    Java生鲜电商平台-会员积分系统的设计与架构 说明:互联网平台积分体系主要用于激励和回馈用户在平台的消费行为和活动行为,一个良好的积分体系可以很好的提升用户的粘性及活跃度. 一.互联网平台积分体系设 ...

  9. Java生鲜电商平台-商家支付系统与对账系统架构实战

    Java生鲜电商平台-商家支付系统与对账系统架构实战 说明:关于生鲜电商平台,支付系统是连接消费者.商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付 ...

随机推荐

  1. Create schema error (unknown database schema '')

    Andrey Devyatka 4 years ago Permalink Raw Message Hi,Please tell me, can I use the static library in ...

  2. 手推Apriori算法------挖掘频繁项集

    版权声明:本文为博主原创文章,未经博主允许不得转载. Apriori算法: 使用一种称为逐层搜索的迭代方法,其中K项集用于搜索(K+1)项集. 首先,通过扫描数据库,统计每个项的计数,并收集满足最小支 ...

  3. Eclipse中执行sql脚本文件

    转自:https://blog.csdn.net/weixin_37778823/article/details/79614281 在Eclipse中导入或新建sql脚本文件(.sql文件),选择指定 ...

  4. attr 和 prop的区别和使用

    一. attr和prop的区别 要想弄清楚attr和prop的区别,就要先搞清楚js中使用DOM方法获取设置属性和使用对象方法获取设置属性的区别. 在javascript中使用DOM方法设置获取属性值 ...

  5. Django day 33 vue中使用element-ui的使用,课程的相关介绍,vue绑定图片,课程列表接口,课程详情页面

    一:vue中使用element-ui的使用, 二:课程的相关介绍, 三:vue绑定图片, 四:课程列表接口, 五:课程详情页面

  6. 【Java】3到5年开发常见的Java面试题

    一.Java基础和高级 String类为什么是final的. HashMap的源码,实现原理,底层结构. 反射中,Class.forName和classloader的区别 session和cookie ...

  7. 例题 5-1 STL

    Raju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on the ...

  8. C基础-对malloc的使用与理解

    一.malloc函数分析 1.函数原型 void * malloc(size_t  size); 2.Function(功能) Allocates a block of size bytes of m ...

  9. 用 NPOI 组件实现数据导出

    利用 Nuget 安装 NPOI 组件. 所需引用的 dll:ICSharpCode.SharpZipLib.dll.NPOI.dll.NPOI.OOXML.dll.NPOI.OpenXml4Net. ...

  10. C++学习笔记(二)之数组

    数组作形参时,实际传入数组首地址 void print(const int*) void print(const int []) ]) 三种方法等价