> For the complete documentation index, see [llms.txt](https://bing.gitbook.io/phper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bing.gitbook.io/phper/distributed/mapreduce.md).

# Map Reduce

如果把研发工作比做 Map Reduce 过程，那么 leader 的职责便是扮演 master worker 的工作，按照worker的配置和属性，合理分配任务；对于worker的挂掉，需要实现容错能力，同时也应该有当总任务量变大的时候，通过扩展就能保持生产效率不下降的能力。

同时要能够提供一个完备的沟通方式、有时候是通过成员共享数据，有时候是通过成员的实质交流。信息要以最高的效率传递、加码和解码。

提前部署服务：

* map服务层：接收输入数据，产出“分”的数据，集群部署M=1W个实例
* reduce服务层：接受“合”的数据，产出最终数据，集群部署R=1W个实例

数据是移动的：

* 跨进程移动：数据从数据库和缓存里，转移到service层，到web-server层，到client层
* 同进程移动：数据从model层，转移到control层，转移到view层

分层架构演进”的核心原则与方法：

* 让上游更高效的获取与处理数据，复用
* 让下游能屏蔽数据的获取细节，封装
