主从节点

分布式节点

在分布式系统中,我们有多个参与者(有时称为进程,节点或副本)。每个参与者都有其自己的本地状态。参与者通过使用他们之间的通信链接交换消息来进行通信。

其实所谓分布式运算,核心的思路就是系统架构无单点,让整个系统可扩展。一般来说,分布式计算环境下的节点会分为有状态存储节点和无状态运算节点。

那么针对无状态节点,因为不存储数据,请求分发可以采取很简单的随机算法或者是轮询的算法就可以了,如果需要增加机器,那只需要把对应的运算代码部署到一些机器上,然后启动起来,引导流量到那些机器上就可以实现动态的扩展了,所以一般来说在无状态的节点的扩展是相对的容易的,唯一需要做的事情就是在某个机器承担了某种角色以后,能够快速的广播给需要这个角色提供服务的人说:“我目前可以做这个活儿啦,你们有需要我做事儿的人,可以来找我。”

而针对有状态节点,扩容的难度就相对的大一些,因为每台 Server 中都有数据,所以请求分发的算法不能够用随机或者是轮询了,一般来说常见算法就是哈希或者是使用 Tree 来做一层映射,而如果需要增加机器,那么需要一个比较复杂的数据迁移的过程,而迁移数据本身所需要的成本是非常高的,这也就直接导致有状态节点的扩容难度比无状态节点更大。

针对有状态节点的难题,我们提供了一套数据自动扩容和迁移的工具来满足用户的自动扩容缩容中所产生的数据迁移类的需求。于是,无论是有状态的数据节点的扩容,还是无状态的数据节点的自动扩容,我们都可以使用自动化工具来完成了。

Google 在 03-06 年发布了关于 GFS、BigTable、MapReduce 的三篇论文,开启了大数据时代。在发展的早期,就诞生了以 HDFS/HBase/MapReduce 为主的 Hadoop 技术栈,并一直延续到今天。

最开始大数据的处理大多是离线处理,MapReduce 理念虽然好,但性能捉急,新出现的 Spark 抓住了这个机会,依靠其强大而高性能的批处理技术,顺利取代了 MapReduce,成为主流的大数据处理引擎。 随着时代的发展,实时处理的需求越来越多,虽然 Spark 推出了 Spark Streaming 以微批处理来模拟准实时的情况,但在延时上还是不尽如人意。2011 年,Twitter 的 Storm 吹响了真正流处理的号角,而 Flink 则将之发扬光大。 到现在,Flink 的目光也不再将自己仅仅视为流处理引擎,而是更为通用的处理引擎,开始正面挑战 Spark 的地位。