PPTMQ.pptx
性跟踪,监控数据
Erlang、NET、Ruby、Node.JS、PHP ..Java、C、C++、Python、PHP、Perl
(就理解成一条条的刷,这里的优化只是channel级别的优化)
可靠性比较是否支持多个消费者一个topic支持多个消费者(一个消费者可消费多个分区,一个分区可被多个消费组消费,但同一消费组内仅能有一个消费者同时消费1个分区)根据模式匹配
N个副本,允许N-1个失效:
master失效以后自动从ISR中选一个为主.自动切换:
最早加入的slave会成为master.
新加入的slave回去同步之前master的数据,
但如果一直不能同步,可能会出现部分数据丢失.
支持producer的单条发送、同步刷盘、异步复制好:
producer同步、异步ack,支持队列数据持久化,镜像模式中支持主从同步
单机10w+/s
集群: 取决于规模单机: 2w/s
集群: 4w/s
但是这样会不会有什么问题呢?如果一条消息发送出去之后就立即被标记为消费
过的,一旦 consumer 处理消息时失败了(比如程序崩溃)消息就丢失了使用Trace实现,Trace是Rabbitmq用于记录每一次发送的消息,方便使用Rabbitmq的开发者调试、排错。可通过插件形式提供可视化界面。Trace启动后会自动创建系统Exchange:amq.rabbitmq.trace ,每个队列会自动绑定该Exchange,绑定后发送到队列的消息都会记录到Trace日志
消息存储在log中,每个分区由一个或多个segment log文件 生产者、消费者正常时,性能表现稳定;
消费者不消费时,消息堆积,可能会出现性能不稳定
followers从leader中pull数据.
pull到数据后先ack 到leader,然后写入log中。普通模式下不复制;
消息写先到master,然后写到slave上。
加入集群之前的已经到达的message不会被复制到新的slave上。
消息将被标记 为删除(当内存少于40%,触发gc,将进行merge然后删除。)
第三方开源工具可供使用。官方提供 rabbitMQ- ui 界面
1.身份认证:client 与服务器的连接进行身份认证,brokers和zookeeper之间的连接进行Authentication(producer 和 consumer)、其他 brokers、tools与 brokers 之间连接的认证。
2. 权限控制:(生产/消费/group)数据权限支持
角色绑定自定义virtual hosts来控制数据的读写
Admin | Monitoring | Policymaker
Management | Impersonator
producer
Brokers
leader/follower: ISR.HW
Topic、Partition:logSize
Consumer Groups/Consumer: Offset、Lag等信息
Connections、
Channels、
Virtual Host
Exchanges、
BindingKey
Queues
exchange和queue之间的虚拟连接,binding中可以包含routing key。Binding信息被保存到exchange中的查询表中,用于message的分发依据。
publisher/consumer和broker之间的TCP连接。断开连接的 *** 作只会在client端进行,Broker不会断开连接,除非出现网络故障或broker服务出现问题。
消息最终被送到这里等待consumer取走。一个message可以被同时拷贝到多个queue中。
1.Topic、Consumer Group列表;
2.图形化展示topic和consumer之间
的关系:
3.图形化展示consumer的Offset、Lag等信息Exchange:
message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到queue中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)。
Preferred leader:
Brokers Spead:使用率
Brokers Skew: 是否倾斜
Brokers Leader Skew:partition是否倾斜
Lag:消息是否堆积产生延迟Channel:
如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销将是巨大的,效率也较低。Channel作为轻量级的Connection极大减少了 *** 作系统建立TCP connection的开销。
分布,分区分布);
2.产生分区分配(Generate partition
assignments)
3.基于集群的当前
状态:重新分配分区Virtual host:
出于多租户和安全因素设计的,提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等。
套设施管理界面较丰富,在互联网公司也有较大规模的应用;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)