zookeeper+kafka

一、zookeeper

1.概述

        zoo: 开源的分布式框架协调服务

        zookeeper的工作机制:基于观察者模式设计的分布式结构,负责存储和管理架构当中的元信息,架构当中的应用接受观察者的监控,一旦数据有变化,通知对应的zookeeper,保存变化的信息。

2.特点

  • 最少要有三台机器,一个领导者(leader),多个跟随者(follower)
  • zookeeper要有半数以上的节点存活,整个架构就可以正常工作,所以都是奇数台部署
  • 全局数据一致
  • 数据更新的原子性:要么都成功,要么都失败
  • 实时性

3.zookeeper的数据架构  

  • 统一命名服务:不是以ip来记录,可以用域名也可以是主机名来记录信息。
  • 统一配置管理,所有的节点信息的配置要是一致。
  • 统一集群管理,在整个分布式的环境中,必须实时的掌握每个节点的状态,如果状态发生变化,要及时更新。

4. 实验

192.168.206.30

192.168.206.50

192.168.206.55

tar -xf apache-zookeeper-3.5.7-bin.tar.gz

apt -y install openjdk-8-jre-headless #安装依赖环境

java -version

mv apache-zookeeper-3.5.7-bin zookeeper

cd /opt/zookeeper/conf

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

#如下图所示

server.1=192.168.233.30:3188:3288

server.2=192.168.233.50:3188:3288

server.3=192.168.233.55:3188:3288

1:指的是服务器的序号

192.168.233.30 对应序号的服务器的ip地址

3188 leader和follower之间交换信息的端口

3288 选举端口

mkdir /opt/zookeeper/data

mkdir /opt/zookeeper/logs

useradd -m -s /sbin/nologin zookeeper

cd /opt

chown -R zookeeper.zookeeper zookeeper/

cd /opt/zookeeper/data

#三台机器的myid不同

echo 1 > myid

echo 2 > myid

echo 3 > myid

cd /opt/zookeeper/bin

./zkServer.sh start

./zkServer.sh status

 

二、kafka消息队列

1.概述

        服务端向客户端发送一个指令,客户端收到指令,并且通过这个指令反馈到服务端,完成一个异步方式的通信的流程

  • kafka消息队列---->大数据场景非常合适
  • rabbitMQ--->适合处理小场景的数据请求
  • activeMQ--->适合处理小场景的数据请求

2. 消息队列的应用场景

(1)异步处理*

        用户的短信验证码,邮件通知

(2)系统解耦

        微服务架构中的服务之间通信

        降低各个组件之间的依赖程度(耦合度),提高组件的灵活性和可维护性

(3)负载均衡

        高并发系统中的任务处理

        消息队列把多个任务分发到多个消费者实例,电商平台的订单系统

(4)流量控制和限流

        根据API请求来处理,通过控制消息的生产速度和消费的处理来完成限流。

        端口:应用和应用之间通信

        API接口:应用程序内部各个组件通信的方式(代码)

(5)任务调度和定时任务

        消息队列可以定时的进行任务调度,按照消费者的计划生成对应的数据

(6)数据同步和分发*

        日志收集和数据收集

(7)实时数据处理

(8)备份和恢复

3.消息队列的模式

(1)点对点

        即一对一,生产者生产消息,消费者消费消息。

(2)发布/订阅模式

        消息的生产者发布一个主题(topic),其他的消费者订阅这个主题,从而实现一对多。

4.kafka组件的名称

(1)主题

        topic 主题是kafka数据流的一个基本单元,类似于数据的管道,生产者将消息发布到主题,其他的消费者订阅主题,来消费消息,主题可以被分区,分区有偏移量

(2)生产者

        将消息写入主题和分区

(3)消费者

        从分区和主题当中接收发布的消息。一个消费者可以订阅多个主题

(4)分区

        一个主题可以被分为多个分区,每个分区都是数据的有序子集。分区越多,消费者消费的速度越快,可以避免生产者的消费堆积。分区当中有偏移量,按照偏移量进行有序存储,消费者可以独立的读取每个分区的数据

        如何读取分区的数据,一般是不考虑的。只有消息出现堆积的时候,会考虑扩展分区数。

(5)偏移量

        消息在分区当中的唯一标识,根据偏移量指定消费者获取消息的位置

        test1 test2 test3 分区1

        0         1        2

