假如有一项工作,要多步完成,每部都要处理数据并将处理后的数据给下一步处理,假如遇到如下情况
1 数据量很大
2 每一步的操作都很繁琐耗时
那么可以采用分布式体系来完整这个任务以提高效率
举例"一个有100万行的Excel表格,将每行数据读出来封装成一个实体,持久化到数据库中"
那么有两种可能的方案:
1 网络节点分布运算,第一台主机负责从Excel读取数据,并封装成Entity,第二个主机负责将Entity持久化到数据库中.两台主机用消息机制传输,主机1每生成一个Entity,就发送一次,不需要得到主机2持久化完成的信息才继续发第二个.
优点:容易控制事务,倘若100万条数据是一个整体,任何一个数据出错都应该回滚,那么所有持久化操作都在主机2上完成,主机2可以集中做事务控制.
缺点:无法拓展,无法根据未来数据变化而拓展,因为节点随着操作步骤而定,步骤一定节点数量一定.
2 网络节点分布数据,每一台主机都部署相同的操作,然后每台主机分布一定数量的数据,比如5台,每台负责20万条.
优点:可以根据现实情况灵活扩展,比如你觉得每台20万条慢,那么在加5台,调整到每台10万条,直到满意为止..
缺点:数据难以控制,如果100万是一个整体,一个主机失败,其他主机不知道,还有可能不同主机插入相同数据的错误操作.
我知道很多互联网应用采用第二种形势,比如MapReuse
[该贴被admin于2009-03-16 12:30修改过]