谈拆库后的应用开发模式

标签: 随笔文章 | 发表时间:2013-05-01 17:14 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
该篇文章接上篇,即基于数据不多点复杂下,基于SID共享数据服务模式下的应用开发。



在这里以采购订单的创建和查询场景为例进行说明,为了简化模型,具体说明如下:

SID库:存储供应商信息,物料信息,数据字典信息,人员组织信息,SID库为纯读库。
采购模块私有库:存储采购订单头,采购订单行信息。

基于以上简单的数据存储模型,那么具体的采购订单创建流程说明如下:

a.进入创建界面后的初始化,直接取Session信息,当然Session信息应该在一登录掉SID库人员,权限初始化
b.订单头选择供应商-直接查询SID库供应商查询服务,获取供应商ID,名称和关键熟悉信息。
c.采购订单类型,付款方式等:直接查询SID库,在第一次查询后该部分数据直接进行缓存,不再重复调用
d.录入订单明细的时候,选择物料调用SID库物料信息查询服务,取回物料ID和相关属性信息。
e.订单保存时候,直接调用ADB库自己的保存方法,和SID库不再有关系。

基于确定的一张采购订单的订单查看界面说明如下


a.从本地ADB库获取到订单头和订单明细信息。
b.根据订单头中的供应商ID信息,查询SID库供应商查询服务,获取供应商名称和其它属性。
c.根据订单头中订单类型,付款方式的ID信息查询数据字典服务,获取显示值信息,或者直接从缓存获取
d.对于订单明细查看,注意一般是分页查询操作,具体如下
    d.1 对当前页显示的订单明细条目的物料ID信息进行组合,形成字符串
    d.2 根据组合字符串,调用物料信息查询服务,获取所有的相关物料的属性信息集合
    d.3 逻辑层进一步组合,将返回的详细物料属性和订单明细属性组合现实到订单明细表格

可以看到在SID库不通过数据复制到本地,调用服务方式仍然是比较容易实现的。在这种模式下,传统实现中在一个大库中简单的关联查询结果集操作,将转换为应用逻辑层多次调用后的组装。这个带来了一定在应用开发中的工作量,但是总体问题并不大。只要不出现在分库后出现的业务模块操作需要跨库的CUD操作,即不会带来分布式事务的场景和问题。

关于分布式事务的处理

基于上面的业务,考虑一个最简单的分布式事务场景,即在最终订单生效的时候,一方面是更新订单的生效状态,一方面是需要朝配送模块触发生成一张配送单,在这里涉及到CUD的跨库操作。对于这种场景,个人建议是能够用BASE模式解决的尽量用BASE模式解决。具体如下:

a.更加订单最终生效状态,同时发送生成配送单消息(可以是本地的临时队列表以避免分布式事务),消息发送基于消息中间件模式,只需发送到MQ即可。
b.消息中间件对接收到的消息进行处理和分发,如果失败的话进行重试。
c.如果多次失败,则需要进行手工处理或手工对订单进行回滚。在这里关键是思考除非出现技术故障,否则不可能出现配送单无法发送成功和生成出来的可能。

  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [应用 开发 模式] 推荐:

谈拆库后的应用开发模式

- - 人月神话的BLOG
该篇文章接上篇,即基于数据不多点复杂下,基于SID共享数据服务模式下的应用开发. 在这里以采购订单的创建和查询场景为例进行说明,为了简化模型,具体说明如下:. SID库:存储供应商信息,物料信息,数据字典信息,人员组织信息,SID库为纯读库. 采购模块私有库:存储采购订单头,采购订单行信息. 基于以上简单的数据存储模型,那么具体的采购订单创建流程说明如下:.

盈利模式探讨一:从一款小应用看日本开发者大智慧