(6)经纪人

        zookeeper,存储分区的信息,kafka集群的元数据

 5.实验

 kafka在zookeeper的基础上才能搭建

192.168.206.60 es1

192.168.206.70 es2

192.168.206.80 logstash kibana

192.168.206.40 filebeat

192.168.206.30 kafka1

192.168.206.50 kafka2

192.168.206.55 kafka3

-------------------------------------------------------------------------------------------------------------------------

cd /usr/local/filebeat

vim filebeat.yml

把tags和service_name改一下

把output.logstash两行注释掉

新增:

output.kafka:

  enabled: true

  hosts: ["192.168.206.30:9092","192.168.206.50:9092","192.168.206.55:9092"]

  topic: nginx_mysql

ps -elf | grep filebeat

./filebeat -e -c filebeat.yml

cd /etc/logstash/conf.d

vim kafka.conf

input {

  kafka {

  bootstrap_servers => "192.168.206.30:9092,192.168.206.50:9092,192.168.206.55:9092"

  topics => "nginx_mysql"

  type => "nginx_kakfa"

  codec => "json"

#指定数据的格式是json

  auto_offser_reset => "latest"

#latest,从尾部开始 earliest 从头开始拉取

  decorate_events => true

#传递给es的数据额外的附加kafka的属性数据

  }
}

output {
    if "nginx-1" in [tags] {
    elasticsearch {
      hosts => ["192.168.206.60:9200","192.168.206.70:9200"]
      index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"

    }
  }

  if "mysql-1" in [tags] {
    elasticsearch {
      hosts => ["192.168.206.60:9200","192.168.206.70:9200"]
      index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"

    }
  }

}

logstash -f kafka.conf --path.data /opt/testa &

kafka-console-consumer.sh --bootstrap-server 192.168.206.30:9092,192.168.206.50:9092,192.168.206.55:9092 --topic nginx_mysql --from-beginning

