blob: f80d07aada57224129778bb592fa58b54947a184 [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-1.5.0 plugin-docs plugin-id-default docs-doc-id-modules/tubemq/tubemq_perf_test_vs_Kafka">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.3.1">
<title data-rh="true">TubeMQ VS Kafka | Apache InLong</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://inlong.apache.org/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="1.5.0"><meta data-rh="true" name="docusaurus_tag" content="docs-default-1.5.0"><meta data-rh="true" name="docsearch:version" content="1.5.0"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-1.5.0"><meta data-rh="true" property="og:title" content="TubeMQ VS Kafka | Apache InLong"><meta data-rh="true" name="description" content="1 Background"><meta data-rh="true" property="og:description" content="1 Background"><link data-rh="true" rel="icon" href="/img/logo.svg"><link data-rh="true" rel="canonical" href="https://inlong.apache.org/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka"><link data-rh="true" rel="alternate" href="https://inlong.apache.org/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka" hreflang="en"><link data-rh="true" rel="alternate" href="https://inlong.apache.org/zh-CN/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka" hreflang="zh-CN"><link data-rh="true" rel="alternate" href="https://inlong.apache.org/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://YUW9QEL53E-dsn.algolia.net" crossorigin="anonymous"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache InLong RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache InLong Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Apache InLong" href="/opensearch.xml">
<script src="https://www.apachecon.com/event-images/snippet.js" async></script><link rel="stylesheet" href="/assets/css/styles.c64edd51.css">
<link rel="preload" href="/assets/js/runtime~main.63c98e82.js" as="script">
<link rel="preload" href="/assets/js/main.070aef2a.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function e(e){document.documentElement.setAttribute("data-theme",e)}var t=function(){var e=null;try{e=localStorage.getItem("theme")}catch(e){}return e}();null!==t?e(t):window.matchMedia("(prefers-color-scheme: dark)").matches?e("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,e("light"))}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="Apache" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo.svg" alt="Apache" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Apache InLong</b></a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/introduction">Docs</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/introduction">Next</a></li><li><a class="dropdown__link" href="/docs/introduction">1.11.0</a></li><li><a class="dropdown__link" href="/docs/1.10.0/introduction">1.10.0</a></li><li><a class="dropdown__link" href="/docs/1.9.0/introduction">1.9.0</a></li><li><a class="dropdown__link" href="/docs/1.8.0/introduction">1.8.0</a></li><li><a class="dropdown__link" href="/versions/">All versions</a></li></ul></div><a class="navbar__item navbar__link" href="/downloads">Download</a><a class="navbar__item navbar__link" href="/community/how-to-contribute">Community</a><a class="navbar__item navbar__link" href="/blog">Blog</a><a class="navbar__item navbar__link" href="/team">Team</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Apache Software Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://www.apache.org/foundation/policies/privacy.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en">English</a></li><li><a href="/zh-CN/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh-CN">简体中文</a></li></ul></div><a href="https://github.com/apache/inlong" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/1.5.0/introduction">Introduction</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/design_and_concept/basic_concept">Design and Concept</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/quick_start/how_to_build">Quick Start</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/deployment/standalone">Deployment</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/docs/1.5.0/modules/agent/overview">Components</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/agent/overview">Agent</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/dataproxy/overview">DataProxy</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" tabindex="0" href="/docs/1.5.0/modules/tubemq/overview">TubeMQ</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/overview">Overview</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/quick_start">Quick Start</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/producer_example">Producer Example</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/consumer_example">Consumer Example</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-3 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/tubemq/tubemq-manager/overview">tubemq-manager</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/client_partition_assign_introduction">client partition assign</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/client_rpc">Client RPC</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/clients_java">TubeMQ JAVA SDK API</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/configure_introduction">Configuration</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/console_introduction">Console Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/error_code">Error Code</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/http_access_api">HTTP API</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/1.5.0/modules/tubemq/tubemq_metrics">TubeMQ Metrics</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka">TubeMQ VS Kafka</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/sort/overview">Sort</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/manager/overview">Manager</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/dashboard/overview">Dashboard</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/sort-standalone/overview">Sort Standalone</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/docs/1.5.0/modules/audit/overview">Audit</a></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/data_node/extract_node/overview">Data Nodes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/sdk/dataproxy-sdk/cpp">SDK</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/user_guide/dashboard_usage">User Guide</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/development/inlong_msg">Development</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/1.5.0/administration/user_management">Administration</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/1.5.0/contact">Contact Us</a></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for <!-- -->Apache InLong<!-- --> <b>1.5.0</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/modules/tubemq/tubemq_perf_test_vs_Kafka">latest version</a></b> (<!-- -->1.11.0<!-- -->).</div></div><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Components</span><meta itemprop="position" content="1"></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">TubeMQ</span><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">TubeMQ VS Kafka</span><meta itemprop="position" content="3"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.5.0</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>TubeMQ VS Kafka</h1></header><h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-background">1 Background<a href="#1-background" class="hash-link" aria-label="Direct link to 1 Background" title="Direct link to 1 Background"></a></h2><p>TubeMQ is a distributed messaging middleware developed by Tencent Big Data. Its system architecture idea comes from <a href="http://kafka.apache.org/" target="_blank" rel="noopener noreferrer">Apache Kafka</a>. In terms of implementation, it adopts a completely adaptive method, and has done a lot of optimization and R&amp;D work in combination with actual combat, such as partition management, distribution mechanism and new node communication process, and self-developed high-performance underlying RPC communication modules.
These implementations make TubeMQ have good robustness and higher throughput on the premise of ensuring real-time and consistency. Combined with the current usage of mainstream message middleware, we take Kafka as a reference for performance comparison test, and compare the performance of the two systems in conventional application scenarios.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-test-scenario-scheme">2 Test scenario scheme<a href="#2-test-scenario-scheme" class="hash-link" aria-label="Direct link to 2 Test scenario scheme" title="Direct link to 2 Test scenario scheme"></a></h2><p>The following is the test plan we designed according to the actual application scenario:
<img loading="lazy" src="/assets/images/perf_scheme-5891d0d1941fd8838b5e5883961b5430.png" width="1375" height="789" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-test-conclusion">3 Test Conclusion<a href="#3-test-conclusion" class="hash-link" aria-label="Direct link to 3 Test Conclusion" title="Direct link to 3 Test Conclusion"></a></h2><p>To describe the characters in &quot;The Avengers&quot;:</p><table><thead><tr><th align="center">Characters</th><th align="center">Test Scenarios</th><th>Highlights</th></tr></thead><tbody><tr><td align="center">The Flash</td><td align="center">Scenario 5</td><td>Fast (Data production and consumption delay TubeMQ 10ms vs kafka 250ms)</td></tr><tr><td align="center">Hulk</td><td align="center">Scenario 3, Scenario 4</td><td>Anti-attack capability (as the number of topics gradually increases from 100,200, to 500,1000, the capability of the TubeMQ system does not decrease, the throughput decreases slightly with the increase of load, and the capability is flat vs kafka throughput is obvious Decreased and unstable; when filtering consumption, the increase in inbound and outbound traffic of TubeMQ directly defeats the decline in inbound and outbound traffic of kafka and the decrease in throughput)</td></tr><tr><td align="center">Spider-Man</td><td align="center">Scenario 8</td><td>Each scenario comes and goes freely (comparison test under different models, TubeMQ throughput is stable vs Kafka&#x27;s lower performance under BX1 model)</td></tr><tr><td align="center">Iron Man</td><td align="center">Scenario 2, Scenario 3, Scenario 6</td><td>Automation (TubeMQ can dynamically adjust system settings and consumption behavior in real time during system operation to improve system performance)</td></tr></tbody></table><p>For specific data analysis:</p><ol><li>Under the single-topic and single-instance configuration, the throughput of TubeMQ is much lower than that of Kafka; under the single-topic multi-instance configuration, the throughput of TubeMQ catches up with Kafka in the configuration of 5 partitions when there are 4 instances, and the throughput of TubeMQ varies with the number of instances. Increases and increases, Kafka does not rise but falls; TubeMQ can dynamically control the throughput improvement by adjusting various parameters during system operation;</li><li>Under the multi-topic and multi-instance configuration, the throughput of TubeMQ is maintained in a very stable range, and the resource consumption, including the number of file handles and network connection handles, is very low; the throughput of Kafka shows a significant downward trend with the increase of the number of topics. And resource consumption increases sharply; under the condition of SATA disk storage, as the configuration of the model improves, the throughput of TubeMQ can be directly pressed to the disk bottleneck, while Kafka is in an unstable state; in the case of CG1 model SSD disk, Kafka&#x27;s The throughput is better than TubeMQ;</li><li>When filtering consumption, TubeMQ can greatly reduce the network outbound traffic of the server, and at the same time, the resources consumed by filtering consumption are less than the full consumption, which in turn promotes the throughput of TubeMQ; kafka has no server-side filtering, outflow and full volume Consistent consumption, no significant savings in traffic;</li><li>There are differences in resource consumption: TubeMQ uses sequential writing and random reading, which consumes a lot of CPU. Kafka uses sequential writing and block reading, which consumes very little CPU, but other resources, such as file handles and network connections, consume a lot of money. In the actual operating environment in SAAS mode, Kafka will have system bottlenecks due to zookeeper dependence, and there will be more restrictions due to production, consumption, and brokers, such as file handles, network connections, etc., and resource consumption will be higher. Big;</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-test-environment-and-configuration">4 Test environment and configuration<a href="#4-test-environment-and-configuration" class="hash-link" aria-label="Direct link to 4 Test environment and configuration" title="Direct link to 4 Test environment and configuration"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="41-software-version-and-deployment-environment">4.1 <!-- -->[Software version and deployment environment]<a href="#41-software-version-and-deployment-environment" class="hash-link" aria-label="Direct link to 41-software-version-and-deployment-environment" title="Direct link to 41-software-version-and-deployment-environment"></a></h3><table><thead><tr><th align="center"><strong>Role</strong></th><th><strong>TubeMQ</strong></th><th><strong>Kafka</strong></th></tr></thead><tbody><tr><td align="center"><strong>Software Version</strong></td><td>tubemq-3.8.0</td><td>Kafka<!-- -->_<!-- -->2.11-0.10.2.0</td></tr><tr><td align="center"><strong>zookeeper deployment</strong></td><td>Not on the same machine as the Broker, single machine</td><td>Not on the same machine as the Broker configuration, single machine</td></tr><tr><td align="center"><strong>Broker Deployment</strong></td><td>Single Machine</td><td>Single Machine</td></tr><tr><td align="center"><strong>Master deployment</strong></td><td>Not on the same machine as the Broker, single machine</td><td>Not involved</td></tr><tr><td align="center"><strong>Producer</strong></td><td>1 M10 + 1 CG1</td><td>1 M10 + 1 CG1</td></tr><tr><td align="center"><strong>Consumer</strong></td><td>6 TS50 10G machines</td><td>6 TS50 10G machines</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="42-broker-hardware-model-configuration">4.2 <!-- -->[Broker hardware model configuration]<a href="#42-broker-hardware-model-configuration" class="hash-link" aria-label="Direct link to 42-broker-hardware-model-configuration" title="Direct link to 42-broker-hardware-model-configuration"></a></h3><table><thead><tr><th align="center"><strong>Model</strong></th><th>Configuration</th><th><strong>Remarks</strong></th></tr></thead><tbody><tr><td align="center"><strong>TS60</strong></td><td>(E5-2620v3<!-- -->*<!-- -->2/16G<!-- -->*<!-- -->4/SATA3-2T<!-- -->*<!-- -->12/SataSSD-80G<!-- -->*<!-- -->1/10GE<!-- -->*<!-- -->2) Pcs</td><td>If not specified, the default is TS60 Test comparison on the model</td></tr><tr><td align="center"><strong>BX1-10G</strong></td><td>SA5212M5(6133<!-- -->*<!-- -->2/16G<!-- -->*<!-- -->16/4T<!-- -->*<!-- -->12/10GE<!-- -->*<!-- -->2) Pcs</td><td></td></tr><tr><td align="center"><strong>CG1-10G</strong></td><td>CG1-10G<!-- -->_<!-- -->6.0.2.12<!-- -->_<!-- -->RM760-FX(6133<!-- -->*<!-- -->2/16G<!-- -->*<!-- -->16/5200-480G<!-- -->*<!-- -->6 RAID/10GE<!-- -->*<!-- -->2)-ODM Pcs</td><td></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="43-broker-system-configuration">4.3 <!-- -->[Broker system configuration]<a href="#43-broker-system-configuration" class="hash-link" aria-label="Direct link to 43-broker-system-configuration" title="Direct link to 43-broker-system-configuration"></a></h3><table><thead><tr><th align="center"><strong>Configuration Items</strong></th><th><strong>TubeMQ Broker</strong></th><th><strong>Kafka Broker</strong></th></tr></thead><tbody><tr><td align="center"><strong>Log Storage</strong></td><td>SATA disk or SSD disk processed by Raid10</td><td>SATA disk or SSD disk processed by Raid10</td></tr><tr><td align="center"><strong>Startup parameters</strong></td><td>BROKER_JVM_ARGS=&quot;-Dcom.sun.management.jmxremote -server -Xmx24g -Xmn8g -XX:SurvivorRatio=6 -XX:+UseMembar -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+ CMSScavengeBeforeRemark -XX:ParallelCMSThreads=4 -XX:+UseCMSCompactAtFullCollection -verbose:gc -Xloggc:$BASE_DIR/logs/gc.log.<code>date +%Y-%m-%d-%H-%M-%S</code> - XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=75 -XX:CMSFullGCsBeforeCompaction=1 -Dsun.net.inetaddr.ttl=3 -Dsun.net.inetaddr.negative.ttl=1 -Dtubemq .fast_boot=false -Dtubemq.home=$tubemq_home -cp $CLASSPATH&quot;</td><td>KAFKA_HEAP_OPTS=&quot;-Xms24g -Xmx24g -XX:PermSize=48m -XX:MaxPermSize=48m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX: InitiatingHeapOccupancyPercent=35</td></tr><tr><td align="center"><strong>Configuration file</strong></td><td>Changed on the broker.ini configuration file of tubemq-3.8.0 version: consumerRegTimeoutMs=35000<br>tcpWriteServiceThread=50<br>tcpReadServiceThread=50<br>primaryPath is the SATA disk log directory</td><td>Changes in the server.properties configuration file of version kafka_2.11-0.10.2.0:<br>log.flush.interval.messages=5000<br>log.flush.interval.ms=10000<br>log.dirs SATA disk log directory<br>socket.send.buffer.bytes=1024000<br>socket.receive.buffer.bytes=1024000<br>socket.request.max.bytes=2147483600<br>log. segment.bytes=1073741824<br>num.network.threads=25<br>num.io.threads=48<br>log.retention.hours=5</td></tr><tr><td align="center"><strong>Others</strong></td><td>Unless specified in the test case, set each topic when it is created:<br>memCacheMsgSizeInMB=5<br>memCacheFlushIntvl=20000<br>memCacheMsgCntInK=10 <br>unflushThreshold=5000&lt; br/&gt;unflushInterval=10000<br>unFlushDataHold=5000</td><td>Setting in client code:<br>Production side:<br>props.put(&quot;key.serializer&quot;, &quot;org.apache.kafka.common. serialization.StringSerializer&quot;);<br>props.put(&quot;value.serializer&quot;, &quot;org.apache.kafka.common.serialization.StringSerializer&quot;);<br>props.put(&quot;linger.ms&quot;, &quot; 200&quot;);<br>props.put(&quot;block.on.buffer.full&quot;, false);<br>props.put(&quot;max.block.ms&quot;, &quot;10&quot;);<br> props.put(&quot;batch.size&quot;, 50000);<br>props.put(&quot;buffer.memory&quot;, 1073741824 );<br>props.put(&quot;metadata.fetch.timeout.ms&quot;, 30000) ;<br>props.put(&quot;metadata.max.age.ms&quot;, 1000000);<br>props.put(&quot;request.timeout.ms&quot;, 1000000);<br>Consumer:<br>props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, &quot;30000&quot;); <br>props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, &quot;org.apache.kafka.common.serialization.StringDeserializer&quot;);<br>props.put( ConsumerConfig.VALUE_DESERIALIZER_C LASS_CONFIG, &quot;org.apache.kafka.common.serialization.StringDeserializer&quot;);<br>props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true/false);<br>props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, &quot;10000&quot;) ;</td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-test-scenarios-and-conclusions">5 Test scenarios and conclusions<a href="#5-test-scenarios-and-conclusions" class="hash-link" aria-label="Direct link to 5 Test scenarios and conclusions" title="Direct link to 5 Test scenarios and conclusions"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="51-scenario-1-basic-scenario-single-topic-situation-one-input-and-two-output-models-using-different-consumption-modes-message-packets-of-different-sizes-and-partitions-to-scale-horizontally-comparing-the-performance-of-tubemq-and-kafka">5.1 Scenario 1: Basic scenario, single topic situation, one input and two output models, using different consumption modes, message packets of different sizes, and partitions to scale horizontally, comparing the performance of TubeMQ and Kafka<a href="#51-scenario-1-basic-scenario-single-topic-situation-one-input-and-two-output-models-using-different-consumption-modes-message-packets-of-different-sizes-and-partitions-to-scale-horizontally-comparing-the-performance-of-tubemq-and-kafka" class="hash-link" aria-label="Direct link to 5.1 Scenario 1: Basic scenario, single topic situation, one input and two output models, using different consumption modes, message packets of different sizes, and partitions to scale horizontally, comparing the performance of TubeMQ and Kafka" title="Direct link to 5.1 Scenario 1: Basic scenario, single topic situation, one input and two output models, using different consumption modes, message packets of different sizes, and partitions to scale horizontally, comparing the performance of TubeMQ and Kafka"></a></h3><p><img loading="lazy" src="/assets/images/perf_scenario_1-d1251ed947b865d18b31f44f398acbe4.png" width="1262" height="216" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="511-conclusion">5.1.1 【Conclusion】<a href="#511-conclusion" class="hash-link" aria-label="Direct link to 5.1.1 【Conclusion】" title="Direct link to 5.1.1 【Conclusion】"></a></h4><p>In the case of a single topic with different partitions:</p><ol><li>The throughput of TubeMQ does not change with the change of partitions. At the same time, TubeMQ belongs to the sequential write and random read mode. In the case of a single instance, the throughput is lower than that of Kafka, and the CPU is higher than that of Kafka;</li><li>The throughput of Kafka decreases slightly with the increase of partitions, and the CPU usage is very low;</li><li>Since TubeMQ partitions are logical partitions, increasing the partitions will not affect the throughput; Kafka partitions are the increase of physical files, but increasing the inbound and outbound traffic of the partitions will actually decrease;</li></ol><p>####5.1.2 【Indicators】
<img loading="lazy" src="/assets/images/perf_scenario_1_index-ea628ceea163215f8fc98999d789279f.png" width="1266" height="576" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="52-scenario-2-single-topic-situation-one-input-and-two-output-model-fixed-consumption-package-size-number-of-horizontal-scaling-instances-performance-comparison-between-tubemq-and-kafka">5.2 Scenario 2: Single topic situation, one input and two output model, fixed consumption package size, number of horizontal scaling instances, performance comparison between TubeMQ and Kafka<a href="#52-scenario-2-single-topic-situation-one-input-and-two-output-model-fixed-consumption-package-size-number-of-horizontal-scaling-instances-performance-comparison-between-tubemq-and-kafka" class="hash-link" aria-label="Direct link to 5.2 Scenario 2: Single topic situation, one input and two output model, fixed consumption package size, number of horizontal scaling instances, performance comparison between TubeMQ and Kafka" title="Direct link to 5.2 Scenario 2: Single topic situation, one input and two output model, fixed consumption package size, number of horizontal scaling instances, performance comparison between TubeMQ and Kafka"></a></h3><p><img loading="lazy" src="/assets/images/perf_scenario_2-4a1a57e5bfe93bbd22a7baca30369088.png" width="1254" height="156" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="521-conclusion">5.2.1 【Conclusion】<a href="#521-conclusion" class="hash-link" aria-label="Direct link to 5.2.1 【Conclusion】" title="Direct link to 5.2.1 【Conclusion】"></a></h4><p>From the combination of test data of scenario 1 and scenario 2:</p><ol><li>As the number of instances increases, the throughput of TubeMQ increases. When there are 4 instances, the throughput is the same as that of Kafka, the usage of disk IO is lower than that of Kafka, and the usage of CPU is higher than that of Kafka;</li><li>The consumption mode of TubeMQ affects the throughput of the system. The performance of the memory read mode (301) is lower than that of the file read mode (101), but it can reduce the delay of messages;</li><li>Kafka does not improve the system throughput as scheduled as the number of partition instances increases;</li><li>After TubeMQ increases the instances (physical files) equivalent to Kafka, the throughput increases accordingly, and the test effect reaches and exceeds that of Kafka when there are 4 instances.
The status of 5 partitions; TubeMQ can adjust the data reading method according to the needs of business or system configuration, which can dynamically improve the throughput of the system; as the number of partitions increases, the incoming traffic of Kafka decreases;</li></ol><h4 class="anchor anchorWithStickyNavbar_LWe7" id="522-indicators">5.2.2 【Indicators】<a href="#522-indicators" class="hash-link" aria-label="Direct link to 5.2.2 【Indicators】" title="Direct link to 5.2.2 【Indicators】"></a></h4><p><strong>Note 1:</strong> In the following scenarios, they are all tests in different partitions or instances, and in different read mode scenarios under a single topic test, and the length of a single message packet is 1K;</p><p><strong>Note 2:</strong>In read mode, set qryPriorityId to the corresponding value through admin<!-- -->_<!-- -->upd<!-- -->_<!-- -->def<!-- -->_<!-- -->flow<!-- -->_<!-- -->control<!-- -->_<!-- -->rule.</p><p><img loading="lazy" src="/assets/images/perf_scenario_2_index-c704f7b90cebbed8902c727a4f409a4e.png" width="1230" height="392" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="53-scenario-3-multi-topic-scenario-fixed-message-packet-size-number-of-instances-and-partitions-and-investigate-the-performance-of-tubemq-and-kafka-in-100-200-500-and-1000-topic-scenarios">5.3 Scenario 3: Multi-topic scenario, fixed message packet size, number of instances and partitions, and investigate the performance of TubeMQ and Kafka in 100, 200, 500, and 1000 topic scenarios<a href="#53-scenario-3-multi-topic-scenario-fixed-message-packet-size-number-of-instances-and-partitions-and-investigate-the-performance-of-tubemq-and-kafka-in-100-200-500-and-1000-topic-scenarios" class="hash-link" aria-label="Direct link to 5.3 Scenario 3: Multi-topic scenario, fixed message packet size, number of instances and partitions, and investigate the performance of TubeMQ and Kafka in 100, 200, 500, and 1000 topic scenarios" title="Direct link to 5.3 Scenario 3: Multi-topic scenario, fixed message packet size, number of instances and partitions, and investigate the performance of TubeMQ and Kafka in 100, 200, 500, and 1000 topic scenarios"></a></h3><p><img loading="lazy" src="/assets/images/perf_scenario_3-d44a94956ed71a35969b898f8c060bd6.png" width="1280" height="184" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="531-conclusion">5.3.1 【Conclusion】<a href="#531-conclusion" class="hash-link" aria-label="Direct link to 5.3.1 【Conclusion】" title="Direct link to 5.3.1 【Conclusion】"></a></h4><p>Test in multi-topic scenarios:</p><ol><li>As the number of topics in TubeMQ increases, the production and consumption performance maintains an average line, there is no particularly large traffic fluctuation, and the number of file handles, memory, and network connections occupied is not large (1k
There are about 7500 file handles under topic and 150 network connections), but the CPU usage is relatively large;</li><li>After TubeMQ has changed the consumption mode from memory consumption to file consumption, the throughput has increased greatly, the CPU usage has decreased, and services with different performance requirements can be differentiated;</li><li>As the number of topics increases, the throughput of Kafka decreases significantly. At the same time, the Kafka traffic fluctuates violently, the storage and consumption lag in long-term operation, and the throughput decreases obviously, and the number of memory, file handles, and network connections is very large. (at 1K
When Topic is configured, the network connection reaches 1.2W, and the file handle reaches 4.5W) and other problems;</li><li>In terms of data comparison, TubeMQ runs more stably than Kafka, the throughput is presented in a stable situation, the throughput does not drop for a long time, and the resource occupation is small, but the CPU occupation needs to be solved in subsequent versions;</li></ol><h4 class="anchor anchorWithStickyNavbar_LWe7" id="532-indicators">5.3.2 【Indicators】<a href="#532-indicators" class="hash-link" aria-label="Direct link to 5.3.2 【Indicators】" title="Direct link to 5.3.2 【Indicators】"></a></h4><p><strong>Note:</strong> In the following scenarios, the package length is 1K and the number of partitions is 10.</p><p><img loading="lazy" src="/assets/images/perf_scenario_3_index-5e779cbf395ed76341b6f1f5c83dce43.png" width="1304" height="442" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="54-scenario-4-100-topics-one-input-and-one-full-output-five-partial-filtering-one-full-topics-pull-consumption-filtering-consumption-using-5-different-consumption-groups-filtering-out-10-from-the-same-20-topics-10-message-content">5.4 Scenario 4: 100 topics, one input and one full output Five partial filtering: one full topic&#x27;s Pull consumption; filtering consumption using 5 different consumption groups, filtering out 10 from the same 20 topics 10% Message content<a href="#54-scenario-4-100-topics-one-input-and-one-full-output-five-partial-filtering-one-full-topics-pull-consumption-filtering-consumption-using-5-different-consumption-groups-filtering-out-10-from-the-same-20-topics-10-message-content" class="hash-link" aria-label="Direct link to 5.4 Scenario 4: 100 topics, one input and one full output Five partial filtering: one full topic&#x27;s Pull consumption; filtering consumption using 5 different consumption groups, filtering out 10 from the same 20 topics 10% Message content" title="Direct link to 5.4 Scenario 4: 100 topics, one input and one full output Five partial filtering: one full topic&#x27;s Pull consumption; filtering consumption using 5 different consumption groups, filtering out 10 from the same 20 topics 10% Message content"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="541-conclusion">5.4.1 【Conclusion】<a href="#541-conclusion" class="hash-link" aria-label="Direct link to 5.4.1 【Conclusion】" title="Direct link to 5.4.1 【Conclusion】"></a></h4><ol><li>TubeMQ adopts the mode of server-side filtering, and there is a significant difference between outgoing traffic indicators and incoming traffic;</li><li>TubeMQ server-side filtering provides more resources for production, and the production performance is improved compared to the non-filtering situation;</li><li>Kafka adopts the client-side filtering mode, the incoming traffic is not improved, the outgoing traffic is almost twice the incoming traffic, and the incoming and outgoing traffic is unstable;</li></ol><h4 class="anchor anchorWithStickyNavbar_LWe7" id="542-indicators">5.4.2 【Indicators】<a href="#542-indicators" class="hash-link" aria-label="Direct link to 5.4.2 【Indicators】" title="Direct link to 5.4.2 【Indicators】"></a></h4><p><strong>Note:</strong> In the following scenario, the topic is 100, the packet length is 1K, and the number of partitions is 10</p><p><img loading="lazy" src="/assets/images/perf_scenario_4_index-0d5bb2ad4c8a241281b1b7fe2f42a3e1.png" width="1272" height="372" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="55-scenario-5-comparison-of-data-consumption-latency-between-tubemq-and-kafka">5.5 Scenario 5: Comparison of Data Consumption Latency between TubeMQ and Kafka<a href="#55-scenario-5-comparison-of-data-consumption-latency-between-tubemq-and-kafka" class="hash-link" aria-label="Direct link to 5.5 Scenario 5: Comparison of Data Consumption Latency between TubeMQ and Kafka" title="Direct link to 5.5 Scenario 5: Comparison of Data Consumption Latency between TubeMQ and Kafka"></a></h3><table><thead><tr><th>Type</th><th>Delay</th><th>Ping Delay</th></tr></thead><tbody><tr><td>TubeMQ</td><td>90% data within 10ms±</td><td>C-&gt;B: 0.05ms ~ 0.13ms, P-&gt;B: 2.40ms ~ 2.42ms</td></tr><tr><td>Kafka</td><td>90% concentrated in 250ms±</td><td>C-&gt;B: 0.05ms ~ 0.07ms, P-<!-- -->&gt;<!-- -->B: 2.95ms <!-- -->~<!-- --> 2.96ms</td></tr></tbody></table><p>Remarks: There is a situation in the consumer side of TubeMQ that the data is not found when waiting for the queue processing message to equalize the production. The default waiting delay is 200ms. When testing this item, the TubeMQ consumer should adjust the pull delay (ConsumerConfig.setMsgNotFoundWaitPeriodMs()) to 10ms, or set the frequency control policy to 10ms.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="56-scenario-6-the-impact-of-adjusting-the-memory-cache-size-memcachemsgsizeinmb-of-topic-configuration-on-throughput">5.6 Scenario 6: The impact of adjusting the memory cache size (memCacheMsgSizeInMB) of topic configuration on throughput<a href="#56-scenario-6-the-impact-of-adjusting-the-memory-cache-size-memcachemsgsizeinmb-of-topic-configuration-on-throughput" class="hash-link" aria-label="Direct link to 5.6 Scenario 6: The impact of adjusting the memory cache size (memCacheMsgSizeInMB) of topic configuration on throughput" title="Direct link to 5.6 Scenario 6: The impact of adjusting the memory cache size (memCacheMsgSizeInMB) of topic configuration on throughput"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="561-conclusion">5.6.1 【Conclusion】<a href="#561-conclusion" class="hash-link" aria-label="Direct link to 5.6.1 【Conclusion】" title="Direct link to 5.6.1 【Conclusion】"></a></h4><ol><li>TubeMQ&#x27;s adjustment of the topic&#x27;s memory cache size can have a positive impact on throughput, and it can be adjusted reasonably according to the machine conditions in actual use;</li><li>From the actual usage, the memory size setting is not as large as possible, and the value needs to be set reasonably;</li></ol><h4 class="anchor anchorWithStickyNavbar_LWe7" id="562-indicators">5.6.2 【Indicators】<a href="#562-indicators" class="hash-link" aria-label="Direct link to 5.6.2 【Indicators】" title="Direct link to 5.6.2 【Indicators】"></a></h4><p><strong>Note:</strong> In the following scenarios, the consumption method is to read the PULL consumption of memory (301), and the length of a single message packet is 1K
<img loading="lazy" src="/assets/images/perf_scenario_6_index-299d765ac2d0fe177e1d3bd625287af0.png" width="1302" height="270" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="572-indicators">5.7.2 【Indicators】<a href="#572-indicators" class="hash-link" aria-label="Direct link to 5.7.2 【Indicators】" title="Direct link to 5.7.2 【Indicators】"></a></h4><p><img loading="lazy" src="/assets/images/perf_scenario_7-c46e3a1d6d6591c1f0728d16bfbfabdd.png" width="1479" height="706" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="58-scenario-8-evaluate-the-performance-of-the-two-systems-in-the-case-of-multiple-models">5.8 Scenario 8: Evaluate the performance of the two systems in the case of multiple models<a href="#58-scenario-8-evaluate-the-performance-of-the-two-systems-in-the-case-of-multiple-models" class="hash-link" aria-label="Direct link to 5.8 Scenario 8: Evaluate the performance of the two systems in the case of multiple models" title="Direct link to 5.8 Scenario 8: Evaluate the performance of the two systems in the case of multiple models"></a></h3><p><img loading="lazy" src="/assets/images/perf_scenario_8-f47ed2cb931218a3072e6010e1d192bd.png" width="1416" height="116" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="581-conclusion">5.8.1 <!-- -->[Conclusion]<a href="#581-conclusion" class="hash-link" aria-label="Direct link to 581-conclusion" title="Direct link to 581-conclusion"></a></h4><ol><li>TubeMQ has a higher throughput under the BX1 model than the TS60 model. At the same time, because the IO util reaches the bottleneck, it cannot be improved any more. The throughput of the CG1 model has a higher index value than that of the BX1 model;</li><li>The system throughput of Kafka under the BX1 model is unstable, and it is lower than that tested under the TS60 model. Under the CG1 model, the system throughput reaches the highest level, and the 10G network card is full;</li><li>Under the condition of SATA disk storage, the performance indicators of TubeMQ have been significantly improved with the improvement of hardware configuration; the performance indicators of Kafka have not increased but decreased with the improvement of hardware models;</li><li>Under the condition of SSD disk storage, Kafka has the best performance indicators, and TubeMQ indicators are not as good as Kafka;</li><li>The data storage disk of the CG1 model is small (only 2.2T), and the disk will be full within 90 minutes under the RAID 10 configuration, so it is impossible to test the long-term operation of the two systems.</li></ol><h4 class="anchor anchorWithStickyNavbar_LWe7" id="582-indicators">5.8.2 【Indicators】<a href="#582-indicators" class="hash-link" aria-label="Direct link to 5.8.2 【Indicators】" title="Direct link to 5.8.2 【Indicators】"></a></h4><p><strong>Note 1:</strong> In the following scenarios, the topic number is configured with 500 topics, 10 partitions, and the message packet size is 1K bytes;</p><p><strong>Note 2:</strong> TubeMQ uses 301 memory read mode consumption;
<img loading="lazy" src="/assets/images/perf_scenario_8_index-db4e624b7ce3f48501d45a96f41b86cf.png" width="1022" height="242" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="6-appendix">6 Appendix<a href="#6-appendix" class="hash-link" aria-label="Direct link to 6 Appendix" title="Direct link to 6 Appendix"></a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="61-appendix-1-resource-occupancy-chart-for-different-models">6.1 Appendix 1 Resource occupancy chart for different models:<a href="#61-appendix-1-resource-occupancy-chart-for-different-models" class="hash-link" aria-label="Direct link to 6.1 Appendix 1 Resource occupancy chart for different models:" title="Direct link to 6.1 Appendix 1 Resource occupancy chart for different models:"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="611-bx1-model-test">6.1.1 <!-- -->[BX1 model test]<a href="#611-bx1-model-test" class="hash-link" aria-label="Direct link to 611-bx1-model-test" title="Direct link to 611-bx1-model-test"></a></h4><p><img loading="lazy" src="/assets/images/perf_appendix_1_bx1_1-2569bf69ff5bc660661e354ada7c30a0.png" width="793" height="283" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_1_bx1_2-a99a18e0aec82cb1b27d63f7b35016b1.png" width="789" height="281" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_1_bx1_3-9f41ba75bfea06d9c5d13be7ea65a3b8.png" width="791" height="266" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_1_bx1_4-cb0135eb550f26c0b12b7767a6455690.png" width="791" height="262" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="612-cg1-model-test">6.1.2 <!-- -->[CG1 model test]<a href="#612-cg1-model-test" class="hash-link" aria-label="Direct link to 612-cg1-model-test" title="Direct link to 612-cg1-model-test"></a></h4><p><img loading="lazy" src="/assets/images/perf_appendix_1_cg1_1-816e49626e8c00fc5fb81d9401d2d166.png" width="1226" height="404" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_1_cg1_2-018b101b947eb70b924455162d341e7a.png" width="1212" height="414" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_1_cg1_3-d293633615408f445546a8729a1b2e76.png" width="777" height="275" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_1_cg1_4-889b8b22b29b5f238d5e8708cded2ba7.png" width="791" height="275" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="62-appendix-2-resource-occupancy-chart-for-multi-topic-testing">6.2 Appendix 2 Resource occupancy chart for multi-topic testing:<a href="#62-appendix-2-resource-occupancy-chart-for-multi-topic-testing" class="hash-link" aria-label="Direct link to 6.2 Appendix 2 Resource occupancy chart for multi-topic testing:" title="Direct link to 6.2 Appendix 2 Resource occupancy chart for multi-topic testing:"></a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="621-100-topics">6.2.1 <!-- -->[100 topics]<a href="#621-100-topics" class="hash-link" aria-label="Direct link to 621-100-topics" title="Direct link to 621-100-topics"></a></h4><p><img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_1-e9529684389a1a1ed8a82327cc131031.png" width="791" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_2-779c578376c46cba5aa35486de2d04a1.png" width="793" height="260" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_3-81b2240434b1e09a9b5a8269ae6875d3.png" width="791" height="262" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_4-1692e86ee3fdeb6c9efa128b1de9682d.png" width="795" height="262" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_5-3d2289d05c837a697da821d144f4c7e2.png" width="781" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_6-4ad23b2f655faece485dde80e75a305a.png" width="785" height="260" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_7-69303e0b51eb9b60ce7323901a7ddb37.png" width="783" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_8-d59956c71c05b2f2794cbe7a80c47729.png" width="789" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_100_9-27be3ec8731f4f9db842f005508d18db.png" width="785" height="260" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="622-200-topics">6.2.2 <!-- -->[200 topics]<a href="#622-200-topics" class="hash-link" aria-label="Direct link to 622-200-topics" title="Direct link to 622-200-topics"></a></h4><p><img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_1-5dc4f7f5ad0ed34af6fe8d13b25c076a.png" width="777" height="254" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_2-60b77f89edbe4e2e86fd74f3dd01e961.png" width="775" height="254" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_3-105c9f9374062031fb9b0cb420215a35.png" width="779" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_4-29d9f00f5ca13d4a0b7a1c8f432cde1c.png" width="779" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_5-a993693e37187dc59b6968cda1ec7707.png" width="779" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_6-ac481d7c3c44120233f24a5e32c3c604.png" width="781" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_7-4fa33cbb903722f864270c73f94069dd.png" width="777" height="254" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_8-1bcda1b61732b473eaad79e6fed04be8.png" width="779" height="252" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_200_9-1c88286d4d391537b06ee301f3bcdaf8.png" width="783" height="256" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="623-500-topics">6.2.3 <!-- -->[500 topics]<a href="#623-500-topics" class="hash-link" aria-label="Direct link to 623-500-topics" title="Direct link to 623-500-topics"></a></h4><p><img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_1-bd738111f6384cee823eaecd0ecfc989.png" width="779" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_2-9c640d48c3bb17761d64605bb7234cff.png" width="783" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_3-90effa18711727a006173ce84e2d9319.png" width="779" height="254" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_4-85ff48098c98820c28efb8941800960e.png" width="785" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_5-77b80f60ce13afa28791c7fc6c645642.png" width="779" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_6-1f35e03545b9318e8db98d72d1631025.png" width="785" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_7-771b417d4b51bde730ff8c2e054decc6.png" width="781" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_8-7bcd4a002127cf4bfb3d80a000bd9c3d.png" width="785" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_500_9-af5076488ae5d9a19cdd9c6d297fa124.png" width="781" height="256" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="624-1000-topics">6.2.4 <!-- -->[1000 topics]<a href="#624-1000-topics" class="hash-link" aria-label="Direct link to 624-1000-topics" title="Direct link to 624-1000-topics"></a></h4><p><img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_1-1ca03ac889455e743218a39275eaf3a5.png" width="781" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_2-da82ae78bad8b756ce7c4c0a40a5db13.png" width="777" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_3-f973676d2b7473cba9eaddd99bfaaa2f.png" width="781" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_4-a49a4c06f83335cbf25cccb34ad62174.png" width="781" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_5-08c68e9947e31aafc0d11590518a10fa.png" width="781" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_6-8cf474f484f303e2b7d29fb1c85df6c7.png" width="781" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_7-3ed1c7626a8fbc622d0153960500bd32.png" width="783" height="256" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_8-f4a78c6fe32dbd576eecf35ff707d24c.png" width="785" height="258" class="img_ev3q">
<img loading="lazy" src="/assets/images/perf_appendix_2_topic_1000_9-348080291e8b178ee5086daef9e8256b.png" width="781" height="256" class="img_ev3q"></p><hr><a href="#top">Back to top</a></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/inlong-website/edit/master/versioned_docs/version-1.5.0/modules/tubemq/tubemq_perf_test_vs_Kafka.md" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/1.5.0/modules/tubemq/tubemq_metrics"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">TubeMQ Metrics</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/1.5.0/modules/sort/overview"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Overview</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-background" class="table-of-contents__link toc-highlight">1 Background</a></li><li><a href="#2-test-scenario-scheme" class="table-of-contents__link toc-highlight">2 Test scenario scheme</a></li><li><a href="#3-test-conclusion" class="table-of-contents__link toc-highlight">3 Test Conclusion</a></li><li><a href="#4-test-environment-and-configuration" class="table-of-contents__link toc-highlight">4 Test environment and configuration</a><ul><li><a href="#41-software-version-and-deployment-environment" class="table-of-contents__link toc-highlight">4.1 Software version and deployment environment</a></li><li><a href="#42-broker-hardware-model-configuration" class="table-of-contents__link toc-highlight">4.2 Broker hardware model configuration</a></li><li><a href="#43-broker-system-configuration" class="table-of-contents__link toc-highlight">4.3 Broker system configuration</a></li></ul></li><li><a href="#5-test-scenarios-and-conclusions" class="table-of-contents__link toc-highlight">5 Test scenarios and conclusions</a><ul><li><a href="#51-scenario-1-basic-scenario-single-topic-situation-one-input-and-two-output-models-using-different-consumption-modes-message-packets-of-different-sizes-and-partitions-to-scale-horizontally-comparing-the-performance-of-tubemq-and-kafka" class="table-of-contents__link toc-highlight">5.1 Scenario 1: Basic scenario, single topic situation, one input and two output models, using different consumption modes, message packets of different sizes, and partitions to scale horizontally, comparing the performance of TubeMQ and Kafka</a></li><li><a href="#52-scenario-2-single-topic-situation-one-input-and-two-output-model-fixed-consumption-package-size-number-of-horizontal-scaling-instances-performance-comparison-between-tubemq-and-kafka" class="table-of-contents__link toc-highlight">5.2 Scenario 2: Single topic situation, one input and two output model, fixed consumption package size, number of horizontal scaling instances, performance comparison between TubeMQ and Kafka</a></li><li><a href="#53-scenario-3-multi-topic-scenario-fixed-message-packet-size-number-of-instances-and-partitions-and-investigate-the-performance-of-tubemq-and-kafka-in-100-200-500-and-1000-topic-scenarios" class="table-of-contents__link toc-highlight">5.3 Scenario 3: Multi-topic scenario, fixed message packet size, number of instances and partitions, and investigate the performance of TubeMQ and Kafka in 100, 200, 500, and 1000 topic scenarios</a></li><li><a href="#54-scenario-4-100-topics-one-input-and-one-full-output-five-partial-filtering-one-full-topics-pull-consumption-filtering-consumption-using-5-different-consumption-groups-filtering-out-10-from-the-same-20-topics-10-message-content" class="table-of-contents__link toc-highlight">5.4 Scenario 4: 100 topics, one input and one full output Five partial filtering: one full topic&#39;s Pull consumption; filtering consumption using 5 different consumption groups, filtering out 10 from the same 20 topics 10% Message content</a></li><li><a href="#55-scenario-5-comparison-of-data-consumption-latency-between-tubemq-and-kafka" class="table-of-contents__link toc-highlight">5.5 Scenario 5: Comparison of Data Consumption Latency between TubeMQ and Kafka</a></li><li><a href="#56-scenario-6-the-impact-of-adjusting-the-memory-cache-size-memcachemsgsizeinmb-of-topic-configuration-on-throughput" class="table-of-contents__link toc-highlight">5.6 Scenario 6: The impact of adjusting the memory cache size (memCacheMsgSizeInMB) of topic configuration on throughput</a></li><li><a href="#58-scenario-8-evaluate-the-performance-of-the-two-systems-in-the-case-of-multiple-models" class="table-of-contents__link toc-highlight">5.8 Scenario 8: Evaluate the performance of the two systems in the case of multiple models</a></li></ul></li><li><a href="#6-appendix" class="table-of-contents__link toc-highlight">6 Appendix</a><ul><li><a href="#61-appendix-1-resource-occupancy-chart-for-different-models" class="table-of-contents__link toc-highlight">6.1 Appendix 1 Resource occupancy chart for different models:</a></li><li><a href="#62-appendix-2-resource-occupancy-chart-for-multi-topic-testing" class="table-of-contents__link toc-highlight">6.2 Appendix 2 Resource occupancy chart for multi-topic testing:</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Events</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://www.apachecon.com/" target="_blank" rel="noopener noreferrer" class="footer__link-item">ApacheCon<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a class="acevent" data-format="square" data-mode="dark" data-event="random"></a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://twitter.com/ApacheInlong" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://inlong.apache.org/img/apache-inlong-wechat.jpg" target="_blank" rel="noopener noreferrer" class="footer__link-item">WeChat<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="mailto:dev@inlong.apache.org" target="_blank" rel="noopener noreferrer" class="footer__link-item">Email</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a href="https://github.com/apache/inlong" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/asf_logo.svg" alt="Apache InLong" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/asf_logo.svg" alt="Apache InLong" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div><div class="footer__copyright"><div style="font-family: Avenir-Medium;font-size: 14px;color: #999;">
<div>Copyright © 2020-2024 The Apache Software Foundation. Licensed under the Apache License, Version 2.0.</div>
<div style="margin-top: 20px; padding-top: 20px; border-top: 1px solid #666;line-height: 20px;">The Apache Software Foundation Apache InLong, InLong, Apache, the Apache feather, and the Apache InLong project logo are either registered trademarks or trademarks of the Apache Software Foundation.</div>
</div></div></div></div></footer></div>
<script src="/assets/js/runtime~main.63c98e82.js"></script>
<script src="/assets/js/main.070aef2a.js"></script>
</body>
</html>