关于.net分布式系统设计的问题,谢谢诸位

时间:2022-09-22 22:32:21
1)如果我的应用程序分为了 表示层,业务层,数据访问层,这时我想通过"分布式"来进一步提高性能(数据库当然会放在单独的机子上),如果直接把这三个层分别放在不同的计算机上这虽然也"分布"了,可反而影响了应用程序的性能,因为这样会往返掉用跨进程/应用域的对象,所以这种部署不算成功的分布式,这种情况我理解对了吗?
如果将整个应用程序放在两个不同的计算机上,然后通过"负载平衡器"来选择适当的服务器,这也属于“分布”了吗?哪种做法要标准点,才符合分布式系统的设计原则呢?或者是还有其它什么部署分布式的方法呢?

2)对整个应用程序而言是否用一台计算机工作(不使用分布式)要比用几台计算机一起并行工作(使用分布式)的速度慢呢?我对这些理解还比较含糊.如果几台机子一起工作的话会调用跨进程/应用域的对象,这样也影响了性能呀,可有些书上又认为分布式会提高性能。到底该怎么理解这些呢?

注:以上部署成"分布式"的目的主要想提高应用程序性能,不涉及到会调用不同计算机上的数据。我想知道些成功的部署方式.
谢谢

14 个解决方案

#1


up

#2


up

#3


我觉得数据访问量不是很大的话,是可以放在同一台电脑上的。如果访问量大的话,我想放在不同的服务器上肯定是好的选择。

#4


那是因为你没见过大得你不能想象的系统。
打个比方,比如某个运算一颗CPU处理的时间为60秒,而这个运算里是分好几块的,那我把各块分到几台上一起同时运算(当然,这个怎么分也是个大问题了,要考虑到同步和先后的问题等),然后把结果放到一台机器上。虽然这会浪费点网络传输的时间,但是还是比一台机器运算快N倍。 
个人愚见。 ^_^

#5


楼主对分布式计算概念的理解有问题

#6


up~~

#7


up

#8


分布好象不是这么说的吧!几台这么少用不着吧!

象找外星人那项目搞分布才经典,hoho!

分布毕竟分摊了运算负荷

#9


在.net中一个解决方案中可以由多个模板项目,一个模版项目下面可以由多个项目。这些项目可以分布在多台服务器上。对于每一个项目都可以分布在不同的机器上。我认为对于表示层和数据访问层的多物理地址的分布,可以从运算负载的角度去考虑。但是对于业务层的分布,也许可以考虑更多的因素。比如权限、并发等。有很多情况来决定系统的分布,比如一个生产管理的情况,计算生产计划是一个很复杂的运算过程,一般情况下需要几个小时。很多实际应用都放在数据库服务器中通过存储过程来计算,但是这种情形下客户端只是等待,他的计算能力没有被充分利用。在多层模式下可以考虑放在多个业务层来实现,但这是要仔细考虑各个业务节点的同步。我做系统会将表示层独立出来,特别是web应用。接下来就是看看业务层的利用情况。假如业务层逻辑复杂、计算多的话就会考虑独立出应用服务器,可能会有多个。在很多的信息系统中,如果充分的利用了业务层的计算能力,数据访问层就可以简单一些。这一切都在于对业务层的利用情况。

#10


up

#11


...

#12


up

#13


采用分布式架构,虽然有象楼主说的有一些性能上的损失,然而通过硬件的扩充可以换取的更大的性能提升以及灵活的系统扩展性。

#14


可以通过.NET的 WEB服务来实现分布式管理吧???

#1


up

#2


up

#3


我觉得数据访问量不是很大的话,是可以放在同一台电脑上的。如果访问量大的话,我想放在不同的服务器上肯定是好的选择。

#4


那是因为你没见过大得你不能想象的系统。
打个比方,比如某个运算一颗CPU处理的时间为60秒,而这个运算里是分好几块的,那我把各块分到几台上一起同时运算(当然,这个怎么分也是个大问题了,要考虑到同步和先后的问题等),然后把结果放到一台机器上。虽然这会浪费点网络传输的时间,但是还是比一台机器运算快N倍。 
个人愚见。 ^_^

#5


楼主对分布式计算概念的理解有问题

#6


up~~

#7


up

#8


分布好象不是这么说的吧!几台这么少用不着吧!

象找外星人那项目搞分布才经典,hoho!

分布毕竟分摊了运算负荷

#9


在.net中一个解决方案中可以由多个模板项目,一个模版项目下面可以由多个项目。这些项目可以分布在多台服务器上。对于每一个项目都可以分布在不同的机器上。我认为对于表示层和数据访问层的多物理地址的分布,可以从运算负载的角度去考虑。但是对于业务层的分布,也许可以考虑更多的因素。比如权限、并发等。有很多情况来决定系统的分布,比如一个生产管理的情况,计算生产计划是一个很复杂的运算过程,一般情况下需要几个小时。很多实际应用都放在数据库服务器中通过存储过程来计算,但是这种情形下客户端只是等待,他的计算能力没有被充分利用。在多层模式下可以考虑放在多个业务层来实现,但这是要仔细考虑各个业务节点的同步。我做系统会将表示层独立出来,特别是web应用。接下来就是看看业务层的利用情况。假如业务层逻辑复杂、计算多的话就会考虑独立出应用服务器,可能会有多个。在很多的信息系统中,如果充分的利用了业务层的计算能力,数据访问层就可以简单一些。这一切都在于对业务层的利用情况。

#10


up

#11


...

#12


up

#13


采用分布式架构,虽然有象楼主说的有一些性能上的损失,然而通过硬件的扩充可以换取的更大的性能提升以及灵活的系统扩展性。

#14


可以通过.NET的 WEB服务来实现分布式管理吧???