很多Java开发同学经常有一个疑惑,搞Java开发也需要懂算法吗?本文咱们就来谈谈这个问题。
其实如果你开发一个非常复杂而且有挑战的大型系统,那么必然会在系统中使用算法。同理,如果你可以将算法进行合理的优化,那么也可以将系统性能提升几十倍!
空口无凭,下面用真实案例来进行说明。我们一起来看看Hadoop在部署了大规模的集群场景下,大量客户端并发写数据的时候,文件契约监控算法的性能优化。
Hadoop是世界上最复杂的基于Java开发的分布式系统,因此我们选用它来进行举例。从它的算法优化对系统性能的提升,就可以看出算法对于Java程序员们开发系统的重要性。
首先看懂这篇文章需要一些Hadoop的基础知识背景,了解其架构原理,所以还不太了解的同学,先看看之前的文章:《干掉几百行的大SQL,我用Hadoop》
先给大家来引入一个小的背景,假如多个客户端同时要并发的写Hadoop HDFS上的一个文件,大家觉得这个事儿能成吗?
明显不可以接受啊,兄弟们,HDFS上的文件是不允许并发的写的,比如并发的追加一些数据什么的。
所以说,HDFS里有一个机制,叫做文件契约机制
也就是说,同一时间只能有一个客户端获取NameNode上面一个文件的契约,然后才可以写入数据,此时其他客户端尝试获取文件契约的时候,就获取不到,只能干等着。通过这个机制就可以保证同一时间只有一个客户端在写一个文件。
在获取到了文件契约之后,在写文件的过程期间&