这次咱们从根源聊:16招搞定高并发架构设计(12)

有一点不能不提,有的时候整个系统虽然已经是一个大集群但是由于不合理的全局分布式锁还是串行在处理任务,这个时候横向扩展不能解决问题。

3、分区处理

又叫做Sharding、Partition,指的是把数据、任务进行分区,分发到不同的节点同时处理,提高并行度。

这点和拆分有一些相近,但是更多指的是想同的数据和任务需要批量循环处理的时候去做下分区,然后并行执行,应用这个思想的几个例子:

数据表的分表分库,然后由类似Proxy的中间件进行数据路由和汇总处理比如Java 8 parallelStream的思想把数据分成多份在不同的线程同时处理比如ConcurrentHashMap锁分段的思想,把全局的锁改为分段锁减少冲突分区不但能提高并行度使用更多的资源来处理数据而且还可以减少冲突,但是分区处理后最终还是需要Reduce的,这个过程的处理方式以及处理的损耗需要进行考虑。

而且每一个分区的处理速度不一定均衡,所以不能完全假设分成N份系统的执行速度就提高了N倍。

推荐阅读