`
together
  • 浏览: 220047 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

“分布式系统的最佳应用,就是不使用分布式”感言

    博客分类:
  • java
阅读更多
  刚刚翻阅一份老贴子,其中有一个回贴提到老马说过“分布式系统的最佳应用,就是不使用分布式”这句话,真的是感同身受。btw,搜了半天,竟然再也找不到这篇回贴了。我也没有去验证这话是否是老马说的,权当它是真的吧。

  说起分布式这个东西,可能更多的时候带有行业特色。传统的C/S时代,因为当时互联网尚不发达的原因,形成一个个的信息孤岛,还是需要分布式的应用的。比如全国性的信息系统,需要在各省、各市分别开发一套内部系统,来统一进行数据的交换。而在互联网已经足够发达,B/S一统天下的今天,竟然还会有分布式系统的出现,就真的是莫名惊诧了!

  典型的应用,可能就是国内的银行和电信系统。我没有做过这方面的项目,但可以判断出,它们是曾经采用过分布式应用的。如各省分行/分公司是一套独立的系统,通过中间件与总行和其它分行进行数据交互。而近年新成立的商业银行,它的信息系统就应该是集中式的了。

■■分布式的缺点很明显,不便于进行升级和维护、不便于进行统一的安全控制、信息交互容易出错、形成信息孤岛很难提供决策支持......

  我现在负责的一个电子政务系统,就被迫采用了分布式,深受其苦。采用分布式的原因,在于政务系统的特殊性,对安全性要求比较高,甚至要求内外网物理隔离,而政务系统必须置于内网,这就任谁也没有好办法了,就是用VPN专线客户也是不会同意的。而这套系统对公司是如此的重要,如此的有钱可赚,那也就没的商量了,上!

  现在的情况时,北京这边总部是一套系统,各省市是独立的一套系统,通过数据交换中间件定时进行数据交互。与其他分布式系统不同的是,我们这是一个循环的工作流系统,举例讲,用户提交一份数据,先到市级系统,市级再转到省级,省再转到中央,中间任何一个环节都有可能将用户的请求驳回,用户再反复提交,直到最终审批通过为止。因此一份申请,可能要流转十几次,才能最终通过。在反复的数据交互过程中,数据的状态频繁变化,而各级系统、数据库也有可能出现各种各样的问题,而导致出现死数据或脏数据。各省市系统的升级、维护非常困难,但木已成舟,也只能被动的接受现状了。这其中固然有我们系统架构、软件bug的原因,但究其根本,还在于分布式。

  而在去年,我们公司又接了某电力公司一个招标专家管理的项目,对方在开发的中间提出新的需求,要求采用分布式(每个业务人员可以用手提电脑将服务器上的所有数据同步到本机系统,并且在本机操作完以后再与服务器同步)并且态度十分强硬(理由是他们可能需要到环境恶劣的矿井等地,现场无上网条件,但又必须在现场使用此系统),如果我们不能实现就中止合同。我当时没有参与这个项目,但在听闻之后,也向技术总监表示了我的意见,“既然可以使用手提电脑来做现场操作,那么在无线网络已经十分发达的今天,完全可以让客户使用无线网卡或通过手机来上网,不必采用分布式”,也阐述了分布式可能造成的后果,但由于销售方面的压力,被迫接受了用户的需求,而原技术负责人半途而废跑了,竟然把我顶上去做这个项目。最终这个项目是完成了,但工作量、开发时间已经大大超出了预期,原定三个月完成的小项目,最后用了9个月的时间。而在最终项目结束以后,我们竟然发现,客户根本没有使用我们这个分布式!非常的失败。这种失败,不是某个人的失败,而是公司领导强加个人意志、销售单纯看重销售业绩所导致的失败。过去发生过,以后也仍然可能会发生。

续:
  还有过这样的事情,用户要求在他们备份数据库的时候,由我方为他们提供另一个临时数据库来保证业务的正常运转,然后再两个数据库同步。这样的要求是不是非常无理?对方坚持要停止数据库服务再备份,就是不肯软备份。所以对于这样的无理要求,无论如何一定不能答应,基本上已经到了做软件的底限了。客户就差没让我们给他写一个操作系统+数据库了。
  类似连锁商场信息系统之类,应该还是要采用分布式,定期传输数据,比如每天从总部获得各种商品的价格信息,并定期将销售、库存信息向总部上报。这样能够保证本地操作的速度,另外也能保证业务不受外部网络的影响。但这类系统的信息流向相对比较单一,数据交换的频率要求也不是很高,实现起来相对容易一些。

分享到:
评论
14 楼 shaucle 2006-12-03  


分布服务,不要分布对象

很多情况俺宁愿用cache,也不用分布对象。
13 楼 daquan198163 2006-12-03  
vlinux 写道
我们这个学期刚刚开了分布式计算这门课程,学得不是很好,随便说说

分布式计算最重要的就是横向和纵向整体提高系统性能,实现1+1>1的效果。

请楼上的想想,如果一家超级市场全国连锁的超市都要用到中央数据库这样的业务还算可以,但是如果是GOOGLE或者BAIDU只有一台服务器(哪怕这台服务器是多CPU的--这也是分布式计算)在给你提供服务,那你也肯定不会用搜索引擎了。
12 楼 vlinux 2006-12-03  
我们这个学期刚刚开了分布式计算这门课程,学得不是很好,随便说说

分布式计算最重要的就是横向和纵向整体提高系统性能,实现1+1>1的效果。

请楼上的想想,如果一家超级市场全国连锁的超市都要用到中央数据库这样的业务还算可以,但是如果是GOOGLE或者BAIDU只有一台服务器(哪怕这台服务器是多CPU的--这也是分布式计算)在给你提供服务,那你也肯定不会用搜索引擎了。
11 楼 pi1ot 2006-12-02  
看来各个行业对分布式的理解都不同
10 楼 together 2006-12-01  
liuwangxia 写道
如果不用分布式系统,那就用集中数据管理模式,只用一个中央数据库,一个总部应用服务器,这是理想情况。
但是在某些行业行不通,比如连锁超市,万一断网了,POS销售终端收银损失就大了,这个时候就要支持脱网销售,客户端就必须用到本地存储了,数据同步问题又来了。

确实是这样,但这种系统应该还是属于集中式,只是由于特殊情况,需要临时切换本地数据库。而且数据交换的频率很低、流向单一,相比而言在技术上是比较好实现的。
如果网络不够发达的话,还是要采用分布式,定期传输数据,比如每天从总部获得各种商品的价格信息,并定期将销售、库存信息向总部上报。这样能够保证本地操作的速度。
9 楼 liuwangxia 2006-12-01  
如果不用分布式系统,那就用集中数据管理模式,只用一个中央数据库,一个总部应用服务器,这是理想情况。
但是在某些行业行不通,比如连锁超市,万一断网了,POS销售终端收银损失就大了,这个时候就要支持脱网销售,客户端就必须用到本地存储了,数据同步问题又来了。
8 楼 jackyz 2006-12-01  
together 写道
greenq 写道
    看樓主的意思好像是想說:客戶別閑著沒事干提出一些需要分布式實現的需求(又很少用到)。
     和主題:“分布式系统的最佳应用,就是不使用分布式” 關系不大。
     好像你應該詳細說下客戶這個需求如果不用分布式應該怎么實現才更加貼題一些。

对的,是这个意思。
假设说,同样功能的一个系统,不实现分布式应用,工期为一年,合同金额为100万的话,那如果采用分布式,工期和合同金额至少要翻一倍或更多才算合理。但客户并不会这么想。所以对于销售人员和公司高层来讲,一定得把握住这个度,否则就极有可能成为一个失败的项目(工期延长,问题多多,双方都不满意)。

同意这段,分布式系统的确复杂度高。该跟客户多要点。

together 写道
在我们曾经做过的分布式系统中,我有一点想法,还没有经过认真的梳理,比较粗糙的。
1:任何数据均不要物理删除,只打标记,以便于一旦出错时恢复。
2:使用版本控制,强制各系统定时升级,加强统一管理
3:对任何数据项的操作修改,均记录详细的log,以防止扯皮。比如我发了一个贴子,写了攻击某人的话,过一会自己改回去了。这个时候有人找管理员投诉,说xxx刚才骂我来着,如果没有一个前后数据变化的log,那就无法对证了。
4:及时对帐功能。类似财务的对帐。虽然子系统与主系统之间物理隔离,但可以在两端定期生成要对帐的数据,使用程序来核查数据是否完整、状态是否正常。

这段嘛,感觉和分布式关系不大啊。
1,3,4,在任何出现“财务\审计”关键词的系统,都是basic的要求,分布不分布,都是要做的。
2,倒是和分布式有点关系,不过,大家估计也都是这么做的,无可奈何。

对于
greenq 写道
“這個需求如果不用分布式應該怎么實現”
这个问题,楼主有否新观点?
7 楼 together 2006-11-30  
greenq 写道
    看樓主的意思好像是想說:客戶別閑著沒事干提出一些需要分布式實現的需求(又很少用到)。
     和主題:“分布式系统的最佳应用,就是不使用分布式” 關系不大。
     好像你應該詳細說下客戶這個需求如果不用分布式應該怎么實現才更加貼題一些。

对的,是这个意思。
假设说,同样功能的一个系统,不实现分布式应用,工期为一年,合同金额为100万的话,那如果采用分布式,工期和合同金额至少要翻一倍或更多才算合理。但客户并不会这么想。所以对于销售人员和公司高层来讲,一定得把握住这个度,否则就极有可能成为一个失败的项目(工期延长,问题多多,双方都不满意)。

在我们曾经做过的分布式系统中,我有一点想法,还没有经过认真的梳理,比较粗糙的。
1:任何数据均不要物理删除,只打标记,以便于一旦出错时恢复。
2:使用版本控制,强制各系统定时升级,加强统一管理
3:对任何数据项的操作修改,均记录详细的log,以防止扯皮。比如我发了一个贴子,写了攻击某人的话,过一会自己改回去了。这个时候有人找管理员投诉,说xxx刚才骂我来着,如果没有一个前后数据变化的log,那就无法对证了。
4:及时对帐功能。类似财务的对帐。虽然子系统与主系统之间物理隔离,但可以在两端定期生成要对帐的数据,使用程序来核查数据是否完整、状态是否正常。


举一个例子吧,不知我猜的对不对。比如异行转帐,一般对方都说一个月内到帐,而很多情况下15天或更短时间内就到帐了。我猜想正常的转帐时间就是15天,而对方称需要一个月,就是因为中间的转帐有可能会有问题。系统会在A行转出15天后,将A行的数据与B行的进行核对,如果此时B行尚未到帐,则有可能是中间转帐环节出了问题,那么此时再进行一次转帐操作。因为第一次转帐出错的可能性本身就不大,再加一次操作,基本上可以杜绝帐户不统一的情况发生了。
6 楼 greenq 2006-11-30  
    看樓主的意思好像是想說:客戶別閑著沒事干提出一些需要分布式實現的需求(又很少用到)。
     和主題:“分布式系统的最佳应用,就是不使用分布式” 關系不大。
     好像你應該詳細說下客戶這個需求如果不用分布式應該怎么實現才更加貼題一些。
5 楼 daquan198163 2006-11-30  
像楼主这样的需求,不用分布式架构可以实现吗?
4 楼 ouspec 2006-11-30  
不懂技术的客户迷信分布式,我以前也遇到过。秀才碰到兵,有礼说不清
3 楼 together 2006-11-30  
不过“分布式计算”,与“分布式系统”,差别可是挺大的O。我所说的是指“分布式系统”。
2 楼 together 2006-11-30  
谢谢!
我也是刚看完那个回贴,记得不太清楚,大概意思是明确的。确实很恐怖,而且不是纯技术所能解决的。
1 楼 lighter 2006-11-29  
Martin Fowler说的"请牢记分布式计算第一法则:不要分布你的对象",和你说的老马说过“分布式系统的最佳应用,就是不使用分布式”差不多的...
对分布式真的有点恐惧感,我们几个在搞agent项目,也是用分布式的,更新远程数据库一个功能就试验了N久,关系到访问更新的权限问题,这一排才慢慢地试出来...

相关推荐

    分布式系统的应用

    分布式系统并不局限于单一的定义,它可以是分布式的、网络的、并行的、并发的或分散的。这些术语在某种程度上有所交叉,但各有侧重: - “并行”系统强调数据上的同步操作,通常在单个控制线程下进行。 - “并发”...

    东北大学_研究生_期末考试之分布式系统及应用

    10. **云计算平台**:如Amazon AWS、Microsoft Azure、Google Cloud Platform等,它们提供了丰富的分布式系统服务,包括计算、存储、数据库等,理解和掌握这些平台的使用是实际应用的关键。 通过对2019年和2020年的...

    用于分布式系统管理的应用软件.pdf

    在分布式系统管理领域,应用软件是实现有效监控、自动化、部署及维护分布式环境不可或缺的工具。分布式系统由多个分散的组件组成,这些组件通过网络进行通信,以协同工作并提供一致的服务。在本文中,我们详细探讨...

    分布式系统中文版PPT-南理工复习可用

    南理工 魏松杰 对应他的英文版本PPT复习可用,同时是学习分布式系统的很好的PPT,分布式系统ppt对应分布式系统第五版英文版ppt,复习,自学可用,了解分布式系统,共10章,01-概述,02-系统模型,03-进程间通信,04-...

    分布式系统原理介绍 - 刘杰 - 百度.pdf

    分布式系统理论体系非常庞大,涉及知识面也非常广博,本文精心选择了部分在工程实践中应用广泛、简单有效的分布式理论、算法、协议加以介绍。全文分为两大部分,第一部分介绍了分布式系统的一些基本概念并框定了本文...

    《分布式系统原理与范型》.pdf

    这些范例展示了分布式系统在实际中的具体应用,包括但不限于人机交互系统、基于分布式文件系统的数据管理、以及基于分布式网络调用的计算服务等。在人机交互系统范例中,探讨了如何在分布式环境中有效地进行人机交互...

    分布式系统课件PPT

    分布式系统是一种由多台计算机通过...通过深入学习这些分布式系统的核心概念和技术,你将能够理解和构建更加高效、可靠的分布式应用,适应不断增长的业务需求。这份"分布式系统课件PPT"会是你深入这个领域的宝贵资源。

    分布式系统概念与设计 (1).pdf

    "分布式系统概念与设计" 通过对分布式系统概念与设计的研究,我们可以了解到,分布式系统是一种复杂的系统,它由多个计算机节点组成,每个节点可以进行计算、存储和通信。这种系统可以提供高可用性、可扩展性和灵活...

    分布式系统原理与范型第二版课后习题答案

    透明性是分布式系统的关键特性之一,它指的是系统的某些属性对用户或客户端程序来说是不可见的,使得用户在使用系统时感觉不到系统的分布式特性。分布式系统的透明性具体可以分为几种类型:访问透明、位置透明、移植...

    分布式系统设计(PDF)

    如互斥问题、死锁的预防和检测、处理机间的通信机制、可靠性问题、负载分配问题、数据管理问题及其可能的解决方案,并讨论了分布式系统设计在操作系统、文件系统、共享存储器系统、数据库系统和异型处理中的应用。...

    探究分布式系统在工业机器人领域中的应用.pdf

    【分布式系统在工业机器人领域的应用】 分布式系统是一种基于网络的软件架构,它通过高度内聚性和透明性实现各个组件间的协同工作。在分布式系统中,数据管理集中,对用户来说,无论是本地还是远程的数据访问都是...

    分布式系统与并行计算文献阅读综述

    分布式系统广泛应用于各种场景,如搜索引擎、分布式数据库、云计算平台、物联网(IoT)、内容分发网络(CDN)等,极大地推动了信息技术的进步。 2. 分布式系统的相关技术 2.1 分布式系统的软硬件系统 硬件层面,分布式...

    分布式数据库系统及其应用与答案

    《分布式数据库系统及其应用(第二版)》由邵佩英编著,是中国科大出版社出版的专业教材,旨在深入探讨分布式数据库系统的理论基础和实际应用。 分布式数据库系统的核心思想是将数据分布在多个物理位置上的独立...

    java分布式系统架构源码

    Java分布式系统架构是一种将应用程序分布在多个计算节点上运行的技术,以提高系统的可伸缩性、容错性和性能。源码分析对于理解这种架构至关重要,尤其是对于开发者来说,它提供了深入学习和自定义系统的机会。本资源...

    分布式系统运维交付解决方案研究与应用.pdf

    分布式系统运维交付解决方案研究与应用 1. 引言: 随着网络技术的快速进步,软件运行平台从单机环境转向网络环境,计算机系统逐渐由集中式向分布式系统发展。分布式系统因规模庞大、服务对象多、关系复杂等特点,给...

    分布式系统原理介绍

    本文的内容虽然涉及了分布式系统的诸多方面,但侧重于介绍那些在工程实践中应用广泛、简单有效的理论、算法和协议,并通过实例和“工程投影”来帮助读者更好地理解这些概念和技术在真实系统中的应用。由于篇幅和深度...

    分布式系统原理与范型答案(第二版)答案

    2. **CAP理论**:分布式系统设计的核心原则之一是CAP定理,它指出一个分布式系统不能同时满足一致性、可用性和分区容错性这三个特性。理解和权衡这三者在实际系统设计中的重要性是至关重要的。 3. **Paxos算法**:...

Global site tag (gtag.js) - Google Analytics