软件设计随想-上下游系统集成问题

Software design thinking

软件设计随想

Service agent (SA) 这个项目与service manager (SM) 集成经历过两种方案,一种是直接与SM的数据库进行集成交互;另外一种就是面向服务的集成,通过SM提供的SMRWS API服务进行交互集成。

我概括地称之为直接面向基准数据源的集成设计(SA->SMDB) 和面向服务的集成设计(SA->SMRWS->SMDB)。

今天遇到一个面向服务的集成设计的问题,SMRWS的主从web servers的cache数据出现同步了问题,导致SA连接SMRWS获取的信息不准确,有一个场景就是我们通过SMRWS来验证user 权限,因为获取的信息不准确导致我们误判用户不再存在于SM源系统,进而删除了用户在SA系统的权限。

作为下游系统的SA这种情况下显得格外尴尬,用户抱怨SA系统的可用性和稳定性。

反思就是:作为面向服务的下游系统,必须考虑外接服务的不稳定性,提前做好准备,进行一些异常应对, 比如当对方服务无法连接,要让本系统通过本地缓存保持"off-line" 继续工作。

当然对于上述的那个因上游系统的问题,导致本系统逻辑上的误判 (到底是用户真的不存在于上游系统背后的数据库了,还是因为上游系统出现了同步问题,这个需要和上游系统就关键逻辑场景进行标志,比如当上游系统的cache出现同步问题时候,需要在API返回结果里进行标识)。

时间: 2024-11-08 10:35:11

软件设计随想-上下游系统集成问题的相关文章

软件设计

软件设计 一定是创建订单的时候填充market字段,我曾经一度打算在回调的时候再根据回调方来填充Market,但是如果没有回调呢?Market这样的标志性字段一定要依赖于靠谱的操作: 对于重载方法要注意,尤其套调用的重载方法,对于某些核心校验必须要放置在里层方法调用,否则因为重载都是public出去的,都可以被外界调用,如果在外层方法实现校验,里层重载方法被外界直接调用,校验会被跳过:考虑CheckMarket是放在CreateOrder(String encryptedString)还是Cre

软件设计原则和方法通俗理解

网上有很多关于软件设计原则的说法,很精确,很官方,但是对于有些初学者来说可能是不知所云,到最后把自己给郁闷到了,学习软件应该是一件愉快的事情. 那么软件设计原则有哪些呢? (1)可靠性 做出一个可靠的软件,跟女人找一个可靠的男人一样,女人找男人,需要男人品质好,人品好,靠谱,可信赖,可依靠,身材高大,等等.软件设计也是一样,在软件的设计阶段就要非常注意软件的可靠性,不要等到最后用的时候发现软件这里不行那里不行,或者说在使用软件过程中一旦发现问题还是可以恢复使用,不能直接崩溃. (2)健壮性 这个

软件设计与实现总结

本周学习了<软件设计与实现>的章节,了解了一些常用的分析和设计方法和开发阶段的一些管理方法: 1.分析和设计方法: 写软件就是为了解决用户的需求,所以我们首先了解用户需求即需求分析. 方法:(1)以文字为主的文档(2)以图形为主的构造模型(3)数学语言(4)类+代码(5)源代码+注释 2.从Spec到实现 (1)估计开发任务所需时间(2)分析需求(3)生成设计文档(4)和同事审核文档(5)编写代码(6)代码复审,代码重构 3.开发人员的标准工作流程(附图片) BTV测试又称冒烟测试 4.开发阶

《新浪微博自动评论软件&#183;设计与实现之UI篇》

任务:编写用户界面 使用Python中的wxPython对界面进行编写工作 预计的按钮有:登录,评论,退出 预计的输入框有:cookie.评论内容.搜索关键字 预计的单选框有:是否使用关键字搜索 首先,看看我们需要的控件都有哪些,按钮(Button).单选按钮(RadioButton).静态文本(StaticText).可编辑文本(TextCtrl),到WxPythonInAction查看对应的文档,要注意到的是,wxPython和之前玩的MFC不一样,不是先设计界面,再编写代码,而是所有控件的

图书管理系统------软件设计图纸

图书管理系统------软件设计图纸 一.图书馆管理系统总体功能概述 图书馆管理系统功能图: 1.系统登录模块 : 本模块的功能点包括: (1) 判断用户名和密码是否相符: (2) 根据用户的权限类型,登录到系统的制定界面操作使用. 2.图书管理模块: 在本模块中图书馆工作人员可以对图书进行管理操作. 本模块的功能点包括: (1) 新书入库,将新进图书按其类型将图书的基本信息录入系统数据库: (2) 图书出库,某一部分图书会随着时间的增长及知识的更新而变得不再有收藏的价值,或者图书被损坏,这些图

主流MVC框架的设计模式及遵守的软件设计原则

原文地址,会不断更新  http://it.zuocheng.net/mvc-design-pattern-design-principle-summary   作程的技术博客 本文以主流的MVC框架为例,比如Java 的SSH.PHP的Symfony和Zend Framework ,在简单地剖析他们的设计原理之后,找到其中使用的设计模式:鉴赏他们的代码实现,查看设计者们都遵守了哪些软件设计原则.作此文,一为学习,二为总结.其中下面所写内容可能并不全面,也可能不准确,但会不断修改完善. 框架模式

第五届蓝桥杯全国软件设计大赛--2013年校内选拔赛Java题目

第五届蓝桥杯全国软件设计大赛 2013年校内选拔赛Java题目 一.考生注意: (1)[结果填空题]要求参赛选手根据题目描述直接填写结果.求解方式不限.不要求源代码. 把答案存入[考生文件夹]下对应题号的文件中即可. (2)[代码填空题]要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确.完整.所填写的代码不超过一条语句(即中间不能出现分号). 把填空的答案(仅填空处的答案,不包括题面已存在的代码)存入[考生文件夹]下对应题号的文件中中即可. (3)[编程题]要求选手设计

C#使用设计模式和软件设计原则构建应用程序 PartIII

依赖注入 这个原则的要点是什么.为什么你不能对类的实例进行再次硬编码?当我们编码,测试的时候,让我们关注一件很重要的事情.希望你知道单元测试并知道它的重要性.也许在你做任何编码之前你都应该首先设计你的测试,因此你应该很熟悉测试驱动开发.为了定义新功能你应该去写测试,你应该尝试去实现并开始编码直到测试通过.让我们先看看之前的文章的代码. public class DateBasedTaxFactory:ITaxFactory { Customer _customer; ITaxFactory _t

软件设计6大原则

1.开闭-原则:对于一个软件实体(类,模块,函数等)来说,应该可以扩展,但不可以修改. 对于扩展是开放的(Open for extension),对于更改是封闭的(Closed for modification). 2.单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因. 软件设计就是要发现职责并且把这些职责相互分离,如果你可以想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责,就应该考虑类的职责分离. 3.迪米特法则 4.里氏代换原则 子类必须能够替换掉其父类. 例