blob: ee1e56e3ab38312f9bd8b4782101bf36ff357ef1 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Apache Flink: 数据流上的有状态计算</title>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="/css/flink.css">
<link rel="stylesheet" href="/css/syntax.css">
<!-- Blog RSS feed -->
<link href="/blog/feed.xml" rel="alternate" type="application/rss+xml" title="Apache Flink Blog: RSS feed" />
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<!-- We need to load Jquery in the header for custom google analytics event tracking-->
<script src="/js/jquery.min.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Main content. -->
<div class="container">
<div class="row">
<div id="sidebar" class="col-sm-3">
<!-- Top navbar. -->
<nav class="navbar navbar-default">
<!-- The logo. -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-logo">
<a href="/zh/">
<img alt="Apache Flink" src="/img/flink-header-logo.svg" width="147px" height="73px">
</a>
</div>
</div><!-- /.navbar-header -->
<!-- The navigation links. -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-main">
<!-- First menu section explains visitors what Flink is -->
<!-- What is Stream Processing? -->
<!--
<li><a href="/zh/streamprocessing1.html">What is Stream Processing?</a></li>
-->
<!-- What is Flink? -->
<li><a href="/zh/flink-architecture.html">Apache Flink 是什么?</a></li>
<!-- What is Stateful Functions? -->
<li><a href="/zh/stateful-functions.html">What is Stateful Functions?</a></li>
<!-- Use cases -->
<li><a href="/zh/usecases.html">应用场景</a></li>
<!-- Powered by -->
<li><a href="/zh/poweredby.html">Flink 用户</a></li>
&nbsp;
<!-- Second menu section aims to support Flink users -->
<!-- Downloads -->
<li><a href="/zh/downloads.html">下载</a></li>
<!-- Getting Started -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">教程<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/getting-started/index.html" target="_blank">With Flink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1/getting-started/project-setup.html" target="_blank">With Flink Stateful Functions <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="/zh/training.html">Training Course</a></li>
</ul>
</li>
<!-- Documentation -->
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">文档<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11" target="_blank">Flink 1.11 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-docs-master" target="_blank">Flink Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1" target="_blank">Flink Stateful Functions 2.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-master" target="_blank">Flink Stateful Functions Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
</ul>
</li>
<!-- getting help -->
<li><a href="/zh/gettinghelp.html">获取帮助</a></li>
<!-- Blog -->
<li><a href="/blog/"><b>Flink 博客</b></a></li>
<!-- Flink-packages -->
<li>
<a href="https://flink-packages.org" target="_blank">flink-packages.org <small><span class="glyphicon glyphicon-new-window"></span></small></a>
</li>
&nbsp;
<!-- Third menu section aim to support community and contributors -->
<!-- Community -->
<li><a href="/zh/community.html">社区 &amp; 项目信息</a></li>
<!-- Roadmap -->
<li><a href="/zh/roadmap.html">开发计划</a></li>
<!-- Contribute -->
<li><a href="/zh/contributing/how-to-contribute.html">如何参与贡献</a></li>
<!-- GitHub -->
<li>
<a href="https://github.com/apache/flink" target="_blank">Flink on GitHub <small><span class="glyphicon glyphicon-new-window"></span></small></a>
</li>
&nbsp;
<!-- Language Switcher -->
<li>
<a href="/">English</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-bottom">
<hr />
<!-- Twitter -->
<li><a href="https://twitter.com/apacheflink" target="_blank">@ApacheFlink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<!-- Visualizer -->
<li class=" hidden-md hidden-sm"><a href="/visualizer/" target="_blank">Plan Visualizer <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<hr />
<li><a href="https://apache.org" target="_blank">Apache Software Foundation <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
<li>
<style>
.smalllinks:link {
display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px;
}
</style>
<a class="smalllinks" href="https://www.apache.org/licenses/" target="_blank">License</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
<a class="smalllinks" href="https://www.apache.org/security/" target="_blank">Security</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
<a class="smalllinks" href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
<a class="smalllinks" href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</nav>
</div>
<div class="col-sm-9">
<div class="row-fluid">
<div class="col-sm-12">
<p class="lead">
<strong>Apache Flink<sup>®</sup> - 数据流上的有状态计算</strong>
</p>
</div>
<div class="col-sm-12">
<hr />
</div>
</div>
<!-- High-level architecture figure -->
<div class="row front-graphic">
<hr />
<img src="/img/flink-home-graphic.png" width="800px" />
</div>
<!-- Feature grid -->
<!--
<div class="row">
<div class="col-sm-12">
<hr />
<h2><a href="/zh/features.html">Features</a></h2>
</div>
</div>
-->
<div class="row">
<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon-th"></span> <b>所有流式场景</b>
</div>
<div class="panel-body">
<ul style="font-size: small;">
<li>事件驱动应用</li>
<li>流批分析</li>
<li>数据管道 &amp; ETL</li>
</ul>
<a href="/zh/usecases.html">了解更多</a>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon-ok"></span> <b>正确性保证</b>
</div>
<div class="panel-body">
<ul style="font-size: small;">
<li>Exactly-once 状态一致性</li>
<li>事件时间处理</li>
<li>成熟的迟到数据处理</li>
</ul>
<a href="/zh/flink-applications.html#building-blocks-for-streaming-applications">了解更多</a>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon glyphicon-sort-by-attributes"></span> <b>分层 API</b>
</div>
<div class="panel-body">
<ul style="font-size: small;">
<li>SQL on Stream &amp; Batch Data</li>
<li>DataStream API &amp; DataSet API</li>
<li>ProcessFunction (Time &amp; State)</li>
</ul>
<a href="/zh/flink-applications.html#layered-apis">了解更多</a>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon-dashboard"></span> <b>聚焦运维</b>
</div>
<div class="panel-body">
<ul style="font-size: small;">
<li>灵活部署</li>
<li>高可用</li>
<li>保存点</li>
</ul>
<a href="/zh/flink-operations.html">了解更多</a>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon-fullscreen"></span> <b>大规模计算</b>
</div>
<div class="panel-body">
<ul style="font-size: small;">
<li>水平扩展架构</li>
<li>支持超大状态</li>
<li>增量检查点机制</li>
</ul>
<a href="/zh/flink-architecture.html#run-applications-at-any-scale">了解更多</a>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon-flash"></span> <b>性能卓越</b>
</div>
<div class="panel-body">
<ul style="font-size: small;">
<li>低延迟</li>
<li>高吞吐</li>
<li>内存计算</li>
</ul>
<a href="/zh/flink-architecture.html#leverage-in-memory-performance">了解更多</a>
</div>
</div>
</div>
</div>
<!-- Powered by section -->
<div class="row">
<div class="col-sm-12">
<br />
<h2><a href="/zh/poweredby.html">Apache Flink 用户</a></h2>
<div class="jcarousel">
<ul>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/alibaba-logo.png" width="175" alt="Alibaba" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/aws-logo.png" width="175" alt="AWS" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/capital-one-logo.png" width="175" alt="Capital One" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/uber-logo.png" width="175" alt="Uber" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/bettercloud-logo.png" width="175" alt="BetterCloud" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/bouygues-logo.jpg" width="175" alt="Bouygues" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/comcast-logo.png" width="175" alt="Comcast" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/criteo-logo.png" width="175" alt="Criteo" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/didi-logo.png" width="175" alt="Didi" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/dtrb-logo.png" width="175" alt="Drivetribe" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/ebay-logo.png" width="175" alt="Ebay" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/ericsson-logo.png" width="175" alt="Ericsson" />
</a></div>
</li>
<li>
<div><a href="/poweredby.html">
<img src="/img/poweredby/gojek-logo.png" width="175" alt="Gojek" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/huawei-logo.png" width="175" alt="Huawei" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/lyft-logo.png" width="175" alt="Lyft" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/king-logo.png" width="175" alt="King" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/klaviyo-logo.png" width="175" alt="Klaviyo" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/kuaishou-logo.jpg" width="175" alt="Kuaishou" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/mediamath-logo.png" width="175" alt="MediaMath" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/mux-logo.png" width="175" alt="Mux" />
</a></div>
</li>
<li>
<div><a href="/poweredby.html">
<img src="/img/poweredby/oppo-logo.png" width="175" alt="OPPO" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/otto-group-logo.png" width="175" alt="Otto Group" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/ovh-logo.png" width="175" alt="OVH" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/razorpay-logo.png" width="175" alt="Razorpay" />
</a></div>
</li>
<li>
<div><a href="/poweredby.html">
<img src="/img/poweredby/pinterest-logo.png" width="175" alt="Pinterest" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/researchgate-logo.png" width="175" alt="ResearchGate" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/sktelecom-logo.png" width="175" alt="SK telecom" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/telefonica-next-logo.png" width="175" alt="Telefonica Next" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/tencent-logo.png" width="175" alt="Tencent" />
</a></div>
</li>
<li>
<div><a href="/poweredby.html">
<img src="/img/poweredby/vip-logo.png" width="175" alt="Vip" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/xiaomi-logo.png" width="175" alt="Xiaomi" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/yelp-logo.png" width="175" alt="Yelp" />
</a></div>
</li>
<li>
<div><a href="/zh/poweredby.html">
<img src="/img/poweredby/zalando-logo.jpg" width="175" alt="Zalando" />
</a></div>
</li>
</ul>
</div>
<a href="#" class="jcarousel-control-prev" data-jcarouselcontrol="true"><span class="glyphicon glyphicon-chevron-left"></span></a>
<a href="#" class="jcarousel-control-next" data-jcarouselcontrol="true"><span class="glyphicon glyphicon-chevron-right"></span></a>
</div>
</div>
<!-- Events section -->
<div class="row">
<div class="col-sm-12">
<hr />
</div>
<div class="col-sm-3">
<h2><a>Upcoming Events</a></h2>
</div>
<div class="col-sm-9">
<!-- Flink Forward -->
<a href="https://flink-forward.org" target="_blank">
<img style="width: 200px; padding-right: 30px" src="/img/flink-forward.png" alt="Flink Forward" />
</a>
<!-- ApacheCon -->
<a href="https://www.apache.org/events/current-event" target="_blank">
<img src="https://www.apache.org/events/current-event-234x60.png" alt="ApacheCon" />
</a>
</div>
</div>
<!-- Updates section -->
<div class="row">
<div class="col-sm-12">
<hr />
</div>
<div class="col-sm-3">
<h2><a href="/blog">最新博客列表</a></h2>
</div>
<div class="col-sm-9">
<dl>
<dt> <a href="/news/2020/08/20/flink-docker.html">The State of Flink on Docker</a></dt>
<dd>This blog post gives an update on the recent developments of Flink's support for Docker.</dd>
<dt> <a href="/2020/08/19/statefun.html">Monitoring and Controlling Networks of IoT Devices with Flink Stateful Functions</a></dt>
<dd><p>In this blog post, we’ll take a look at a class of use cases that is a natural fit for <a href="https://flink.apache.org/stateful-functions.html">Flink Stateful Functions</a>: monitoring and controlling networks of connected devices (often called the “Internet of Things” (IoT)).</p>
</dd>
<dt> <a href="/news/2020/08/06/external-resource.html">Accelerating your workload with GPU and other external resources</a></dt>
<dd>This post introduces the new External Resource Framework in Flink 1.11 and take GPU as an example to show how to accelerate your workload with external resources.</dd>
<dt> <a href="/2020/08/04/pyflink-pandas-udf-support-flink.html">PyFlink: The integration of Pandas into PyFlink</a></dt>
<dd>The Apache Flink community put some great effort into integrating Pandas with PyFlink in the latest Flink version 1.11. Some of the added features include support for Pandas UDF and the conversion between Pandas DataFrame and Table. In this article, we will introduce how these functionalities work and how to use them with a step-by-step example.</dd>
<dt> <a href="/news/2020/07/30/demo-fraud-detection-3.html">Advanced Flink Application Patterns Vol.3: Custom Window Processing</a></dt>
<dd>In this series of blog posts you will learn about powerful Flink patterns for building streaming applications.</dd>
</dl>
</div>
<!-- Scripts section -->
<script type="text/javascript" src="/js/jquery.jcarousel.min.js"></script>
<script type="text/javascript">
$(window).load(function(){
$(function() {
var jcarousel = $('.jcarousel');
jcarousel
.on('jcarousel:reload jcarousel:create', function () {
var carousel = $(this),
width = carousel.innerWidth();
if (width >= 600) {
width = width / 4;
} else if (width >= 350) {
width = width / 3;
}
carousel.jcarousel('items').css('width', Math.ceil(width) + 'px');
})
.jcarousel({
wrap: 'circular',
autostart: true
});
$('.jcarousel-control-prev')
.jcarouselControl({
target: '-=1'
});
$('.jcarousel-control-next')
.jcarouselControl({
target: '+=1'
});
$('.jcarousel-pagination')
.on('jcarouselpagination:active', 'a', function() {
$(this).addClass('active');
})
.on('jcarouselpagination:inactive', 'a', function() {
$(this).removeClass('active');
})
.on('click', function(e) {
e.preventDefault();
})
.jcarouselPagination({
perPage: 1,
item: function(page) {
return '<a href="#' + page + '">' + page + '</a>';
}
});
});
});
</script>
</div>
</div>
</div>
<hr />
<div class="row">
<div class="footer text-center col-sm-12">
<p>Copyright © 2014-2019 <a href="http://apache.org">The Apache Software Foundation</a>. All Rights Reserved.</p>
<p>Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.</p>
<p><a href="/privacy-policy.html">Privacy Policy</a> &middot; <a href="/blog/feed.xml">RSS feed</a></p>
</div>
</div>
</div><!-- /.container -->
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.7.0/jquery.matchHeight-min.js"></script>
<script src="/js/codetabs.js"></script>
<script src="/js/stickysidebar.js"></script>
<!-- Google Analytics -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-52545728-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>