#看有没有获取

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java项目实战II基于微信小程序的家庭大厨(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在快节奏的生活中,家庭聚餐成为了连接亲情…

Ungoogled Chromium127 编译指南 MacOS 篇(一)- 项目介绍

1. 引言 在当今互联网时代,浏览器不仅是我们访问网络的窗口,更是保护个人隐私的重要工具。然而,主流浏览器普遍存在数据收集和隐私问题。大多数用户可能并不知道,当我们使用 Chrome 浏览器时,会有大量的个人数据被收集…

Alist-Sync-Web 网盘自动同步,网盘备份相互备份

Alist-Sync-Web 一个基于 Web 界面的 Alist 存储同步工具,支持多任务管理、定时同步、差异处理等功能。 功能特点 📱 美观的 Web 管理界面🔄 支持多任务管理⏰ 支持 Cron 定时任务📂 支持数据同步和文件同步两种模式&#x1f5…

前后端分离项目部署到云服务器、宝塔(前端vue、后端springboot)详细教程

一、部署介绍 部署的环境是宝塔(宝塔9.0.0)、阿里云服务器(centos 7.6);前端是Vue3项目、后端是springboot3x、jdk11、数据库有redis、mysql;搜索采用的是es。 由于宝塔面板中可以快速进行环境的配置&…

ESP32-S3遇见OpenAI:OpenAI官方发布ESP32嵌入式实时RTC SDK

目录 OpenAI RTC SDK简介应用场景详解智能家居控制系统个人健康助手教育玩具 技术亮点解析低功耗设计快速响应高精度RTC安全性保障开发者指南 最近,OpenAI官方发布了一款针对ESP32-S3的嵌入式实时RTC(实时时钟)SDK,这标志着ESP32-…

【工具推荐】XSS 扫描器-XSStrike

介绍 XSStrike 是一个跨站点脚本检测套件,配备四个手写解析器、一个智能有效载荷生成器、一个强大的模糊测试引擎以及速度极快的爬虫。XSStrike 不会像其他工具一样注入有效载荷并检查其是否有效,而是使用多个解析器分析响应,然后通过与模糊…

golang 编程规范 - 项目目录结构

原文:https://makeoptim.com/golang/standards/project-layout 目录结构 Go 目录 cmdinternalpkgvendor 服务端应用程序目录 api Web 应用程序目录 web 通用应用程序目录 buildconfigsdeploymentsinitscriptstest 其他目录 assetsdocsexamplesgithooksthird_par…

蓝桥杯JAVA--003

需求 2.代码 public class RegularExpressionMatching {public boolean isMatch(String s, String p) {if (p.isEmpty()) {return s.isEmpty();}boolean firstMatch !s.isEmpty() && (s.charAt(0) p.charAt(0) || p.charAt(0) .);if (p.length() > 2 && p…

Sublime Text4 4189 安装激活【 2025年1月3日 亲测可用】

-----------------测试时间2025年1月3日------------------- 下载地址 官方网址:https://www.sublimetext.com 更新日志:https://www.sublimetext.com/download V4189 64位:https://www.sublimetext.com/download_thanks?targetwin-x64 ....…

单元测试3.0+ @RunWith(JMockit.class)+mock+injectable+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 静态变量直接赋值就好,没必要mock了 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上…

【书籍连载】《软件测试架构实践与精准测试》| 有关软件测试模型的调查结果

各位软件领域的精英们,今天小编邀请你继续深入学习《软件测试架构实践与精准测试》。 《软件测试架构实践与精准测试》是作者李龙(安畅检测首席技术专家)基于软件测试“川模型”的著作。本书结合作者首次提出的软件测试新的模型“川模型”测试…

Android 模拟器系统镜像选择指南

Android 模拟器系统镜像选择指南 在选择 Android 模拟器的系统镜像时,根据实际需求选择合适的版本。以下是具体建议: 1. 目标 API Level 如果需要适配最新版本的 Android: 选择:API 35 (Android 14)(代号&#xff1…

MT8788安卓核心板_MTK8788核心板参数_联发科模块定制开发

MT8788安卓核心板是一款尺寸为52.5mm x 38.5mm x 2.95mm的高集成度电路板,专为各种智能设备应用而设计。该板卡整合了处理器、图形处理单元(GPU)、LPDDR3内存、eMMC存储及电源管理模块,具备出色的性能与低功耗特性。 这款核心板搭载了联发科的MT8788处理…

Ansys Aqwa 中 Diffraction Analysis 的疲劳结果

了解如何执行疲劳分析,包括由 Ansys Aqwa 计算的海浪行为。 了解疲劳分析 大多数机器故障是由于负载随时间变化,而不是静态负载。这种失效通常发生在应力水平明显低于材料的屈服强度时。因此,当存在动态载荷时,仅依赖静态失效理…

【AUTOSAR 基础软件】Can模块详解(Can栈之驱动模块)

文章包含了AUTOSAR基础软件(BSW)中Can模块相关的内容详解。本文从AUTOSAR规范解析,ISOLAR-AB配置以及模块相关代码三个维度来帮读者清晰的认识和了解Can驱动软件模块。文中涉及的ISOLAR-AB配置以及生成的ARXML均依托于ETAS工具链,…

【从零开始入门unity游戏开发之——unity篇05】unity6基础入门——运行游戏按钮、Game游戏窗口和Project项目窗口介绍

文章目录 运行游戏按钮、Game游戏窗口和Project项目窗口一、运行游戏按钮二、Game游戏窗口1、右上角设置1.1 如果没有相机渲染则发出警告1.2 在”编程模式”下清除每一帧1.3 窗口最大化 2、上方工具(1)切换手机模拟器(2)切换不同显…

【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地教程

前言:本文教程为,上传文件到服务器并训练深度学习模型,与下载服务器文件到本地。演示指令输入,完整的上传文件到服务器,并训练模型过程;并演示完整的下载服务器文件到本地的过程。 本文使用的服务器为云服…

Linux下部署ElasticSearch集群

Elasticsearch7.17.8集群的搭建 节点host名称节点ip节点部署内容k8s-m192.168.40.142主节点 数据节点k8s-w1192.168.40.141主节点 数据节点k8s-w2192.168.40.140数据节点 一、准备安装环境 1.下载安装包 官网 www.elastic.co 下载所有版本地址 点击跳转 下载elasticsearch-7.…

Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结

注:因为本人也是第一次接入广告与支付SDK相关的操作,网上也查了很多教程,很多也都是只言片语或者缺少一些关键步骤的说明,导致本人也是花了很多时间与精力踩了很多的坑才搞定,发出来也是希望能帮助到其他人在遇到相似问…

Linux中隐藏操作身法

从历史记录中删除指定的命令 假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。通过下面的命令来删除: history | grep "keyword"例如:history | grep set o history 批量第二条和第四条删除: sed…