推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[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
前言
日志采集平台,通过消息队列将登陆服务器、消息服务器、上课提示系统等服务的发送的消息进行解耦。各个服务有一个标志位对消息类别进行分类,最后都统一发送至日志分析平台进行分析。不错,不错。
消息队列异步处理
同步处理如果每一个操作都需要50ms,最后累加在一起的时间肯定是要超过150ms的、相比较,异步处理可以减少100ms的响应时间,是不是很诱人呐。
这句话很重要:使用消息队列隔离网管和后台服务,以达到流量控制和保护后端服务的目的。
消息队列两个作用:
- 解耦
- 缓存
1、Broker
MQ的服务器。
2、消息的生产者消费者
3、点对点消息队列模型:一个消息只能被一个消费者接收。线程池
4、发布订阅模型:每个模块都想读取同一个消息。
5、顺序性的保证
因为有消息通道2的存才,就要考虑到消息收到后的顺序性,所以应该考虑清楚。
6、消息的ACK确认机制
ACK实时性与吞吐量之间是负相关的关系,此消彼长。
7、消息的持久化
消息队列宕机重启后,消息可以从持久化存储恢复,消息不丢失,可以继续消费处理。
8、消息的同步和异步收发
同步方式为一应一答。
异步方式消息的收发支持异步发送消息,不需要等待消息队列的接收确认。
副本机制做可靠性处理。如果领导1宕机了,还可以从副本中读取出来,备胎机制。
如何处理副本一致性的问题?卡夫卡提供了很多可配置参数。
在我们每个分区里,都有独立的序号。不同的partition的offset是独立的。
生产者把消息发送到对应的leader中,Follower写入本地后会去应答leader。
offset顺序增长。
总结
今日简单的学习了kafka以及相关的内容,感觉完全不知道Darren老师在讲什么,讲到最后实在坚持不下去了。实在有必要从新学习这门课,经过这么长时间的努力自己20%都掌握不了,真的是惭愧啊。