2

将Kafka和Zookeeper通过Quarkus和GraalVM编译为本地快速启动的原生代码

 1 year ago
source link: https://www.jdon.com/67111.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

将Kafka和Zookeeper通过Quarkus和GraalVM编译为本地快速启动的原生代码

使用kafka-native可以将Kafka 代理(和 Zookeeper)通过Quarkus 和 GraalVM 编译为本机原生代码。

项目结构

  • quarkus-kafka-server-extension:Quarkus 扩展包括使用 GraalVM 将 Kafka Server 编译为本机。
  • quarkus-zookeeper-server-extension:Quarkus 扩展包括使用 GraalVM 将 Zookeeper Server 编译为本机。
  • kafka-server:Quarkus 应用程序使用 kafka-server-extension 启动 Kafka 服务器。编译为 JVM 和本机可执行文件。
  • zookeeper-server:Quarkus 应用程序使用 Zookeeper-server-extension 启动 Kafka 服务器。编译为 JVM 和本机可执行文件。
  • kafka-native-test-container:测试容器使用本机编译的 kafka-server 启动单节点 Kafka Broker,并使用本机编译的 Zookeeper-server 启动单节点 Zookeeper。包括集成测试。

运行:
mvn install

在开发模式下运行kafka
您可以在开发模式下运行 kafka,从而使用以下命令启用实时编码:
cd kafka-server mvn compile quarkus:dev
启动单节点 Kafka 代理侦听PLAINTEXT://9092. 用作./target/log-dir日志目录。

在开发模式下运行zookeeper
您可以在开发模式下运行zookeeper,以启用实时编码:
cd zookeeper-server mvn compile quarkus:dev
启动一个单节点 Zookeeper 监听2181.

打包和运行该应用程序
该应用程序可以在kafka-server(或zookeeper-server)目录下使用以下方式进行打包:
mvn package

它在target/quarkus-app/目录下生成quarkus-run.jar文件。请注意,这不是一个超级jar,因为依赖关系被复制到了target/quarkus-app/lib/目录中。

现在可以使用java -jar target/quarkus-app/quarkus-run.jar来运行该应用程序。

创建本机可执行文件
您可以使用以下kafka-server(或zookeeper-server) 目录创建本机可执行文件:
mvn package -Pnative

或者,如果您没有安装 GraalVM,您可以使用以下命令在容器中运行本机可执行文件构建:
mvn package -Pnative -Dquarkus.native.container-build=true

然后,您可以使用以下命令执行本机可执行文件:

./target/kafka-server-1.0.0-SNAPSHOT-runner
或
./target/zookeeper-server-1.0.0-SNAPSHOT-runner

从本地可执行文件中创建一个容器
你可以使用以下方法从本地可执行文件中创建一个容器:

mvn package -Dnative -Dquarkus.native.container-build=true -Dquarkus.container-image.build=true

容器图像将以quay.io/ogunalp/kafka-native:1.0.0-SNAPSHOT和quay.io/ogunalp/zookeeper-native:1.0.0-SNAPSHOT的标签构建。

如果你想重新使用现有的本地可执行文件:

mvn package -Dnative -Dquarkus.native.reuse-existing=true -Dquarkus.container-image.build=true

如果你的容器运行时间不在本地运行,请使用参数-Dquarkus.native.reuse-existing=true而不是-Dquarkus.native.container-build=true。

然后你就可以用以下方式运行docker镜像:

docker run -p 19092:9092 -it --rm -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:19092 quay.io/ogunalp/kafka-native:1.0.0-SNAPSHOT

配置
您可以使用 Java 系统属性设置配置选项,例如

java -Dserver.delete-dirs-on-close=true \
  -Dserver.properties-file=server.properties \
  -Dkafka.advertised.listeners=SSL://localhost:9092 -jar ./target/quarkus-app/quarkus-run.jar

或者设置环境变量,例如

docker run -it --rm -p 19092:9092 \
  -v $(pwd):/conf \
  -e SERVER_PROPERTIES_FILE=/conf/server.properties \
  -e KAFKA_ADVERTISED_LISTENERS=SASL_PLAINTEXT://localhost:19092 \
  quay.io/ogunalp/kafka-native:1.0.0-SNAPSHOT

具体点击标题



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK