- 1、本文档共1页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构建高可伸缩性的WEB交互式系统(下)
构建⾼可伸缩性的WEB交互式系统(下) 的阅读清单
本⽂是《构建⾼可伸缩性的WEB交互式系统》系列⽂章的第三篇,以⺴易的NEJ框架为例,对模块
的可伸缩性进⾏分析介绍。
实例分析
NEJ框架根据前两篇的描述对此套架构模式做了实现,下⾯我们⽤具体实例讲解如何使⽤NEJ中的
模块调度系统来拆分⼀个复杂系统、开发测试模块、整合系统等。
系统分解
绘制层级关系图
当我们拿到⼀个复杂系统时,根据交互稿可以绘制出组成系统的模块的层级关系图,并确定系统对
外可访问的模块。
抽象依赖关系树
从模块的层级关系图中,我们可以⾮常⽅便的抽象出模块的依赖关系树:
相关⼚商内容 相关赞助商
Windows Azure在中国正式开启在线直付 Windows Azure专区上线,
率先在国内落地的全球化云服务,深度了解 全⾯了解云服务精彩呈现!
Windows Azure
利⽤开发测试云实现精益创业、快速迭代
Windows Azure ⾃管理服务实现近乎零停机维
护
Windows Azure专区上线,全⾯了解云服务
然后,我们将抽象出来的依赖关系树根据UMI规则进⾏格式化。格式化的主要操作包括:
增加⼀个名称为“/”的根结点(也可将“m”结点改为“/”)
每个结点增加“/”的⼦节点作为默认节点
⾄此输出的依赖关系树,具有以下特性:
任何⼀个结点(除根结点外)到根结点路径上的结点名称⽤“/”分隔组合起来即为结点的UMI值,
如list结点的UMI值为/m/blog/list
任何结点上的模块都依赖于他祖先结点(注册有模块)上的模块存在,如blog结点和list结点均
注册有模块,则list结点上的模块显⽰必须以blog结点上的模块的显⽰为先决条件
确定对外模块注册节点
五个对外可访问的模块:⽇志、标签、基本资料、个⼈经历、权限设置,在依赖关系树中找到合适
的结点(叶⼦结点,层级关系树在依赖关系树中对应的结点或“/”结点)来注册对外可访问的模块:
确定布局模块注册节点
从可访问模块注册的结点往根结点遍历,凡碰到两模块交叉的结点即为布局模块注册结点,系统所
需的组件相关的模块可注册到根结点,这样任何模块使⽤的时候都可以保证这些组件已经被载⼊。
映射模块功能
原则:结点的公共⽗结点实现结点上注册的模块的公共功能。
举例:blog结点和setting结点的公共⽗结点为m结点,则我们可以通过切换blog模块和setting模块识
别不变的功能即为m模块实现的功能,同理其他模块。
分解复杂模块
进⼀步分解复杂模块,⼀般需要分解的模块包括:
可共⽤模块,⽐如⽇志列表,可以在⽇志管理⻚⾯呈现,也可以在弹层中显⽰
逻辑上⽆必然联系的模块,如⽇志模块中⽇志列表与右侧的按标签查看的标签列表之间没有必
然的联系,任何⼀个模块的移除或添加都不会影响到另外⼀个模块的业务逻辑
⾄此我们可以得到两棵系统分解后的依赖关系树——对外模块依赖关系树:
以及私有模块依赖关系树:
绘制模块功能规范表
本例中为了说明分解过程,将所有可分解的模块都做了分解。实际项⺫看具体情况,⽐如这⾥的/m
模块组合的/?/tab/模块的功能可以直接在/m模块中实现,⽽不需要新建⼀个/?/tab/模块来实现这个
功能。
规范表范例如下所⽰:
构建⺫录
项⺫⺫录
项⺫⺫录的构建如下图所⽰:
各⺫录说明
webroot 项⺫前端开发相关⺫录
|- res 静态资源⽂件⺫录,打包时可配置使⽤到该⺫录下的静态资源带版本信息
|- src 前端源码⺫录,最终发布时该⺫录不会部署到线上
|- html
|- module 单⻚⾯模块⺫录,系统所有模块的实现均在此⺫录下
|- app.html 单⻚⾯⼊⼝⽂件
模块单元⺫录
根据模块封装规则⼀个模块单元由以下⼏部分组成:
模块测试:模块实现的功能可以通过模块测试⻚⾯独⽴进⾏测试
模块结构:模块所涉
文档评论(0)