> 文档中心 > 2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
后台服务器:https://course.0voice.com/v1/course/intro?courseId=5&agentId=0


前言

日志采集平台,通过消息队列将登陆服务器、消息服务器、上课提示系统等服务的发送的消息进行解耦。各个服务有一个标志位对消息类别进行分类,最后都统一发送至日志分析平台进行分析。不错,不错。
2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

消息队列异步处理

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
同步处理如果每一个操作都需要50ms,最后累加在一起的时间肯定是要超过150ms的、相比较,异步处理可以减少100ms的响应时间,是不是很诱人呐。
2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
这句话很重要:使用消息队列隔离网管和后台服务,以达到流量控制和保护后端服务的目的。

消息队列两个作用:

  • 解耦
  • 缓存

1、Broker

MQ的服务器。

2、消息的生产者消费者

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

3、点对点消息队列模型:一个消息只能被一个消费者接收。线程池

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

4、发布订阅模型:每个模块都想读取同一个消息。

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

5、顺序性的保证

因为有消息通道2的存才,就要考虑到消息收到后的顺序性,所以应该考虑清楚。
2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

6、消息的ACK确认机制

ACK实时性与吞吐量之间是负相关的关系,此消彼长。

7、消息的持久化

消息队列宕机重启后,消息可以从持久化存储恢复,消息不丢失,可以继续消费处理。

8、消息的同步和异步收发

同步方式为一应一答。
异步方式消息的收发支持异步发送消息,不需要等待消息队列的接收确认。


2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
副本机制做可靠性处理。如果领导1宕机了,还可以从副本中读取出来,备胎机制。
如何处理副本一致性的问题?卡夫卡提供了很多可配置参数。

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
在我们每个分区里,都有独立的序号。不同的partition的offset是独立的。

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
生产者把消息发送到对应的leader中,Follower写入本地后会去应答leader。

2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理
offset顺序增长。
2022年6月6日记:Linux服务器开发,Darren老师,Kafka使用场景与设计原理

总结

今日简单的学习了kafka以及相关的内容,感觉完全不知道Darren老师在讲什么,讲到最后实在坚持不下去了。实在有必要从新学习这门课,经过这么长时间的努力自己20%都掌握不了,真的是惭愧啊。

麦克风网