上面架构图分为五层,详细解释如下:
第一层,数据采集层
最左边的是业务服务器集群,上面安装了filebeat做日志采集,同时把采集的日志分别发送给两个logstash服务。
第二层,数据处理层,数据缓存层
logstash服务把接收到的日志通过格式处理,转存到本地的kafka broker+zookeeper集群中。
第三层,数据转发层
这个单独的logstash节点会实时去kafka broker集群拉取数据,转发至ES DataNode。
第四层,数据持久化存储
ES DateNode会把收到的数据,写入磁盘,并建立索引库。
第五层,数据检索,数据展示
ES Master+Kibana主要协调ES集群,处理数据检索请求,数据展示。
消息队列介绍
在计算机科学中,消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮(zhu)列
来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的记录包含详细说明的数据,包含发生的
时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接受者不需要同时与消息队列交互,消息会保存在队列
中,直到接收者取回它。
消息队列主要解决应用耦合、异步处理、流量削锋等问题
当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、kafka、ZeroMQ、MetaMQ等,而部分书库如Redis、MySQL
以及phxsql也可以实现消息队列的功能
2.消息队列主要应用的场景有哪些?
消息队列在实际应用中包括如下场景:
• 应用耦合:多应用间通过消息队列对同一消息进行处理, 避免调用接口失败导致整个过程失败;
• 异步处理:多应用对消息队列中同一消息进行处理, 应用间并发处理消息, 相比串行处理, 减少处理时间;