Monthly Archives: May 2008

SOA笔记(2)

  死者已矣 生者勉力。   SOA如何实施? 没想到思路一整理,花了这么长时间。大规划,细原则,小目标,快实施。这句话说的不错,的确不错,太正确了,但是,还是不知道怎么做。   其实做任何一件事情都是相通的,比如咱们接到一个软件项目,先做需求调研,看看到底要做些啥,把系统先分为几大块,然后定项目计划,细化每个模块的实现方式和周期,最后开干。做的过程中可以借鉴同类项目的数据,对项目进度进行监控和调整,并反馈到项目实施数据库。这就是自顶向下的方法论,先做大纲,再分块,再细化,最后组装。   还有一种方式,是自下向上的建设方式,比如系统整合项目,客户有CRM系统、OA系统、Call Center系统等(ERP没接触过,不敢写),要做互联互通。只知道目标是啥,但是现状和目标差得太远,也不知道如何走。那只能基于现实,一步一步摸索。先分析各个系统有哪些可以共享的资源,再看看如何把这些资源关联上,就像联想柳传志说的“小步快跑”。   两种实施方法论,基于对风险和资源的控制不同,各有千秋。 具体怎么使用,要看具体情况。运用之妙,存乎于心。   说句题外话,前几天参加普元SOA大会,普元说自己要多做SOA中的S,联想到看的新闻,IBM的SOA解决方案要偏向SOA中的A。国内和国外的风格还真不一样。普元的强项和国内公司一样,都在技术方案和技术实施能力,它更倾向于做好自己擅长的技术,把技术功能封装为构件,业务由其他人来做好了。而IBM赚钱的是IGS,业务能力是它强项啊,所以高屋建瓴,从业务入手,大谈业务架构。嘿嘿,厉害啊。   从架构师的角度来看,我更倾向于IBM,国内有钱公司的IT系统已经不是很少了,以后更多的是考虑如何业务整合发挥效率的时候了。单纯构件的盈利模式,上会受到IBM这样巨头的挤压,下会受到阿里软件这些SaaS软件新锐的冲击。(题外话而已,无数据支持)   这边整理的SOA实施方法论,总体上以自上而下的建设模式,可在项目中自行分解。 以下摘自我自己整理的《SOA在证券经纪业务行业的发展》一文。 在SOA实施过程中,缺少方法论的支持,最终会形成杂乱的Web Services集合。引入方法论后,如同软件设计引入架构设计,对于构建完整的系统都有很大的帮助。 指导SOA实施方法论主要分为4个步骤: l         SOA计划和监控:在业务和IT层面评估SOA的价值,规划SOA实施策略。 l         服务建模和架构设计:分析业务流程,设计服务模型和SOA架构。 l         服务实现和组装:基于SOA编程模型,采用开源产品或商业产品实现SOA服务。     l         服务部署和管理。采用集成式服务平台安装部署。   SOA实施过程总览图: Advertisements

Posted in Uncategorized | Leave a comment

业务系统的近实时数据同步

业务系统的近实时数据同步,最常见的方式是通过数据库单向或者双向同步的方式增量实时进行,说句实话,个人感觉,双向方式还不错,单向方式就不太好说。   这取决于怎么定位同步?   从逻辑角度,我个人倾向定位于两个互不相关的同构系统在运行过程中的数据同步,每个系统只负责自己的数据更新,两个系统的同步由专门的模块负责,比如数据库同步,或者专门的同步服务。(这里想提一下Erlang编程语言,它的设计思路给了我很多启示。)双向同步碰到的最大问题,是两个系统信息之间的数据对应的问题。在不同的同步解决方案中,有不同的解决方式。由于个人对数据库同步不感冒,还是倾向于基于消息方式的同步概念,这就要求这种方式也要解决这个问题。   前天终于想明白这个是可以做到的,而且是两者之间可以唯一确定的。其实说穿了,也蛮简单的,最后的解决方案,有点类似于SSO的用户标识对应的方法,挺搞笑的。由此可见,只要面对类似的问题,基于相同的逻辑思维,必然得出近似的结论。   注:Erlang属于一种纯消息传递语言——即一种基于独立性很强的并行进程的语言,我们的编程模型广泛使用了速错(fail-fast)进程。这项技术在构建可容错系统的硬件平台中被普遍使用,但是在软件设计方面却用得不多。这主要是因为传统的编程语言并不允许不同的软件模块以彼此互不干扰的方式存在。当前普遍使用的是多线程的编程模型,该模型中资源是共享的,这样就造成了线程很难真正隔离起来,就可能导致一个线程中的错误会传播到另一个线程中,这就破坏了系统内部的坚固性。 Erlang的世界观可以归纳为如下的一些观念:􀁺 一切皆进程。􀁺 进程强隔离。􀁺 进程的生成和销毁都是轻量的操作。􀁺 消息传递是进程交互的唯一方式。(这里蛮有意思的)􀁺 每个进程有其独有的名字。􀁺 你若知道进程的名字,你就可以给它发消息。􀁺 进程之间不共享资源。􀁺 错误处理非本地化。􀁺 进程要么好好跑,要么死翘翘。

Posted in Uncategorized | Leave a comment