常见中间件

常见中间件

Zookeeper

ZooKeeper 是一个开源的分布式协调服务,它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

特点

  • 顺序一致性:从同一客户端发起的事务请求,最终将会严格地按照顺序被应用到 ZooKeeper 中去;
  • 原子性:所有事务请求的处理结果在整个集群中所有机器上的应用情况是一致的,也就是说,要么整个集群中所有的机器都成功应用了某一个事务,要么都没有应用;
  • 单一系统映像:无论客户端连到哪一个 ZooKeeper 服务器上,其看到的服务端数据模型都是一致的;
  • 可靠性:一旦一次更改请求被应用,更改的结果就会被持久化,直到被下一次更改覆盖。
  • 最终一致性:写操作最终(而非立即)会对客户端可见

常见功能

  1. 分布式锁:通过创建唯一节点获得分布式锁,当获得锁的一方执行完相关代码或者是挂掉之后就释放锁;
    • 依托于临时节点会在 C/S 之间关闭 Session 后自动删除的功能
  2. 命名服务:可以通过 ZooKeeper 的顺序节点生成全局唯一 ID;
    • 依托于 Zookeeper 的原子性与顺序性
  3. 数据发布/订阅:通过 Watcher 机制 可以很方便地实现数据发布/订阅。当你将数据发布到 ZooKeeper 被监听的节点上,其他机器可通过监听 ZooKeeper 上节点的变化来实现配置的动态更新。
    • 依托于 Zookeeper 的 Watch 机制

虽然以上功能主要依托于 ZooKeeper 可以保存数据和创建不同节点 (Znode) 的功能,但 ZooKeeper 并不适合保存大量数据,每个节点数据量最大是 1M。Zookeeper 主要功能是协调服务,不要存储大量数据在 Znode 上。

具体应用场景

  • Kafka: ZooKeeper 主要为 Kafka 提供 Broker 和 Topic 的注册以及多个 Partition 的负载均衡等功能;
  • Hbase: ZooKeeper 为 Hbase 提供确保整个集群只有一个 Master 以及保存和提供 regionserver 状态信息(是否在线)等功能;
  • Hadoop: ZooKeeper 为 Namenode 提供高可用支持。

使用

Curator 是 Netflix 公司开源的一套 ZooKeeper Java 客户端框架,相比于 Zookeeper 自带的客户端 zookeeper 来说,Curator 的封装更加完善,各种 API 都可以比较方便地使用。

Kafka

Kafka 是一个分布式流式处理平台,流平台一般具有三个关键功能:消息队列容错的持久方式存储记录消息流流式处理平台

特点

  • 性能较强:基于 Scala 和 Java 语言开发,设计中大量使用了批量处理和异步的思想,最高可以每秒处理千万级别的消息;
  • 兼容性较强:在大数据和流计算领域,与周边生态系统较为兼容。

常见功能

  1. 消息队列:建立实时流数据管道,以可靠地在系统或应用程序之间获取数据;
  2. 数据处理:构建实时的流数据处理程序来转换或处理数据流。

常见中间件
http://shijieq.github.io/2023/03/05/DistributedSystem/MicroService/常见中间件/
Author
ShijieQ
Posted on
March 5, 2023
Licensed under