原文:http://blog.csdn.net/hawksoft/article/details/7192207
其实任何简单的问题,只要规模大了都会成为一个问题,就如中国人口多,很多小问题都会变成大问题一样。但处理这种海量数据的方法无非就是分治和”人海”战术。使用人海战术的前提是问题的划分能够支持这种人海战术,其手段无非是切割(纵向,横向)和负载均衡。纵向分隔主要是按业务(功能)来分,也就是所谓面向服务架构,横向分隔方式比较多,主要依赖于所处理的对象属性,比如时间属性或者特定业务数据属性划分(比如铁路客票的车次(每个车次的操作基本上是独立的));负载均衡则可以是镜像(部署)分布(同样的功能部署几份)和计算分布(一个问题分几个子问题在不同的机器上运行,然后合并结果)。当然,这些手段是可以综合利用的,最终可以做成多流水线分布式计算模式。另一方面,在海里数据面前,通用的数据处理方式会很困难,高效的方法基本都是有业务针对性和数据针对性的。
1)海量数据处理的基本思想:分治(这种思想在日常生活中无处不在,蚂蚁都知道,一次运不完,分多次运)
2)海量数据处理的基本手段:切割和负载均衡(切割是降低规模,负载均衡是人海战术,人多力量大,同样,机器多也计算能力强)
3)海量数据处理的可靠性保障:多存几份(再好的机器也会坏,鸡蛋不要放在一个篮子里)
4)海量数据处理的最高境界:多流水线并行作业(很多工厂都这样干,用在计算机也没问题)
5)海量数据处理的最好方法:没有最好,只有适合(什么都想做好,基本等于什么都做不好)
....
至于高并发处理,最好的解决办法是针对特定的需求采用特定的方法,基本的方法包括加锁,排队等等。另外一个关键就是要尽量简化事务和减少事务。
有这种意识,只要去想,总能解决,没必要把这些技术搞得很神,从技术上来讲,海量数据处理所涉及的思想和算法都不是很难。
PS:这些天很多人都在鄙视铁路网上售票系统,也有很多人在为其出主意,我觉得没必要,真的,这些思想和技术不是很难的,至少我都能想到,做网上售票的这般兄弟姐妹也一定可以想到,至于为什么是这个结果,他们也只是“被”没技术。铁路是讲政治的地方,何苦皇帝不急太监急呢?
数据划分补充:如果按时间划分,2种情况,分数据库(早期很多企业级级业务系统,特别是财务系统都是这样做),分表(这种一般只针对特定业务表来进行)。按时间划分的时候需要注意单笔业务跨时间段得问题(很多软件都是在通过关帐开账把这种数据转到新的时间段里)。
2012-1-11:补充数据划分,按特定属性划分,用得最多的是按数据归属来划分,比如原来的帐套,现在云计算下的多租赁用户ID(企业用户ID),这种方式可以在三种级别上(表级,数据库(Oracle分用户)级,物理级(多数据库实例))实现,注意点缓存的话,利用负载均衡,可以无限扩展。这种基于现有数据库的模式,可靠性保证只能用数据库本身来实现,虽然用软件也可以实现同一份数据多地方存储,但比较复杂。另外,利用数据库的链接也可以实现纵向分库存放,而且对应用透明,但这种方式维护起来比较麻烦,很多时候也没有必要。(Oralce和SQLServer都可以,而且不同库之间还可以Join,看起来很方便,但不建议,业务紧密联系的还是要放在一起,不同库之间还是不要采用链接上Join,直接在内存中参照还快些)
上面都是说,等过两天有时间,我把我做的架构demo放出来,当然正式版是不能放的(也还没有),那也是公司的版权。
补充两个图:
相关推荐
高并发海量数据解决方案,高并发海量数据解决方案.
Oracle、DB2和SQL Server 2005等都是处理海量数据的优秀选择,它们提供了高性能、高并发和大规模数据存储的能力。在BI(商业智能)领域,ETL(抽取、转换、加载)工具如Informatica和多维数据库如Essbase等,可以...
海量数据处理是一个持续增长的研究领域,在电力数据采集系统中尤为显著。本文探讨了在这样的大型系统中,如何应用内存数据库系统以应对海量数据实时处理的挑战。为了保证数据的实时性和系统的高效性,需要对内存...
### 大型网站应用之海量数据和高并发解决方案 #### 一、网站应用背景 随着互联网的迅猛发展,用户数量激增,对于网站而言,如何高效处理海量数据及应对高并发访问成为了关键技术挑战之一。在初期阶段,一个简单的...
在IT行业中,高并发、分布式、高可用...总的来说,理解并掌握高并发、分布式、高可用、微服务和海量数据处理的知识,对于Java开发人员来说至关重要,这将帮助他们构建出适应互联网时代需求的高效、稳定、可扩展的系统。
的高并发和实时处理数据,数据模型,工作流程等。(一)HDFS主要是用于做什么的?HDFS(HadoopDistributedFileSystem)分布式文件管理系统、是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流...
总之,海量数据处理与高可用性方案的核心在于通过数据库优化、分区策略和智能负载均衡技术的综合运用,以提升系统性能和稳定性。这不仅涉及到单个技术的运用,还包括了对整个系统架构的全面考量。采用这些方法,可以...
在J2EE环境中,处理高并发和海量数据是一项复杂而重要的任务。这涉及到多个方面的技术栈,包括系统架构设计、数据库优化、缓存策略、负载均衡以及分布式计算等。以下是一些关键的知识点: 1. **系统架构设计**:...
面试中,关于海量数据处理的问题往往占据着举足轻重的地位,特别是在涉及秒杀系统、高并发处理和多线程应用的场景中。本文件《海量数据处理面试题.pdf》通过一系列面试题的分析,试图向读者提供一个关于海量数据处理...
总结来说,本“海量数据处理文档集合”涵盖的内容广泛,从数据库性能优化到分布式数据库设计,再到大数据处理框架和NoSQL技术,以及数据预处理和可视化,为读者提供了全面了解和掌握海量数据处理技术的宝贵资源。...
- **电子商务网站的特点**:这些网站通常具有高并发性、数据实时性和准确性要求高的特性,页面多为动态生成,包含大量图片,并依赖于搜索引擎等渠道吸引流量。读操作远多于写操作,业务量增长迅速。 #### 二、数据...
内容涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。我们对这部分知识做了一个系统的整理,方便读者们学习查阅。 我们也在全力更新算法项目!如果你在准备笔面试算法,或者想进一步提升 coding 能力...
文章《基于Hadoop的PB级海量数据处理系统的设计与实现》详细介绍了如何利用Hadoop技术搭建集群平台,用以应对PB级海量数据的存储和处理问题。搭建的集群平台显著提升了系统处理海量数据的能力,具体体现在对1PB级别...
本教程旨在为Java工程师提供全面的进阶知识,帮助他们提升在高并发、分布式、高可用、微服务以及海量数据处理等关键领域的专业技能。 1. **高并发处理**: 高并发是互联网应用的常态,Java工程师需要理解线程池的...
综上所述,面对海量数据处理的需求,现代的大数据处理平台采用了多种先进技术,如高效的数据采集工具、分布式文件系统等,来确保数据的快速收集、安全存储和高效处理。这些技术不仅提高了数据处理的效率,也为从海量...
例如,Hadoop提供了一个分布式文件系统(HDFS),适合存储和处理海量数据。MapReduce是Hadoop的核心组件,用于执行分布式计算任务。Java程序员可以轻松地编写MapReduce作业,利用集群资源处理大规模数据。 此外,...
综上所述,解决网站海量数据和高并发问题通常需要结合多种策略,包括但不限于缓存、静态化、数据库优化、负载均衡、分布式架构和异步处理等。具体实施时,需根据业务需求和现有基础设施进行选择和定制。