天天看點

Apache EventMesh分布式事件驅動應用

作者:Java熱點

1. Apache EventMesh介紹

Apache EventMesh是一個開源的、分布式的、跨語言的、消息中間件,主要用于異構系統之間的消息傳遞和協作。EventMesh的設計目标是提供高吞吐、低延遲、高可靠性和靈活性的消息傳遞,支援多種消息協定,如HTTP和MQTT。

Apache EventMesh有以下特點:

  • 基于 CloudEvents 規範建構。
  • 使用插件化的方式來加載各個功能子產品的實作,例如消息存儲,傳輸協定,名額等等都可以通過插件配置來加載不同的實作
  • 至少一次的可靠性投遞,以及在多個EventMesh部署之間傳遞事件
  • 分布式:EventMesh可以部署在多個節點上,實作分布式部署和消息傳遞,提高了可靠性和吞吐量。
  • 跨語言:EventMesh支援多種程式設計語言,如Java、Go、C++等,可以适應不同系統和應用的需要。
  • 高吞吐、低延遲:EventMesh采用異步非阻塞的IO模型和零拷貝技術,提供高吞吐、低延遲的消息傳遞。
  • 高可靠性:EventMesh提供多種消息傳遞模式,如點對點、廣播、順序消息等,保證消息傳遞的可靠性。
  • 靈活性:EventMesh提供多種消息協定和擴充點,支援自定義協定和擴充,适應不同場景的需求。

Apache EventMesh架構(來自官網)

Apache EventMesh分布式事件驅動應用

2. Apache EventMesh快速開始

這裡從一個開發者的角度來說明如何快速開始和上手Apache EventMesh這個項目。

2.1 準備工作

首先将項目下載下傳到本地

git clone https://github.com/apache/eventmesh.git
複制代碼           

下載下傳到本地後,進入項目的跟目錄運作編譯指令打成壓縮包(這裡以Linux為例)

./gradlew clean jar dist -x test -x checkstyleMain -x javaDoc && ./gradlew installPlugin && ./gradlew tar
複制代碼           

然後找到根目錄下面的build檔案

Apache EventMesh分布式事件驅動應用

對應的tar.gz壓縮包。

2.2 啟動服務

解壓壓縮包到build檔案

tar -zxvf eventmesh-1.8.0-release.tar.gz
複制代碼           

已單機模式啟動服務

bash bin/start.sh
複制代碼           

單機模式下存儲使用的EventMesh實作的存儲。運作結果

Apache EventMesh分布式事件驅動應用

2.3 Docker運作

Apache EventMesh目前Docker鏡像支援1.4.0版本是以Docker鏡像需要自己修改項目的Dockerfile檔案打本地鏡像

FROM openjdk:8-jdk as builder
WORKDIR /build
COPY . .
RUN ./gradlew clean build jar dist --parallel --daemon
RUN ./gradlew installPlugin

FROM openjdk:8-jdk
RUN apt-get update && apt-get install -y locales
RUN localedef -i en_US -f UTF-8 en_US.UTF-8 --quiet
WORKDIR /data/app/eventmesh
COPY --from=builder /build/dist ./
​
EXPOSE 10106 
EXPOSE 10205 10105 10002
​
ENV DOCKER true
ENV EVENTMESH_HOME /data/app/eventmesh
ENV EVENTMESH_LOG_HOME /data/app/eventmesh/logs
ENV CONFPATH /data/app/eventmesh/conf
​
CMD ["bash", "bin/start.sh"]
複制代碼           

打包完成後就直接放到直接運作

3. 運作例子

例子可以将EventMesh項目導入IDEA。找到eventmesh-examples子產品。這個裡面有樣例

Apache EventMesh分布式事件驅動應用

首先修改EventMesh的IP位址根據你目前部署的位址:

Apache EventMesh分布式事件驅動應用

然後運作結果如下:

Apache EventMesh分布式事件驅動應用

完成了整個啟動和運作。

4. 總結

Apache EventMesh,這是一個輕量級、分布式的消息中間件。它基于事件驅動的程式設計模型,支援多種程式設計語言和通信協定,提供高可靠性、高吞吐量的消息傳遞服務。

EventMesh采用了Pulsar的架構,可以實作Pub/Sub、點對點通信、廣播等多種消息傳遞模式。它支援消息的持久化和重複消費,保證了消息的可靠性和一緻性。

EventMesh的使用也非常簡單。首先,你需要安裝和配置EventMesh的運作環境。然後,你可以使用提供的API來發送和接收消息,或者使用EventMesh提供的控制台來管理你的消息隊列。

總的來說,如果你正在尋找一款高可靠性、高吞吐量的消息中間件,那麼Apache EventMesh絕對是一個值得嘗試的選擇。