- - Tech2IPO
移动互联网发展至今,关于如何让开发者盈利一直是大家非常关注的话题. 如何通过应用盈利,应该是每个开发者,尤其是独立开发者考虑最多的问题. “移动应用开发很火,但是赚不到钱. ”这似乎已经成为移动互联网行业内的共识. 国内大多数开发者由于人员和资源有限,希望更多专注于产品本身,而由平台商提供营销、推广、计费等渠道.

前端开发中的MCRV模式

- 亚威 - 百度泛用户体验
MCRV设计模式 Javascript MVC Web开发标准. 1.Web前端开发面临的问题. 早期的Web页开发(Web前端开发)中,Web页面较为简单,大多数Web页面的功能仅限于用HTML和简单样式展示静态信息,或向服务器发送数据,Web页面与用户的交互较少. 随着Web的发展,DHTML、CSS、javascript等技术出现,Web页不再仅限于展示静态信息,动态、交互成为Web页的主流功能之一.

GIMP单窗口模式开发完成

- yinseny - Solidot
GIMP开发者Martin Nordholts在博客上宣布,久候多年的单窗口模式功能开发完成. Gimp开发者自2009年底开始开发单窗口模式,它允许用户在一个窗口内操作图像,类似Photoshop. 单窗口模式将作为一个可选模式随GIMP 2.8提供给用户. Nordholts透露,GIMP 2.8将于年底或2012年初发布.

交互模式应用(3) : Carousel

- EK - 牛博山寨 编辑推荐
图片作为描述有形事物的一种方式,不但能直接传达视觉信息,包括几何特征、形态、位置大小和色彩等,还能传递内在信息,比如意图、要求、风格、性格和计划等. 现代设计中,图形的表现力一直远超其他表现形式,因此得到大多数设计师的青睐. A picture is more than thousands of words, 如何利用图片进行创作理念表达和思维传递成为设计工作中的重点之一.

GNOME 3.2的Web应用程序模式

- fid - cnBeta.COM
有一个很酷的功能,在即将发布的GNOME 3.2 增加了创建Web应用程序的模式. 实现方式:当您浏览到一个网站,并选择“保存为Web应用程序” C 之后会被提示输入名称和图标,然后就会建立一个类似iPhone的图标:.

Android应用盈利模式的转变

- 高春辉 - XJP的碎碎念
赚钱始终是应用开发者最关注的问题,iOS成功打造了“AppStore – iPhone – Users”的产业模式,让无数个人开发者获得可观收入,更捧红了Angry Bird、Fruit Slice这样的明星级应用,创造了一个全新的行业标准. 在Google Android成功突破iOS封锁获得市场青睐后,怎样让应用开发者获得合理回报是需要思考的问题.

Web应用的缓存设计模式

- - robbin的自言自语
从10年前的2003年开始,在Web应用领域,ORM(对象-关系映射)框架就开始逐渐普及,并且流行开来,其中最广为人知的就是Java的开源ORM框架Hibernate,后来Hibernate也成为了EJB3的实现框架;2005年以后,ORM开始普及到其他编程语言领域,其中最有名气的是Ruby on rails框架的ORM - ActiveRecord.

迅雷应用开发

- Pei - 博客园-首页原创精华区
360上市了,同时周鸿祎也暗示自己投资的另一家公司也要上市,业界都在猜测是否是迅雷. 但是又有传闻说美国会拿迅雷上市开刀,以知识产权来影响中国互联网企业上市的门槛. 最近迅雷也开放了自己的下载引擎,使得用户不需要安装迅雷,也可以使用迅雷引擎来进行下载. 围绕着迅雷做开发,利用迅雷下载的资源优势,和逐渐壮大的迅雷雷友社区来创造增值,应该是迅雷开放自己下载引擎的目的.

Android应用开发资源

- - InfoQ cn
Android应用设计和开发人员现在可以参考由Android用户体验(UX)团队官方发布的 Android设计指南. 该指南提供了开发者应该遵循的基本原则,并列出了很多细节指导,涉及 设备与显示、 主题、 触控交互、 度量与栅格、 排版、 色彩、 图标设计,以及如何 编写用户交互界面的提示语.