Map & Reduce 与 消息队列形式的分发
Map & Reduce 是一种计算的模形
RabbitMQ是分配任务的的实现。
使用的方式是现实的问题,用map & reduce的计算模型去实现。写好怎么分配任务,怎么折分,写好map的函数,通过队列把任务分到很多map进程,写好reduce函数,把map的计算结果,折分出来,放到队列,队列再投放到reduce进程。这样方式,可以通过增加机器增加计算量,某种程度上对某些任务的分布式计算。
这里面实现的很多细节都是需要自己去定义的。
这样就可以专注于功能的开发,对计算量大的,可以以服务的形式独立出去。再写成分布式计算。
这是对架构具有关键性的一步,如果没有它,就意味着架构没法成长。后面,流量大了,可以增加机器很简单就可以解决问题。至此,再也不用担心架构超级大型的系统了,就是说,随着流量的增加,我的系统是可能过增加机器来增加算力,而且可以接近无法的扩展。
用rabbitMQ的一个很大好处,可以不局限用一种语言,我可以用任何语言来实现复杂的服务,但是还是具有可扩展性的,因为只要增加机器就可以进行扩展了,完全可以用原来的代码。
可以做出很复杂的应用,当一些服务很稳定,流量很大时,就可以独立开来,用分布式计算来实现。
能常程序之间的通迅是1:1, 但是这里面可以做到M:N,而且可以把任务分配到很多机器那里去。这里用队列来实现任务的分配。
这是一个非常棒的东西,它同时解决了两个问题,
一是服务流量增长的可扩展性,只要增加机器算力,就可以把问题给解决;
二,但同时也不行灵活性,因为可以用任何语言进行服务的开发,那样就完全可以使用动态语言进行快速开发。流量上来了,增加机器就搞定。到一定程度,可以换成更底层的语言来实现。