Kafka3.7.0:4.Kafka集群
Kafka集群搭建 Kafka集群搭建方式 基于Zookeeper的集群搭建方式 基于Kraft的集群搭建方式 基于Zookeeper的集群搭建 解压三个kafka 配置kafka集群:server.properties 集群启动并测试 解压 1234tar -zxvf kafka_2.13-3.7.0.tgz # 解压mv kafka_2.13-3.7.0 kafka-01cp -r kafka-01 kafka-02cp -r kafka-01 kafka-03 配置kafka集群 配置kafka集群:server.properties 三台分别配置为: broker.id=1、broker.id=2、broker.id=3 12cd kafka-01/configvim server.properties 其他2个同理。 该配置项是每个broker的唯一id,取值在0~255之间 三台分别配置listener=PAINTEXT:IP:PORT 123listeners=PLAINTEXT://0.0.0.0:9091listeners=PLAINTE ...
gRPC
gRPC gRPC入门 gRPC简介 gRPC来自Google,它是一个开源的框架;它同时也是Cloud Native Computation基金会(CNCF)的一部分,就像Docker和Kubernetes一样。 gRPC允许你为RPC(Remote Procedure call)定义请求和响应,然后gRPC会帮你处理一切剩余问题。 它速度快,执行效率高,基于HTTP/2构建,低延迟,支持流,与开发语言无关,并且可以很简单的插入身份认证、负载均衡、日志和监控等功能。 gRPC它是对RPC一种非常简洁的实现并且解决了很多RPC的问题。 gRPC结构 设计步骤 生命周期 如何学习gRPC 首先,你得学习Protocol Buffers(https://developers.google.com/protocol-buffers/),简单的说,它可以用来定义消息和服务。 然后,你只需要实现服务即可,剩余的gRPC代码将会自动为你生成。 .proto这个文件可以适用于十几种开发语言(包括服务端和客户端),并且它允许你使用同一个框架来支持每秒百万级以上的RPC调用。 开发模式 ...
kotlin协程
Kotlin协程 协程是什么 协程是一个与线程并列的概念,二者都是用来管理并发的,不过概念模型不太一样,有的编程语言用线程管理并发,有的使用协程,有的都用,所以kotlin的协程就是一个并发管理工具,定位和线程是一样的。因为kotlin是一门中间语言,它的代码最终还是要编译成Java字节码,这里讲都是Jvm上的协程,而Jvm提供的只有线程那一套,kotlin作为上层语言,是不可能绕过线程来创建新的并发实现的,那它是怎么办的呢? 实际上,kotlin协程的底层依然是通过Java的线程实现的,它把线程包起来,封装成一套新的API来让我们管理并发,它是一个用Java线程来实现的并发管理工具库。那问题就来了,我都有线程了,为什么要使用协程这个上层包装? 因为它包的好,虽然底层是线程,但协程比线程要好用。好用在哪呢? 协程有很多比线程好用的点,但其中最重要的一点就在于它能用线性的结构来写异步代码。 分类 按调用栈分类 通常我们提及调用栈,指的就是函数调用栈,是一种用来保保存函数调用时的状态信息的数据结构。 由于协程需要支持挂起、恢复,因此对于挂起点的状态保存就显得极其关键。类似地,线程会 ...
Java响应式编程-1.Reactor核心
Reactor核心 前置知识 Lambda Java8语法糖: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139import java.util.*;import java.util.function.*;import java.util.stream.Collectors;//函数式接口;只要是函数式接口就可以用Lambda表达式简化//函数式接口: 接口中有且只有一个未实现的方法,这个接口就叫函数式接口interfa ...
Kotlin-Flow
Kotlin-Flow 在学习Kotlin Flow之前,我们先举一个例子,循环调用10次网络请求,获取的结果平方,然后过滤掉奇数,最后取前2个,然后打印。 请先在 build.gradle.kts 中添加协程依赖项 1implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import kotlinx.coroutines.delayimport kotlinx.coroutines.flow.*import kotlinx.coroutines.runBlockingimport kotlin.random.Randomfun main(): Unit = runBlocking {// notUseFlow() useFlow()}suspend fun useFl ...
curl
HTTP常见请求 命令 作用 示例 curl URL 测试与目标是否能正常连接,对api进行请求,可以返回api请求的数据(默认GET请求) curl http://localhost:3000/getAllUsers curl -X -POST URL -d 数据(等同于curl -XPOST URL -d 数据) POST请求 curl -XPOST http://localhost:3000/addUser -d ‘{“name”: “zhangsan”}’ curl -X -PUT URL -d 数据(等同于curl -XPUT URL -d 数据) PUT请求,更新数据 curl -XPUT http://localhost:3000/updateUser/1 -d ‘{“name”: “lisi”}’ curl -X -DELETE URL(等同于curl -XDELETE URL) DELETE请求,删除数据 curl -XDELETE http://localhost:3000/deleteUser/1 curl URL -H 首部 添加 ...
vim
vim 大家好,今天我们来讲解一下vim。有人可能要问我们为什么要学习vim呢,我们不是都有文本编辑软件了吗,因为我们在使用服务器时或者搭建虚拟机(不要图形化界面,节省空间,并且使用终端可以让别人认为你很nb)时,都是没有图形界面的,给我们的都是一个黑乎乎的命令行终端。有的同学可能会说,我一般都是使用服务器建站之类的,使用服务器商提供的一键建站或者使用宝塔之类的,也不会使用什么vim,平时也使用不到。好像说的有点道理,那这期就不讲了?怎么可能,就算你现在使用不到,你以后工作时也会使用的,而且你也可以跟比人装13说你vim用得贼六。而且,当你完全掌握了vim之后,你就可以不使用鼠标了,这样可以大大提升你的开发效率。 模式 在学习vim之前,我们需要知道vim的三种模式(或者说是四种模式,加一个视觉模式): 正常模式 编辑模式 命令行模式 首先我们需要下载vim,在linux系统中,vim的下载十分简单,这里以ubuntu为例,输入sudo apt-get install vim -y,等待安装完成即可。 vim操作严格区分大小写,更不要使用中文符号 首先我们使用vim打开一个文 ...
git
git 工作流 首先我们看一下git版本控制的基本流程: 一般我们会把项目放到远程仓库(github,gitee等)里,所有人都以这个远程仓库的文件作为最新版本(正本),。个人都有自己的工作区,这个工作区也就是自己本地电脑里的一个文件夹,每个人都可以用 clone 把最新版本的文件复制到本地,在自己电脑里操作文件就不会影响远程仓库,而且每个人都可以负责不同的板块。假设现在我们更新了一些文件想要提交到远程仓库,比如新增的4个文件里,我们只有2个文件需要添加到远程仓库,这个时候就可以把这2个文件添加到暂存区,也就是 add 。如果暂存区我们也觉得没有问题了,可以提交到本地仓库,也就是 commit ,本地仓库其实也就是本地版本区。如果本地仓库可以去更新远程仓库了,我们就可以用 push 把内容推过去。这里有几个状态要特别注意,如果文件还在工作区里,那文件就是 Untracked -未追踪状态,也可以用Unstage表示,已追踪状态用stage表示。如果远程仓库有更新内容,我们可以使用 pull 来进行更新,pull会直接更新到工作区,把你工作区的内容更新掉。所以,我们可以用 fetc ...
Gradle依赖管理-基于KotlinDSL
Gradle依赖管理(基于Kotlin DSL) Gradle构建工具是一个快速、可靠和适应性强的开源构建自动化工具,具有优雅和可扩展的声明性构建语言,Gradle包含许多优势: Gradle是JVM平台最受欢迎的构建系统,也是Android和Kotlin多平台项目的默认选择,它拥有丰富的社区插件生态系统。 Gradle可以使用其内置函数、第三方插件或自定义构建逻辑自动执行各种软件构建场景。 Gradle提供了一种高级、声明式和富有表现力的构建语言,使阅读和编写构建逻辑变得很轻松。 Gradle快速、可扩展,可以构建任意规模和复杂度的项目。 Gradle产生可靠的结果,同时受益于增量构建、构建缓存和并行执行等优化。 Gradle支持Android、Java、Kotlin Multiplatform、Groovy、Scala、Javascript和C/C++等热门语言的构建工作: Hello Gradle 首先,我们来学习Gradle的安装和初始化。 安装Gradle环境 在使用Gradle之前,我们先来看看如何安装,这里演示Ubuntu环境下如何进行安装,其他平台请参考官方 ...
Kafka3.7.0:3.SpringBoot集成
HelloWorld 项目搭建 首先新建一个空项目,然后添加一个模块 Kafka相关依赖,不是starter依赖 1234<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId></dependency> 配置文件 修改配置文件后缀为.yml,添加如下配置: 12345678spring: # kafka连接地址(ip+port) kafka: bootstrap-servers: localhost:9092 # 生产者配置 # producer: # 消费者配置 # consumer: 程序编写 生产者(写入事件) 向hello Topic发送一个Events 123456789@Componentpublic class EventProducer { @Resource private KafkaT ...
Kafka3.7.0:2.Kafka操作
Topic和Events 创建主题Topic 主题(Topic)类似于文件系统中的文件夹,它用来存储事件(Events)。 事件(Events)也称为纪录或消息,比如支付交易、手机地理位置更新、运输订单、物联网设备或医疗设备的传感器测量数据等等都是事件(Events);事件(Events)被组织和存储在主题(Topic)中。 简单来说,主题(Topic)类似于文件系统中的文件夹,事件(Events)是该文件夹中的文件。 创建主题使用:kafka-topics.sh 脚本 不带任何参数会告知该脚本如何使用:./kafka-topics.sh 创建主题:./kafka-topics.sh --create --topic <主题名> --bootstrap-server localhost:9092 列出所有的主题:./kafka-topics.sh --list --bootstrap-server localhost:9092 删除主题:./kafka-topics.sh --delete --topic <主题名> --bootstra ...
Kafka3.7.0:1.安装Kafka
运行环境前置要求 Kafka是使用Scala语言编写而成,Scala运行在Java虚拟机上,并兼容现有的Java程序,因此要部署Kafka需要先安装JDK环境,建议安装Java8+(Java8、Java11、Java17、Java21都可以,这里使用Java17)。 Kafka官网 Scala官网 JDK下载地址 你也可以使用jenv管理多版本jdk,具体操作参考我之前的文章: 引用站外地址 jenv管理多版本jdk /posts/9f01ffa.html Kafka安装 前往Kafka官网下载最新3.7.0版本 解压缩:tar -zxvf kafka_2.13-3.7.0.tgz 进入bin目录:cd kafka_2.13-3.7.0/bin/ 启动Kafka Apache Kafka可以使用ZooKeeper或者KRaft启动,但只能使用其中一种方式,不能同时使用。 KRaft:Apache Ka ...