zoukankan      html  css  js  c++  java
  • 消息中间件

    首先我们需要明确地提出消息中间件的几个重要角色,分别是生产者、消费者、Broker、注册中心。

    简述下消息中间件数据流转过程,无非就是生产者生成消息,发送至 Broker,Broker 可以暂缓消息,然后消费者再从 Broker 获取消息,用于消费。

    而注册中心用于服务的发现包括:Broker 的发现、生产者的发现、消费者的发现,当然还包括下线,可以说服务的高可用离不开注册中心。

    然后开始简述实现要点,可以同通信讲起:各模块的通信可以基于 Netty 然后自定义协议来实现,注册中心可以利用 zookeeper、consul、eureka、nacos 等等,也可以像 RocketMQ 自己实现简单的 namesrv (这一句话就都是关键词)。

    为了考虑扩容和整体的性能,采用分布式的思想,像 Kafka 一样采取分区理念,一个 Topic 分为多个 partition,并且为保证数据可靠性,采取多副本存储,即 Leader 和 follower,根据性能和数据可靠的权衡提供异步和同步的刷盘存储。

    并且利用选举算法保证 Leader 挂了之后 follower 可以顶上,保证消息队列的高可用。

    也同样为了提高消息队列的可靠性利用本地文件系统来存储消息,并且采用顺序写的方式来提高性能。

    可根据消息队列的特性利用内存映射、零拷贝进一步的提升性能,还可利用像 Kafka 这种批处理思想提高整体的吞吐。

  • 相关阅读:
    kubernetes集群部署
    kubernetes创建资源的两种方式
    kubernetes架构
    kubernetes简介
    iOS判断对象相等 重写isEqual、isEqualToClass、hash
    iOS宏和__attribute__
    iOS文档注释
    iOS-Runtime知识点整理
    RunLoop和autorelease的一道面试题
    创建控制器的方法、控制器加载view过程、控制器view的生命周期、多控制器组合
  • 原文地址:https://www.cnblogs.com/wesson2019-blog/p/13810317.html
Copyright © 2011-2022 走看看