当前位置:编程学习 > C#/ASP.NET >>

大数据量问题

 由于程序处理的数据量很大,想用两台服务器分摊负载,以前没这方面的经验,想问一下这个可行性,是在硬件方面做还是在编写代码的时候实现?编写代码怎么实现? --------------------编程问答-------------------- 自己先顶一下 --------------------编程问答-------------------- 高手都哪里去了啊??? --------------------编程问答-------------------- 要沉了??、 --------------------编程问答-------------------- 估计高手还没有在电脑旁啊
觉得楼主还是要描述清楚点


程序处理数据量大 

量级是多少,处理数据的 是 存储过程 还是 C# --------------------编程问答-------------------- 问题太笼统了。
--------------------编程问答-------------------- 数据库需要两台服务器,还是application需要两台服务器?
web还是windows application? --------------------编程问答--------------------
引用 6 楼 findcaiyzh 的回复:
数据库需要两台服务器,还是application需要两台服务器?
web还是windows application?

windows application  ,application需要两台服务器 --------------------编程问答--------------------
引用 4 楼 u011096386 的回复:
估计高手还没有在电脑旁啊
觉得楼主还是要描述清楚点


程序处理数据量大 

量级是多少,处理数据的 是 存储过程 还是 C#


这个程序主要是采集底层数据的,也就说仪表数据,大约几万条,并发的,我们这个程序主要是采集数据,经过一道处理,然后以多种形式转发出去,我说的两台服务器只是在采集数据和对数据进行处理 --------------------编程问答-------------------- 补充一下,我想知道,你们平时做的时候,面对大数据量处理的时候,都是怎么做的? --------------------编程问答-------------------- 帮顶,帮顶,帮顶,帮顶,帮顶 --------------------编程问答--------------------
引用 5 楼 findcaiyzh 的回复:
问题太笼统了。


我们这边主要是从一些仪表,实时数据库,以及通过一些协议行设备中取实时数据,大约几万条并发数据,
进过处理然后以多种方式将数据转发出去。在取数和处理数据的时候,我们打算用两台服务器分担一下压力,要求能做到,两台机子工作正常的时候能相互分担负载,有个机子崩了,另一个能把崩了的机子的负载转过来,能做到继续全部取数。就这俩要求,我看了均衡负载跟热备份都是只能满足一方面的需求,我想知道编写代码能不能实现?具体怎么实现? --------------------编程问答--------------------
引用 4 楼 u011096386 的回复:
估计高手还没有在电脑旁啊
觉得楼主还是要描述清楚点


程序处理数据量大 

量级是多少,处理数据的 是 存储过程 还是 C#

我们这边主要是从一些仪表,实时数据库,以及通过一些协议行设备中取实时数据,大约几万条并发数据,
进过处理然后以多种方式将数据转发出去。在取数和处理数据的时候,我们打算用两台服务器分担一下压力,要求能做到,两台机子工作正常的时候能相互分担负载,有个机子崩了,另一个能把崩了的机子的负载转过来,能做到继续全部取数。就这俩要求,我看了均衡负载跟热备份都是只能满足一方面的需求,我想知道编写代码能不能实现?具体怎么实现? --------------------编程问答-------------------- Load balancing可以吧,如果一台机器崩溃了,全部request都会转到另一台机器上。

将采集和处理剥离开来,估计采集比较难做到分布到多台机器上。处理应该可以,前提是request之间不能有状态,不能互相依赖。多台机器进行处理,用load balancing转发request. 

自己写程序也可以,但是侦测压力是个问题。一般只能做到平均分配。 --------------------编程问答--------------------
引用 13 楼 findcaiyzh 的回复:
Load balancing可以吧,如果一台机器崩溃了,全部request都会转到另一台机器上。

将采集和处理剥离开来,估计采集比较难做到分布到多台机器上。处理应该可以,前提是request之间不能有状态,不能互相依赖。多台机器进行处理,用load balancing转发request. 

自己写程序也可以,但是侦测压力是个问题。一般只能做到平均分配。



均衡负载可以做到一台机子崩了,能将负载转到另一台机子上?如果我程序采集数据的时候,用到负载均衡,是不是我两个机子都得跑我的程序?我得在程序内部把采集部分给分开,一个机子采集一部分,一个机子崩了之后,负载均衡能把将所有的请求转到好的那个机子上集训运行? --------------------编程问答--------------------
引用 13 楼 findcaiyzh 的回复:
Load balancing可以吧,如果一台机器崩溃了,全部request都会转到另一台机器上。

将采集和处理剥离开来,估计采集比较难做到分布到多台机器上。处理应该可以,前提是request之间不能有状态,不能互相依赖。多台机器进行处理,用load balancing转发request. 

自己写程序也可以,但是侦测压力是个问题。一般只能做到平均分配。


补充一点,如果能做到,这个转请求部分是自动的还是我要做什么设置每次都去修改? --------------------编程问答--------------------
引用 13 楼 findcaiyzh 的回复:
Load balancing可以吧,如果一台机器崩溃了,全部request都会转到另一台机器上。

