通俗一点讲,什么是分布式系统
大家通俗一点说,什么是分布式系统,它与分层有关系吗?
------解决方案--------------------例如一个管理软件有一个api是“查询企业关联交易”,当财务软件调用这个api是,如果这个api其实是从全公司几十个分公司的近百台服务器上取得的分析数据,但是api向财务软件隐藏了后台查询和计算的复杂性。
不要把多用户系统看作分布式系统。分布式系统是即使只有1个终端使用系统后台,也是通过分布在多处的服务器来执行的。
------解决方案--------------------webService基本上可以被wcf淘汰了。wcf虽然也可以基于remoting(的通讯协议)来建立,但是wcf实现的比较简单,所以在自己专用的局域网上的多个服务器通讯使用remoting也还是有一些功能优势。
后边一个我不太愿意去考虑它。过去在程序中实现信息交换是往往使用很多很简单的数据类型来描述复杂的业务对象,“层”的概念比较重要,也比较混乱。例如你设计SQL Server的表结构,所有字段的数据类型跟.net程序中所使用的class定义中各字段的类型定义有严重的不匹配现象,此时就催发出很多人去炒作“层”概念。在数据库编程方面,如果你没有使用ORM,可以考虑试一试Linq。
------解决方案--------------------跟分层毫无关系, 跟它容易搞混的是集群
就是把一个系统分布在不同的节点上, 各节点协同工作, 缺一不可
集群也是把一个系统部署在很多节点上, 但是每个节点都能独立工作, 一个节点当掉不仍然可以工作.
------解决方案--------------------我所理解的“分布式系统”恰好不是集群!集群是高负载时的一种解决方案。然后分布式系统不是为了高负载。假设有100台服务器参与到分布式系统里来,同样的数据可能顶多在2、3台服务器上重复保存,这2、3台之间也许叫做(一个很小的)集群,但是这100台服务器则是分布。分布是指功能分布,例如一个计算可能需要分解为20个任务由20台以上的服务器取走分别计算,而决不是指他们分别荣誉地重复同一个计算任务。
可以自己开发简单的专用分布式系统,但开发通用的分布式系统则是相当困难的,因为要考虑到业务。与此想法,集群则相当简单,甚至对于一些简单的系统,简单的在ip地址分配上做点文章就可以了。