转自:https://blog.csdn.net/xiaoliuliu2050/article/details/53375839

 

其实,一个复杂的分布式系统可以通过搭积木的方式来建立,每个积木就是一个中间件,可通过适当的代码将其黏合在一起。

ZooKeeper 

    ZooKeeper 提供基础的目录/名字服务、配置管理服务。并且在此基础上还能提供分布式锁、leader选举等高级功能。网上有一段有趣生动的介绍:“ZooKeeper,顾名思义就是动物园里大象(hadoop)、蜜蜂(Hive)、小猪(Pig)、和我的猫(MyCat)的管理员”。

    客户端建议采用Apache Curator这个二次封装的客户端来进行客户端代码的编写,它封装和简化了很多于业务无关的逻辑,使用简单,质量可靠。

 

Apache Kafka

    Kafka是一个高吞吐量的分布式消息系统,由LinkIn开源,被描述为LinkeIn的“中枢神经系统”。Kafka管理从各个应用程序汇聚到此的信息流,这些数据经过处理后再被分发到何处。

    Kafka使用Scala开发,而Scala又是JVM上运行的动态需要,因此对会Java的同学来说学习难度并不大,其客户端也支持Java语言,比较容易部署在本机上进行学习研究。

 

Facebook Thrift

    Facebook Thrift是最新一代高性能、跨需要的RPC通信框架,支持多种语言。

    Facebook Thrift与Ice类似,不过没有Ice完整和成熟。与Facebook Thrift类似的还有Apache Avro。

 

Apache Storm、Spark Streaming 、Samza

    与Hadoop相比Storm是个实时的高容错的分布式计算系统。Storm也可以处理批量数据,但其在保证高可靠性的前提下还可以让处理进行得更加实时,所有的信息都会被处理。Storm同样还具备容错和分布计算的特性,这让Storm可以扩展到不同的机器上进行大批量的数据处理。

   Storm的主要开发语言为Java,并且包括了Clojure这种Lisp语言,对于Java工程师来说,学习难度并不大。与Strom类似的还有Spark Streaming、LinkIn的Samza,它们都是最近开源的热门项目。

    Spark Streaming是Spark中新的流式计算框架。Spark并不会像Strom那样一次处理一个数据流,而是在处理前按时间间隔预先将其分为一段段的批处理作业。

    而Samza处理数据流时,会依次处理收到的每条消息。Samza的流单位既不是元组,也不是Dstream而是一条条消息。

    Strom、Spark Streming、Samza这三种实时流计算系统都是分布式系统,具有低延迟、可扩展和容错性等诸多优点。它们的共同特同特色在于:允许你在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行运行,此外,它们都提供了简单的API来简化底层实现的复杂程度。

 

MyCat

    MyCat是一个基于MySQL的分表分库的中间件软件,也可以说是一个分布式数据库,其前身为阿里巴巴开源的Cobar,但由于阿里巴巴后来发展云平台并提供收费RDS服务,因此最终关闭了这个开源项目。然后国内一帮技术大拿一起发起了MyCat开源项目 ( http : / / www my cat org. cn ),目标是成为Apache旗下的顶级中国开源项目。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