将采集和处理剥离开来,估计采集比较难做到分布到多台机器上。处理应该可以,前提是request之间不能有状态,不能互相依赖。多台机器进行处理,用load balancing转发request. 

自己写程序也可以,但是侦测压力是个问题。一般只能做到平均分配。


自己写程序的话,怎么实现?有没有什么例子看一下? --------------------编程问答-------------------- 涉及到大数据量,往往没有通用的架构和技术
只能说有一些大方向上的架构和技术,比如负载均衡,集群等
但是实际上这个负载该复合分摊,从哪里开始分摊,是不是从业务上有更好的方法来分摊
都与你的具体业务相关联。

比如,你手机几十万个仪表的数据,是不是可以让编号0到10000的请求发送到A,10000到20000的请求发送到B?

所以你要先分析,理顺你的数据流程,业务流程,然后定制出适合你的处理方式。 --------------------编程问答--------------------
引用 17 楼 kingdomgps 的回复:
涉及到大数据量,往往没有通用的架构和技术
只能说有一些大方向上的架构和技术,比如负载均衡,集群等
但是实际上这个负载该复合分摊,从哪里开始分摊,是不是从业务上有更好的方法来分摊
都与你的具体业务相关联。

比如,你手机几十万个仪表的数据,是不是可以让编号0到10000的请求发送到A,10000到20000的请求发送到B?

所以你要先分析,理顺你的数据流程,业务流程,然后定制出适合你的处理方式。

仪表数据是写程序自己或取得,这个是可以设置一个机子采集哪部分的,我想知道的是一个机子崩了,如何让这个不备份自动转化到好的自己上,继续执行啊? --------------------编程问答-------------------- 若想做集群,可以参考jgroup的实现。
客户端节点注册到集群中,节点之间通过ping等方式获取存活状态。
每次有新节点注册或者注销,则集群内的所有节点重新分配采集任务。(一个机子崩了,通过这种方式让这个不备份自动转化到好的自己上)。
集群内,需要有一台主控节点来主持大局;若主控节点挂了,则任意一个节点升级为主控。
详细的思路还是建议参考jgroup。 --------------------编程问答-------------------- windows服务器版本,任何一般应该都已经内置有免费的负载均衡服务功能。你可以看个教程看看如何配置。

也可以选择一款linux下的轻量级、流行产品。

总之软件解决方案,比买一个复杂均衡器硬件省了几十万块钱,实在是太划算了。 --------------------编程问答-------------------- 任何一般应该都已经内置有免费的负载均衡服务功能 -->  win2003开始任何一版应该都已经内置有免费的负载均衡服务功能 --------------------编程问答-------------------- 如果你“编写代码时实现”,那么我建议你设计为傻瓜化、简单化的机制,不要像人家产品那样去设计,因为你也没有那样“不可改变客户端”的强烈约束,因此你可以轻松地稍微改变一下客户端流程就用可靠地、低成本地保证高效率。

你的每一个客户端可以先访问一个“分配器”服务,获取真正应该连的服务器的ip,然后就一直连着同一个服务器。直到客户端发现断网,它重新连服务器时才可能连别的服务器。 --------------------编程问答--------------------
引用 19 楼 mmking33 的回复:
若想做集群,可以参考jgroup的实现。
客户端节点注册到集群中,节点之间通过ping等方式获取存活状态。
每次有新节点注册或者注销,则集群内的所有节点重新分配采集任务。(一个机子崩了,通过这种方式让这个不备份自动转化到好的自己上)。
集群内,需要有一台主控节点来主持大局;若主控节点挂了,则任意一个节点升级为主控。
详细的思路还是建议参考jgroup。


因为我对集群没什么概念,所以我想问一下,节点之间可以通过ping来获取存活状态,我程序如何感知一个机子崩了?以及崩了之后怎么将所有请求转到好的那个机子上?这部分是自动的不需要每次都自己设置吗? --------------------编程问答--------------------
引用 21 楼 sp1234 的回复:
任何一般应该都已经内置有免费的负载均衡服务功能 -->  win2003开始任何一版应该都已经内置有免费的负载均衡服务功能


均衡负载,我现在迷糊的部分在于,均衡负载怎么跟我程序结合?均衡负载可以感知一个机子崩了,但我程序能否通过均衡负载感知?如何将所有请求转到另一个好的机子上去? --------------------编程问答--------------------
引用 22 楼 sp1234 的回复:
如果你“编写代码时实现”,那么我建议你设计为傻瓜化、简单化的机制,不要像人家产品那样去设计,因为你也没有那样“不可改变客户端”的强烈约束,因此你可以轻松地稍微改变一下客户端流程就用可靠地、低成本地保证高效率。

你的每一个客户端可以先访问一个“分配器”服务,获取真正应该连的服务器的ip,然后就一直连着同一个服务器。直到客户端发现断网,它重新连服务器时才可能连别的服务器。


能否说的详细点?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,