You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by rm...@apache.org on 2021/05/07 10:00:49 UTC

[flink-web] 03/03: Rebuild website

This is an automated email from the ASF dual-hosted git repository.

rmetzger pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git

commit 90ca52fd38beddaba6b92a3a0a90751e323da3ee
Author: Robert Metzger <rm...@apache.org>
AuthorDate: Fri May 7 12:00:14 2021 +0200

    Rebuild website
    
    This closes #427
---
 content/2021/05/06/reactive-mode.html              | 408 +++++++++++++++++++++
 content/blog/feed.xml                              | 296 ++++++++-------
 content/blog/index.html                            |  38 +-
 content/blog/page10/index.html                     |  45 ++-
 content/blog/page11/index.html                     |  43 ++-
 content/blog/page12/index.html                     |  40 +-
 content/blog/page13/index.html                     |  42 ++-
 content/blog/page14/index.html                     |  40 +-
 content/blog/page15/index.html                     |  45 ++-
 content/blog/{page9 => page16}/index.html          | 164 +--------
 content/blog/page2/index.html                      |  40 +-
 content/blog/page3/index.html                      |  40 +-
 content/blog/page4/index.html                      |  38 +-
 content/blog/page5/index.html                      |  38 +-
 content/blog/page6/index.html                      |  40 +-
 content/blog/page7/index.html                      |  40 +-
 content/blog/page8/index.html                      |  40 +-
 content/blog/page9/index.html                      |  42 ++-
 content/img/blog/2021-04-reactive-mode/arch.png    | Bin 0 -> 54735 bytes
 .../blog/2021-04-reactive-mode/high-timeout.png    | Bin 0 -> 715791 bytes
 content/img/blog/2021-04-reactive-mode/intro.svg   |   1 +
 content/img/blog/2021-04-reactive-mode/result.png  | Bin 0 -> 898175 bytes
 content/index.html                                 |   8 +-
 content/zh/index.html                              |   8 +-
 24 files changed, 974 insertions(+), 522 deletions(-)

diff --git a/content/2021/05/06/reactive-mode.html b/content/2021/05/06/reactive-mode.html
new file mode 100644
index 0000000..b5c46a2
--- /dev/null
+++ b/content/2021/05/06/reactive-mode.html
@@ -0,0 +1,408 @@
+<!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: Scaling Flink automatically with Reactive Mode</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="/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="/">
+              <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="/streamprocessing1.html">What is Stream Processing?</a></li>
+            -->
+
+            <!-- What is Flink? -->
+            <li><a href="/flink-architecture.html">What is Apache Flink?</a></li>
+
+            
+
+            <!-- What is Stateful Functions? -->
+
+            <li><a href="/stateful-functions.html">What is Stateful Functions?</a></li>
+
+            <!-- Use cases -->
+            <li><a href="/usecases.html">Use Cases</a></li>
+
+            <!-- Powered by -->
+            <li><a href="/poweredby.html">Powered By</a></li>
+
+
+            &nbsp;
+            <!-- Second menu section aims to support Flink users -->
+
+            <!-- Downloads -->
+            <li><a href="/downloads.html">Downloads</a></li>
+
+            <!-- Getting Started -->
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Getting Started<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.13//docs/try-flink/local_installation/" 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-3.0/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="/training.html">Training Course</a></li>
+              </ul>
+            </li>
+
+            <!-- Documentation -->
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.13" target="_blank">Flink 1.13 (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-3.0" target="_blank">Flink Stateful Functions 3.0 (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="/gettinghelp.html">Getting Help</a></li>
+
+            <!-- Blog -->
+            <li><a href="/blog/"><b>Flink Blog</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="/community.html">Community &amp; Project Info</a></li>
+
+            <!-- Roadmap -->
+            <li><a href="/roadmap.html">Roadmap</a></li>
+
+            <!-- Contribute -->
+            <li><a href="/contributing/how-to-contribute.html">How to Contribute</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="/zh/2021/05/06/reactive-mode.html">中文版</a>
+                
+              
+            </li>
+
+          </ul>
+
+          <style>
+            .smalllinks:link {
+              display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px;
+            }
+          </style>
+
+          <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>
+
+            <li >
+                  <a href="/security.html">Flink Security</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>
+
+              <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">
+    <div class="row">
+      <h1>Scaling Flink automatically with Reactive Mode</h1>
+      <p><i></i></p>
+
+      <article>
+        <p>06 May 2021 Robert Metzger (<a href="https://twitter.com/rmetzger_">@rmetzger_</a>)</p>
+
+<div class="page-toc">
+<ul id="markdown-toc">
+  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
+  <li><a href="#getting-started" id="markdown-toc-getting-started">Getting Started</a></li>
+  <li><a href="#demo-on-kubernetes" id="markdown-toc-demo-on-kubernetes">Demo on Kubernetes</a>    <ul>
+      <li><a href="#the-setup" id="markdown-toc-the-setup">The Setup</a></li>
+      <li><a href="#results" id="markdown-toc-results">Results</a></li>
+      <li><a href="#lessons-learned-configuring-a-low-heartbeat-timeout-for-a-smooth-scale-down" id="markdown-toc-lessons-learned-configuring-a-low-heartbeat-timeout-for-a-smooth-scale-down">Lessons Learned: Configuring a low heartbeat timeout for a smooth scale down</a></li>
+    </ul>
+  </li>
+  <li><a href="#conclusion" id="markdown-toc-conclusion">Conclusion</a></li>
+</ul>
+
+</div>
+
+<h2 id="introduction">Introduction</h2>
+
+<p>Streaming jobs which run for several days or longer usually experience variations in workload during their lifetime. These variations can originate from seasonal spikes, such as day vs. night, weekdays vs. weekend or holidays vs. non-holidays, sudden events or simply the growing popularity of your product. Although some of these variations are more predictable than others, in all cases there is a change in job resource demand that needs to be addressed if you want to ensure the same q [...]
+
+<p>A simple way of quantifying the mismatch between the required resources and the available resources is to measure the space between the actual load and the number of available workers. As pictured below, in the case of static resource allocation, you can see that there’s a big gap between the actual load and the available workers — hence, we are wasting resources. For elastic resource allocation, the gap between the red and black line is consistently small.</p>
+
+<div class="row front-graphic">
+  <img src="/img/blog/2021-04-reactive-mode/intro.svg" width="640px" alt="Reactive Mode Intro" />
+</div>
+
+<p><strong>Manually rescaling</strong> a Flink job has been possible since Flink 1.2 introduced <a href="https://flink.apache.org/features/2017/07/04/flink-rescalable-state.html">rescalable state</a>, which allows you to stop-and-restore a job with a different parallelism. For example, if your job is running with a parallelism of p=100 and your load increases, you can restart it with p=200 to cope with the additional data.</p>
+
+<p>The problem with this approach is that you have to orchestrate a rescale operation with custom tools by yourself, including error handling and similar tasks.</p>
+
+<p><a href="https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/elastic_scaling/">Reactive Mode</a> introduces a new option in Flink 1.13: You monitor your Flink cluster and add or remove resources depending on some metrics, Flink will do the rest. Reactive Mode is a mode where JobManager will try to use all TaskManager resources available.</p>
+
+<p>The big benefit of Reactive Mode is that you don’t need any specific knowledge to scale Flink anymore. Flink basically behaves like a fleet of servers (e.g. webservers, caches, batch processing) that you can expand or shrink as you wish. Since this is such a common pattern, there is a lot of infrastructure available for handling such cases: all major cloud providers offer utilities to monitor specific metrics and automatically scale a set of machines accordingly. For example, this wou [...]
+Similarly, Kubernetes provides <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">Horizontal Pod Autoscalers</a>.</p>
+
+<p>What is interesting, as a side note, is that unlike most auto scalable “fleets of servers”, Flink is a stateful system, often processing valuable data requiring strong correctness guarantees (comparable to a database). But, unlike many traditional databases, Flink is resilient enough (through checkpointing and state backups) to adjust to changing workloads by just adding or removing resources, with very little requirements (i.e. simple blob store for state backups).</p>
+
+<h2 id="getting-started">Getting Started</h2>
+
+<p>If you want to try out Reactive Mode yourself locally, follow these steps using a Flink 1.13.0 distribution:</p>
+
+<div class="highlight"><pre><code class="language-bash"><span class="c"># These instructions assume you are in the root directory of a Flink distribution.</span>
+<span class="c"># Put Job into lib/ directory</span>
+mkdir usrlib
+cp ./examples/streaming/TopSpeedWindowing.jar usrlib/
+<span class="c"># Submit Job in Reactive Mode</span>
+./bin/standalone-job.sh start -Dscheduler-mode<span class="o">=</span>reactive -Dexecution.checkpointing.interval<span class="o">=</span><span class="s2">&quot;10s&quot;</span> -j org.apache.flink.streaming.examples.windowing.TopSpeedWindowing
+<span class="c"># Start first TaskManager</span>
+./bin/taskmanager.sh start</code></pre></div>
+
+<p>You have now started a Flink job in Reactive Mode. The <a href="http://localhost:8081">web interface</a> shows that the job is running on one TaskManager. If you want to scale up the job, simply add another TaskManager to the cluster:</p>
+
+<div class="highlight"><pre><code class="language-bash"><span class="c"># Start additional TaskManager</span>
+./bin/taskmanager.sh start</code></pre></div>
+
+<p>To scale down, remove a TaskManager instance:</p>
+
+<div class="highlight"><pre><code class="language-bash"><span class="c"># Remove a TaskManager</span>
+./bin/taskmanager.sh stop</code></pre></div>
+
+<p>Reactive Mode also works when deploying <a href="https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/resource-providers/standalone/docker/">Flink on Docker</a> or using the <a href="https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/resource-providers/standalone/kubernetes/">standalone Kubernetes deployment</a> (both only as application clusters).</p>
+
+<h2 id="demo-on-kubernetes">Demo on Kubernetes</h2>
+
+<p>In this section, we want to demonstrate the new Reactive Mode in a real-world scenario. You can use this demo as a starting point for your own scalable deployment of Flink on Kubernetes, or as a template for building your own deployment using a different setup.</p>
+
+<h3 id="the-setup">The Setup</h3>
+
+<p>The central idea of this demo is to use a Kubernetes <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">Horizontal Pod Autoscaler</a>, which monitors the CPU load of all TaskManager pods and adjusts their replication factor accordingly. On high CPU load, the autoscaler should add more TaskManagers, distributing the load across more machines. On low load, it should stop TaskManagers to save resources.</p>
+
+<p>The whole setup is presented here:</p>
+
+<div class="row front-graphic">
+  <img src="/img/blog/2021-04-reactive-mode/arch.png" width="640px" alt="Reactive Mode Demo Architecture" />
+</div>
+
+<p>Let’s discuss the components:</p>
+
+<p><strong>Flink</strong></p>
+
+<ul>
+  <li>The <strong>JobManager</strong> is deployed as a <a href="https://kubernetes.io/docs/concepts/workloads/controllers/job/">Kubernetes job</a>. We are submitting a container that is based on the official Flink Docker image, but has the jar file of our job added to it. The Flink job simply reads data from a Kafka topic and does some expensive math operations per event received. We use these math operations to generate high CPU loads, without requiring a large Kafka deployment.</li>
+  <li>The <strong>TaskManager(s)</strong> are deployed as a Kubernetes deployment, which is scaled through a <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">Horizontal Pod Autoscaler</a>. In this experiment, the autoscaler is monitoring the CPU load of the pods in the deployment. The number of pods is adjusted between 1 and 15 pods by the autoscaler.</li>
+</ul>
+
+<p><strong>Additional Components</strong>:</p>
+
+<ul>
+  <li>We have a <strong>Zookeeper</strong> and <strong>Kafka</strong> deployment (each with one pod) to provide a Kafka topic that serves as the input for the Flink job.</li>
+  <li>The <strong>Data Generator</strong> pod produces simple string messages at a adjustable rate to the Kafka topic. In this experiment, the rate is following a sine wave.</li>
+  <li>For monitoring, we are deploying <strong>Prometheus</strong> and <strong>Grafana</strong>.</li>
+</ul>
+
+<p>The entire setup is <a href="https://github.com/rmetzger/flink-reactive-mode-k8s-demo">available on GitHub</a> if you want to try this out yourself.</p>
+
+<h3 id="results">Results</h3>
+
+<p>We’ve deployed all the above components on a hosted Kubernetes cluster, running it for several days. The results are best examined based on the following Grafana dashboard:</p>
+
+<div class="row front-graphic">
+  <img src="/img/blog/2021-04-reactive-mode/result.png" alt="Reactive Mode Demo Result" />
+  <p class="align-center">Reactive Mode Experiment Results</p>
+</div>
+
+<p>Let’s take a closer look at the dashboard:</p>
+
+<ul>
+  <li>
+    <p>On the top left, you can see the <strong>Kafka consumer lag</strong>, reported by Flink’s Kafka consumer (source), which reports the queue size of unprocessed messages. A high lag means that Flink is not processing messages as fast as they are produced: we need to scale up.</p>
+
+    <p>The lag is usually following the throughput of data coming from Kafka. When the throughput is the highest, the reported lag is at ~75k messages. In low throughput times, it is basically at zero.</p>
+  </li>
+  <li>
+    <p>On the top right, you’ll see the <strong>throughput</strong>, measured in records per second, as reported by Flink. The throughput is roughly following a sine wave, peaking at 6k messages per second, and going down to almost zero.</p>
+  </li>
+  <li>
+    <p>The bottom left chart shows the <strong>CPU load</strong> per TaskManager. We’ve added this metric to the dashboard because this is what the pod autoscaler in Kubernetes will use to decide on the replica count of the TaskManager deployment. You can see that, as soon as a certain CPU load is reached, additional TaskManagers are started.</p>
+  </li>
+  <li>
+    <p>In the bottom right chart, you can see the <strong>TaskManager count</strong> over time. When the throughput (and CPU load) is peaking, we’re running on 5 TaskManagers (with some peaks up to even 8). On low throughput, we’re running the minimal number of just one TaskManager. This chart showcases nicely that Reactive Mode is working as expected in this experiment: the number of TaskManagers is adjusting to the load on the system.</p>
+  </li>
+</ul>
+
+<h3 id="lessons-learned-configuring-a-low-heartbeat-timeout-for-a-smooth-scale-down">Lessons Learned: Configuring a low heartbeat timeout for a smooth scale down</h3>
+
+<p>When we initially started with the experiment, we noticed some anomalies in the behavior of Flink, depicted in this chart:</p>
+
+<div class="row front-graphic">
+  <img src="/img/blog/2021-04-reactive-mode/high-timeout.png" alt="Reactive Mode Demo Lessons Learned" />
+	<p class="align-center">Reactive Mode not scaling down properly</p>
+</div>
+
+<p>In all the charts, we see sudden spikes or drops: The consumer lag is going to up to 600k messages (that’s 8 times more than the usual 75k lag we observe at peak), the throughput seems to peak (and drop). On the “Number of TaskManagers” chart, we see that we are not following the throughput line very nicely. We are wasting resources by allocating too many TaskManagers for the given at rate.</p>
+
+<p>We see that these issues are only occurring when the load is decreasing, and Reactive Mode is supposed to scale down. So what is happening here?</p>
+
+<p>The Flink JobManager is sending periodic heartbeats to the TaskManagers, to check if they are still alive. These heartbeats have a default timeout of 50 seconds. This value might seem high, but in high load scenarios, there might be network congestions, garbage collection pauses or other disruptions that cause slow heartbeats. We don’t want to consider a TaskManager dead just because of a temporary disruption.</p>
+
+<p>However, this default value is causing problems in this experiment: When the Kubernetes autoscaler notices that the CPU load has gone down, it will reduce the replica count of the TaskManager deployment, stopping at least one TaskManager instance. Flink will almost immediately stop processing messages, because of the connection loss in the data transport layer of Flink. However, the JobManager will wait for 50 seconds (the default heartbeat timeout) before the TaskManager is considere [...]
+
+<p>During this waiting period, the throughput is at zero and messages are queuing in Kafka (causing spikes in the consumer lag). Once Flink is running again, Flink will try to catch up on the queued messages, causing a spike in CPU load. The autoscaler notices this load spike and allocates more TaskManagers.</p>
+
+<p>We are only seeing this effect on scale down, because a scale down is much more disruptive than scaling up. Scale up, which means adding TaskManagers, is disrupting the processing only for the duration of a job restart (which is fast since our application state are just a few bytes for the Kafka offsets), while scaling down is disrupting the processing for roughly 50 seconds.</p>
+
+<p>To mitigate this issue, we have reduced the <code>heartbeat.timeout</code> in our experiment to 8 seconds. Additionally, we are looking into improving the behavior of the JobManager to detect TaskManager losses better and faster.</p>
+
+<h2 id="conclusion">Conclusion</h2>
+
+<p>In this blog post, we’ve introduced Reactive Mode, a big step forward in Flink’s ability to dynamically adjust to changing workloads, reducing resource utilization and overall costs. The blog post demonstrated Reactive Mode on Kubernetes, including some lessons learned.</p>
+
+<p>Reactive Mode is new feature in Flink 1.13 and is currently in the <a href="https://flink.apache.org/roadmap.html#feature-stages">MVP (Minimal Viable Product) phase</a> of product development. Before experimenting with it, or using it in production, please check the <a href="https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/elastic_scaling">documentation</a>, in particular the current <a href="https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/ [...]
+
+<p>The community is actively looking for feedback on this feature, to continue improving Flink’s resource elasticity. If you have any feedback, please reach out to the <a href="https://flink.apache.org/community.html#mailing-lists">dev@ mailing list</a> or to me personally on <a href="https://twitter.com/rmetzger_">Twitter</a>.</p>
+
+
+      </article>
+    </div>
+
+    <div class="row">
+      <div id="disqus_thread"></div>
+      <script type="text/javascript">
+        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
+        var disqus_shortname = 'stratosphere-eu'; // required: replace example with your forum shortname
+
+        /* * * DON'T EDIT BELOW THIS LINE * * */
+        (function() {
+            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+             (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+        })();
+      </script>
+    </div>
+  </div>
+</div>
+      </div>
+    </div>
+
+    <hr />
+
+    <div class="row">
+      <div class="footer text-center col-sm-12">
+        <p>Copyright © 2014-2021 <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="/js/jquery.matchHeight-min.js"></script>
+    <script src="/js/bootstrap.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>
diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index b6712f8..b79e37b 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -7,6 +7,167 @@
 <atom:link href="https://flink.apache.org/blog/feed.xml" rel="self" type="application/rss+xml" />
 
 <item>
+<title>Scaling Flink automatically with Reactive Mode</title>
+<description>&lt;div class=&quot;page-toc&quot;&gt;
+&lt;ul id=&quot;markdown-toc&quot;&gt;
+  &lt;li&gt;&lt;a href=&quot;#introduction&quot; id=&quot;markdown-toc-introduction&quot;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;a href=&quot;#getting-started&quot; id=&quot;markdown-toc-getting-started&quot;&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
+  &lt;li&gt;&lt;a href=&quot;#demo-on-kubernetes&quot; id=&quot;markdown-toc-demo-on-kubernetes&quot;&gt;Demo on Kubernetes&lt;/a&gt;    &lt;ul&gt;
+      &lt;li&gt;&lt;a href=&quot;#the-setup&quot; id=&quot;markdown-toc-the-setup&quot;&gt;The Setup&lt;/a&gt;&lt;/li&gt;
+      &lt;li&gt;&lt;a href=&quot;#results&quot; id=&quot;markdown-toc-results&quot;&gt;Results&lt;/a&gt;&lt;/li&gt;
+      &lt;li&gt;&lt;a href=&quot;#lessons-learned-configuring-a-low-heartbeat-timeout-for-a-smooth-scale-down&quot; id=&quot;markdown-toc-lessons-learned-configuring-a-low-heartbeat-timeout-for-a-smooth-scale-down&quot;&gt;Lessons Learned: Configuring a low heartbeat timeout for a smooth scale down&lt;/a&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+  &lt;/li&gt;
+  &lt;li&gt;&lt;a href=&quot;#conclusion&quot; id=&quot;markdown-toc-conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;/div&gt;
+
+&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;
+
+&lt;p&gt;Streaming jobs which run for several days or longer usually experience variations in workload during their lifetime. These variations can originate from seasonal spikes, such as day vs. night, weekdays vs. weekend or holidays vs. non-holidays, sudden events or simply the growing popularity of your product. Although some of these variations are more predictable than others, in all cases there is a change in job resource demand that needs to be addressed if you want to ensure the  [...]
+
+&lt;p&gt;A simple way of quantifying the mismatch between the required resources and the available resources is to measure the space between the actual load and the number of available workers. As pictured below, in the case of static resource allocation, you can see that there’s a big gap between the actual load and the available workers — hence, we are wasting resources. For elastic resource allocation, the gap between the red and black line is consistently small.&lt;/p&gt;
+
+&lt;div class=&quot;row front-graphic&quot;&gt;
+  &lt;img src=&quot;/img/blog/2021-04-reactive-mode/intro.svg&quot; width=&quot;640px&quot; alt=&quot;Reactive Mode Intro&quot; /&gt;
+&lt;/div&gt;
+
+&lt;p&gt;&lt;strong&gt;Manually rescaling&lt;/strong&gt; a Flink job has been possible since Flink 1.2 introduced &lt;a href=&quot;https://flink.apache.org/features/2017/07/04/flink-rescalable-state.html&quot;&gt;rescalable state&lt;/a&gt;, which allows you to stop-and-restore a job with a different parallelism. For example, if your job is running with a parallelism of p=100 and your load increases, you can restart it with p=200 to cope with the additional data.&lt;/p&gt;
+
+&lt;p&gt;The problem with this approach is that you have to orchestrate a rescale operation with custom tools by yourself, including error handling and similar tasks.&lt;/p&gt;
+
+&lt;p&gt;&lt;a href=&quot;https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/elastic_scaling/&quot;&gt;Reactive Mode&lt;/a&gt; introduces a new option in Flink 1.13: You monitor your Flink cluster and add or remove resources depending on some metrics, Flink will do the rest. Reactive Mode is a mode where JobManager will try to use all TaskManager resources available.&lt;/p&gt;
+
+&lt;p&gt;The big benefit of Reactive Mode is that you don’t need any specific knowledge to scale Flink anymore. Flink basically behaves like a fleet of servers (e.g. webservers, caches, batch processing) that you can expand or shrink as you wish. Since this is such a common pattern, there is a lot of infrastructure available for handling such cases: all major cloud providers offer utilities to monitor specific metrics and automatically scale a set of machines accordingly. For example, th [...]
+Similarly, Kubernetes provides &lt;a href=&quot;https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/&quot;&gt;Horizontal Pod Autoscalers&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;What is interesting, as a side note, is that unlike most auto scalable “fleets of servers”, Flink is a stateful system, often processing valuable data requiring strong correctness guarantees (comparable to a database). But, unlike many traditional databases, Flink is resilient enough (through checkpointing and state backups) to adjust to changing workloads by just adding or removing resources, with very little requirements (i.e. simple blob store for state backups).&lt;/p&gt;
+
+&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;
+
+&lt;p&gt;If you want to try out Reactive Mode yourself locally, follow these steps using a Flink 1.13.0 distribution:&lt;/p&gt;
+
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;c&quot;&gt;# These instructions assume you are in the root directory of a Flink distribution.&lt;/span&gt;
+&lt;span class=&quot;c&quot;&gt;# Put Job into lib/ directory&lt;/span&gt;
+mkdir usrlib
+cp ./examples/streaming/TopSpeedWindowing.jar usrlib/
+&lt;span class=&quot;c&quot;&gt;# Submit Job in Reactive Mode&lt;/span&gt;
+./bin/standalone-job.sh start -Dscheduler-mode&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;reactive -Dexecution.checkpointing.interval&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;10s&amp;quot;&lt;/span&gt; -j org.apache.flink.streaming.examples.windowing.TopSpeedWindowing
+&lt;span class=&quot;c&quot;&gt;# Start first TaskManager&lt;/span&gt;
+./bin/taskmanager.sh start&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+
+&lt;p&gt;You have now started a Flink job in Reactive Mode. The &lt;a href=&quot;http://localhost:8081&quot;&gt;web interface&lt;/a&gt; shows that the job is running on one TaskManager. If you want to scale up the job, simply add another TaskManager to the cluster:&lt;/p&gt;
+
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;c&quot;&gt;# Start additional TaskManager&lt;/span&gt;
+./bin/taskmanager.sh start&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+
+&lt;p&gt;To scale down, remove a TaskManager instance:&lt;/p&gt;
+
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;c&quot;&gt;# Remove a TaskManager&lt;/span&gt;
+./bin/taskmanager.sh stop&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+
+&lt;p&gt;Reactive Mode also works when deploying &lt;a href=&quot;https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/resource-providers/standalone/docker/&quot;&gt;Flink on Docker&lt;/a&gt; or using the &lt;a href=&quot;https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/resource-providers/standalone/kubernetes/&quot;&gt;standalone Kubernetes deployment&lt;/a&gt; (both only as application clusters).&lt;/p&gt;
+
+&lt;h2 id=&quot;demo-on-kubernetes&quot;&gt;Demo on Kubernetes&lt;/h2&gt;
+
+&lt;p&gt;In this section, we want to demonstrate the new Reactive Mode in a real-world scenario. You can use this demo as a starting point for your own scalable deployment of Flink on Kubernetes, or as a template for building your own deployment using a different setup.&lt;/p&gt;
+
+&lt;h3 id=&quot;the-setup&quot;&gt;The Setup&lt;/h3&gt;
+
+&lt;p&gt;The central idea of this demo is to use a Kubernetes &lt;a href=&quot;https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/&quot;&gt;Horizontal Pod Autoscaler&lt;/a&gt;, which monitors the CPU load of all TaskManager pods and adjusts their replication factor accordingly. On high CPU load, the autoscaler should add more TaskManagers, distributing the load across more machines. On low load, it should stop TaskManagers to save resources.&lt;/p&gt;
+
+&lt;p&gt;The whole setup is presented here:&lt;/p&gt;
+
+&lt;div class=&quot;row front-graphic&quot;&gt;
+  &lt;img src=&quot;/img/blog/2021-04-reactive-mode/arch.png&quot; width=&quot;640px&quot; alt=&quot;Reactive Mode Demo Architecture&quot; /&gt;
+&lt;/div&gt;
+
+&lt;p&gt;Let’s discuss the components:&lt;/p&gt;
+
+&lt;p&gt;&lt;strong&gt;Flink&lt;/strong&gt;&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;The &lt;strong&gt;JobManager&lt;/strong&gt; is deployed as a &lt;a href=&quot;https://kubernetes.io/docs/concepts/workloads/controllers/job/&quot;&gt;Kubernetes job&lt;/a&gt;. We are submitting a container that is based on the official Flink Docker image, but has the jar file of our job added to it. The Flink job simply reads data from a Kafka topic and does some expensive math operations per event received. We use these math operations to generate high CPU loads, without req [...]
+  &lt;li&gt;The &lt;strong&gt;TaskManager(s)&lt;/strong&gt; are deployed as a Kubernetes deployment, which is scaled through a &lt;a href=&quot;https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/&quot;&gt;Horizontal Pod Autoscaler&lt;/a&gt;. In this experiment, the autoscaler is monitoring the CPU load of the pods in the deployment. The number of pods is adjusted between 1 and 15 pods by the autoscaler.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;&lt;strong&gt;Additional Components&lt;/strong&gt;:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;We have a &lt;strong&gt;Zookeeper&lt;/strong&gt; and &lt;strong&gt;Kafka&lt;/strong&gt; deployment (each with one pod) to provide a Kafka topic that serves as the input for the Flink job.&lt;/li&gt;
+  &lt;li&gt;The &lt;strong&gt;Data Generator&lt;/strong&gt; pod produces simple string messages at a adjustable rate to the Kafka topic. In this experiment, the rate is following a sine wave.&lt;/li&gt;
+  &lt;li&gt;For monitoring, we are deploying &lt;strong&gt;Prometheus&lt;/strong&gt; and &lt;strong&gt;Grafana&lt;/strong&gt;.&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;p&gt;The entire setup is &lt;a href=&quot;https://github.com/rmetzger/flink-reactive-mode-k8s-demo&quot;&gt;available on GitHub&lt;/a&gt; if you want to try this out yourself.&lt;/p&gt;
+
+&lt;h3 id=&quot;results&quot;&gt;Results&lt;/h3&gt;
+
+&lt;p&gt;We’ve deployed all the above components on a hosted Kubernetes cluster, running it for several days. The results are best examined based on the following Grafana dashboard:&lt;/p&gt;
+
+&lt;div class=&quot;row front-graphic&quot;&gt;
+  &lt;img src=&quot;/img/blog/2021-04-reactive-mode/result.png&quot; alt=&quot;Reactive Mode Demo Result&quot; /&gt;
+  &lt;p class=&quot;align-center&quot;&gt;Reactive Mode Experiment Results&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;p&gt;Let’s take a closer look at the dashboard:&lt;/p&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;
+    &lt;p&gt;On the top left, you can see the &lt;strong&gt;Kafka consumer lag&lt;/strong&gt;, reported by Flink’s Kafka consumer (source), which reports the queue size of unprocessed messages. A high lag means that Flink is not processing messages as fast as they are produced: we need to scale up.&lt;/p&gt;
+
+    &lt;p&gt;The lag is usually following the throughput of data coming from Kafka. When the throughput is the highest, the reported lag is at ~75k messages. In low throughput times, it is basically at zero.&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;On the top right, you’ll see the &lt;strong&gt;throughput&lt;/strong&gt;, measured in records per second, as reported by Flink. The throughput is roughly following a sine wave, peaking at 6k messages per second, and going down to almost zero.&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;The bottom left chart shows the &lt;strong&gt;CPU load&lt;/strong&gt; per TaskManager. We’ve added this metric to the dashboard because this is what the pod autoscaler in Kubernetes will use to decide on the replica count of the TaskManager deployment. You can see that, as soon as a certain CPU load is reached, additional TaskManagers are started.&lt;/p&gt;
+  &lt;/li&gt;
+  &lt;li&gt;
+    &lt;p&gt;In the bottom right chart, you can see the &lt;strong&gt;TaskManager count&lt;/strong&gt; over time. When the throughput (and CPU load) is peaking, we’re running on 5 TaskManagers (with some peaks up to even 8). On low throughput, we’re running the minimal number of just one TaskManager. This chart showcases nicely that Reactive Mode is working as expected in this experiment: the number of TaskManagers is adjusting to the load on the system.&lt;/p&gt;
+  &lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h3 id=&quot;lessons-learned-configuring-a-low-heartbeat-timeout-for-a-smooth-scale-down&quot;&gt;Lessons Learned: Configuring a low heartbeat timeout for a smooth scale down&lt;/h3&gt;
+
+&lt;p&gt;When we initially started with the experiment, we noticed some anomalies in the behavior of Flink, depicted in this chart:&lt;/p&gt;
+
+&lt;div class=&quot;row front-graphic&quot;&gt;
+  &lt;img src=&quot;/img/blog/2021-04-reactive-mode/high-timeout.png&quot; alt=&quot;Reactive Mode Demo Lessons Learned&quot; /&gt;
+	&lt;p class=&quot;align-center&quot;&gt;Reactive Mode not scaling down properly&lt;/p&gt;
+&lt;/div&gt;
+
+&lt;p&gt;In all the charts, we see sudden spikes or drops: The consumer lag is going to up to 600k messages (that’s 8 times more than the usual 75k lag we observe at peak), the throughput seems to peak (and drop). On the “Number of TaskManagers” chart, we see that we are not following the throughput line very nicely. We are wasting resources by allocating too many TaskManagers for the given at rate.&lt;/p&gt;
+
+&lt;p&gt;We see that these issues are only occurring when the load is decreasing, and Reactive Mode is supposed to scale down. So what is happening here?&lt;/p&gt;
+
+&lt;p&gt;The Flink JobManager is sending periodic heartbeats to the TaskManagers, to check if they are still alive. These heartbeats have a default timeout of 50 seconds. This value might seem high, but in high load scenarios, there might be network congestions, garbage collection pauses or other disruptions that cause slow heartbeats. We don’t want to consider a TaskManager dead just because of a temporary disruption.&lt;/p&gt;
+
+&lt;p&gt;However, this default value is causing problems in this experiment: When the Kubernetes autoscaler notices that the CPU load has gone down, it will reduce the replica count of the TaskManager deployment, stopping at least one TaskManager instance. Flink will almost immediately stop processing messages, because of the connection loss in the data transport layer of Flink. However, the JobManager will wait for 50 seconds (the default heartbeat timeout) before the TaskManager is con [...]
+
+&lt;p&gt;During this waiting period, the throughput is at zero and messages are queuing in Kafka (causing spikes in the consumer lag). Once Flink is running again, Flink will try to catch up on the queued messages, causing a spike in CPU load. The autoscaler notices this load spike and allocates more TaskManagers.&lt;/p&gt;
+
+&lt;p&gt;We are only seeing this effect on scale down, because a scale down is much more disruptive than scaling up. Scale up, which means adding TaskManagers, is disrupting the processing only for the duration of a job restart (which is fast since our application state are just a few bytes for the Kafka offsets), while scaling down is disrupting the processing for roughly 50 seconds.&lt;/p&gt;
+
+&lt;p&gt;To mitigate this issue, we have reduced the &lt;code&gt;heartbeat.timeout&lt;/code&gt; in our experiment to 8 seconds. Additionally, we are looking into improving the behavior of the JobManager to detect TaskManager losses better and faster.&lt;/p&gt;
+
+&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
+
+&lt;p&gt;In this blog post, we’ve introduced Reactive Mode, a big step forward in Flink’s ability to dynamically adjust to changing workloads, reducing resource utilization and overall costs. The blog post demonstrated Reactive Mode on Kubernetes, including some lessons learned.&lt;/p&gt;
+
+&lt;p&gt;Reactive Mode is new feature in Flink 1.13 and is currently in the &lt;a href=&quot;https://flink.apache.org/roadmap.html#feature-stages&quot;&gt;MVP (Minimal Viable Product) phase&lt;/a&gt; of product development. Before experimenting with it, or using it in production, please check the &lt;a href=&quot;https://ci.apache.org/projects/flink/flink-docs-master/docs/deployment/elastic_scaling&quot;&gt;documentation&lt;/a&gt;, in particular the current &lt;a href=&quot;https://ci.ap [...]
+
+&lt;p&gt;The community is actively looking for feedback on this feature, to continue improving Flink’s resource elasticity. If you have any feedback, please reach out to the &lt;a href=&quot;https://flink.apache.org/community.html#mailing-lists&quot;&gt;dev@ mailing list&lt;/a&gt; or to me personally on &lt;a href=&quot;https://twitter.com/rmetzger_&quot;&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
+
+</description>
+<pubDate>Thu, 06 May 2021 02:00:00 +0200</pubDate>
+<link>https://flink.apache.org/2021/05/06/reactive-mode.html</link>
+<guid isPermaLink="true">/2021/05/06/reactive-mode.html</guid>
+</item>
+
+<item>
 <title>Apache Flink 1.13.0 Release Announcement</title>
 <description>&lt;p&gt;The Apache Flink community is excited to announce the release of Flink 1.13.0! More than 200
 contributors worked on over 1,000 issues for this new version.&lt;/p&gt;
@@ -19103,140 +19264,5 @@ zhangminglei, zhe li, zhouhai02, zjureel, 付典, 军长, 宝牛, 淘江, 金竹
 <guid isPermaLink="true">/news/2017/12/12/release-1.4.0.html</guid>
 </item>
 
-<item>
-<title>Looking Ahead to Apache Flink 1.4.0 and 1.5.0</title>
-<description>&lt;p&gt;The Apache Flink 1.4.0 release is on track to happen in the next couple of weeks, and for all of the
-readers out there who haven’t been following the release discussion on &lt;a href=&quot;http://flink.apache.org/community.html#mailing-lists&quot;&gt;Flink’s developer mailing
-list&lt;/a&gt;, we’d like to provide some details on
-what’s coming in Flink 1.4.0 as well as a preview of what the Flink community will save for 1.5.0.&lt;/p&gt;
-
-&lt;p&gt;Both releases include ambitious features that we believe will move Flink to an entirely new level in
-terms of the types of problems it can solve and applications it can support. The community deserves
-lots of credit for its hard work over the past few months, and we’re excited to see these features
-in the hands of users.&lt;/p&gt;
-
-&lt;p&gt;This post will describe how the community plans to get there and the rationale behind the approach.&lt;/p&gt;
-
-&lt;h2 id=&quot;coming-soon-major-changes-to-flinks-runtime&quot;&gt;Coming soon: Major Changes to Flink’s Runtime&lt;/h2&gt;
-
-&lt;p&gt;There are 3 significant improvements to the Apache Flink engine that the community has nearly
-completed and that will have a meaningful impact on Flink’s operability and performance.&lt;/p&gt;
-
-&lt;ol&gt;
-  &lt;li&gt;Rework of the deployment model and distributed process&lt;/li&gt;
-  &lt;li&gt;Transition from configurable, fixed-interval network I/O to event-driven network I/O and application-level flow control for better backpressure handling&lt;/li&gt;
-  &lt;li&gt;Faster recovery from failure&lt;/li&gt;
-&lt;/ol&gt;
-
-&lt;p&gt;Next, we’ll go through each of these improvements in more detail.&lt;/p&gt;
-
-&lt;h2 id=&quot;reworking-flinks-deployment-model-and-distributed-processing&quot;&gt;Reworking Flink’s Deployment Model and Distributed Processing&lt;/h2&gt;
-
-&lt;p&gt;&lt;a href=&quot;https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=65147077&quot;&gt;FLIP-6&lt;/a&gt; (FLIP is short for
-FLink Improvement Proposal and FLIPs are proposals for bigger changes to Flink) is an initiative
-that’s been in the works for more than a year and represents a major refactor of Flink’s deployment
-model and distributed process. The underlying motivation for FLIP-6 was the fact that Flink is being
-adopted by a wider range of developer communities–both developers coming from the big data and
-analytics space as well as developers coming from the event-driven applications space.&lt;/p&gt;
-
-&lt;p&gt;Modern, stateful stream processing has served as a convergence for these two developer communities.
-Despite a significant overlap of the core concepts in the applications being built, each group of
-developers has its own set of common tools, deployment models, and expected behaviors when working
-with a stream processing framework like Flink.&lt;/p&gt;
-
-&lt;p&gt;FLIP-6 will ensure that Flink fits naturally in both of these contexts, behaving as though it’s
-native to each ecosystem and operating seamlessly within a broader technology stack. A few of the
-specific changes in FLIP-6 that will have such an impact:&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;Leveraging cluster management frameworks to support full resource elasticity&lt;/li&gt;
-  &lt;li&gt;First-class support for containerized environments such as Kubernetes and Docker&lt;/li&gt;
-  &lt;li&gt;REST-based client-cluster communication to ease operations and 3rd party integrations&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;p&gt;FLIP-6, along with already-introduced features like
-&lt;a href=&quot;https://data-artisans.com/blog/apache-flink-at-mediamath-rescaling-stateful-applications&quot;&gt;rescalable state&lt;/a&gt;,
-lays the groundwork for dynamic scaling in Flink, meaning that Flink programs will be able to scale up or down
-automatically based on required resources–a huge step forward in terms of ease of operability and
-the efficiency of Flink applications.&lt;/p&gt;
-
-&lt;h2 id=&quot;lower-latency-via-improvements-to-the-apache-flink-network-stack&quot;&gt;Lower Latency via Improvements to the Apache Flink Network Stack&lt;/h2&gt;
-
-&lt;p&gt;Speed will always be a key consideration for users who build stream processing applications, and
-Flink 1.5 will include a rework of the network stack that will even further improve Flink’s latency.
-At the heart of this work is a transition from configurable, fixed-interval network I/O to event-
-driven network I/O and application-level flow control, ensuring that Flink will use all available
-network capacity, as well as credit-based flow control which offers more fine-grained backpressuring
-for improved checkpoint alignments.&lt;/p&gt;
-
-&lt;p&gt;In our testing (&lt;a href=&quot;https://www.slideshare.net/FlinkForward/flink-forward-berlin-2017-nico-kruber-building-a-network-stack-for-optimal-throughput-lowlatency-tradeoffs#26&quot;&gt;see slide 26 here&lt;/a&gt;),
-we’ve seen a substantial improvement in latency using event-driven network I/O, and the community
-is also doing work to make sure we’re able to provide this increase in speed without a measurable
-throughput tradeoff.&lt;/p&gt;
-
-&lt;h2 id=&quot;faster-recovery-from-failures&quot;&gt;Faster Recovery from Failures&lt;/h2&gt;
-
-&lt;p&gt;Flink 1.3.0 introduced incremental checkpoints, making it possible to take a checkpoint of state
-updates since the last successfully-completed checkpoint only rather than the previous behavior of
-only taking checkpoints of the entire state of the application. This has led to significant
-performance improvements for users with large state.&lt;/p&gt;
-
-&lt;p&gt;Flink 1.5 will introduce task-local recovery, which means that Flink will store a second copy of the
-most recent checkpoint on the local disk (or even in main memory) of a task manager. The primary
-copy still goes to durable storage so that it’s resilient to machine failures.&lt;/p&gt;
-
-&lt;p&gt;In case of failover, the scheduler will try to reschedule tasks to their previous task manager (in
-other words, to the same machine again) if this is possible. The task can then recover from the
-locally-kept state. This makes it possible to avoid reading all state from the distributed file
-system (which is remote over the network). Especially in applications with very large state, not
-having to read many gigabytes over the network and instead from local disk will result in
-significant performance gains in recovery.&lt;/p&gt;
-
-&lt;h2 id=&quot;the-proposed-timeline-for-flink-14-and-flink-15&quot;&gt;The Proposed Timeline for Flink 1.4 and Flink 1.5&lt;/h2&gt;
-
-&lt;p&gt;The good news is that all 3 of the features described above are well underway, and in fact, much of
-the work is already covered by open pull requests.&lt;/p&gt;
-
-&lt;p&gt;But given these features’ importance and the complexity of the work involved, the community expected
-that the QA and testing required would be extensive and would delay the release of the otherwise-
-ready features also on the list for the next release.&lt;/p&gt;
-
-&lt;p&gt;And so the community decided to withhold the 3 features above (deployment model rework, improvements
-to the network stack, and faster recovery) to be included a separate Flink 1.5 release that will
-come shortly after the Flink 1.4 release. Flink 1.5 is estimated to come just a couple of months
-after 1.4 rather than the typical 4-month cycle in between major releases.&lt;/p&gt;
-
-&lt;p&gt;The soon-to-be-released Flink 1.4 represents the current state of Flink without merging those 3
-features. And Flink 1.4 is a substantial release in its own right, including, but not limited to,
-the following:&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;&lt;strong&gt;A significantly improved dependency structure&lt;/strong&gt;, removing many of Flink’s dependencies and subtle runtime conflicts. This increases overall stability and removes friction when embedding Flink or calling Flink “library style”.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;Reversed class loading for dynamically-loaded user code&lt;/strong&gt;, allowing for different dependencies than those included in the core framework.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;An Apache Kafka 0.11 exactly-once producer&lt;/strong&gt;, making it possible to build end-to-end exactly once applications with Flink and Kafka.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;Streaming SQL JOIN based on processing time and event time&lt;/strong&gt;, which gives users the full advantage of Flink’s time handling while using a SQL JOIN.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;Table API / Streaming SQL Source and Sink Additions&lt;/strong&gt;, including a Kafka 0.11 source and JDBC sink.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;Hadoop-free Flink&lt;/strong&gt;, meaning that users who don’t rely on any Hadoop components (such as YARN or HDFS) in their Flink applications can use Flink without Hadoop for the first time.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;Improvements to queryable state&lt;/strong&gt;, including a more container-friendly architecture, a more user-friendly API that hides configuration parameters, and the groundwork to be able to expose window state (the state of an in-flight window) in the future.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;Connector improvements and fixes&lt;/strong&gt; for a range of connectors including Kafka, Apache Cassandra, Amazon Kinesis, and more.&lt;/li&gt;
-  &lt;li&gt;&lt;strong&gt;Improved RPC performance&lt;/strong&gt; for faster recovery from failure&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;p&gt;The community decided it was best to get these features into a stable version of Flink as soon as
-possible, and the separation of what could have been a single (and very substantial) Flink 1.4
-release into 1.4 and 1.5 serves that purpose.&lt;/p&gt;
-
-&lt;p&gt;We’re excited by what each of these represents for Apache Flink, and we’d like to extend our thanks
-to the Flink community for all of their hard work.&lt;/p&gt;
-
-&lt;p&gt;If you’d like to follow along with release discussions, &lt;a href=&quot;http://flink.apache.org/community.html#mailing-lists&quot;&gt;please subscribe to the dev@ mailing
-list&lt;/a&gt;.&lt;/p&gt;
-
-</description>
-<pubDate>Wed, 22 Nov 2017 11:00:00 +0100</pubDate>
-<link>https://flink.apache.org/news/2017/11/22/release-1.4-and-1.5-timeline.html</link>
-<guid isPermaLink="true">/news/2017/11/22/release-1.4-and-1.5-timeline.html</guid>
-</item>
-
 </channel>
 </rss>
diff --git a/content/blog/index.html b/content/blog/index.html
index d02e738..3ecd171 100644
--- a/content/blog/index.html
+++ b/content/blog/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></h2>
+
+      <p>06 May 2021
+       Robert Metzger (<a href="https://twitter.com/rmetzger_">@rmetzger_</a>)</p>
+
+      <p>Apache Flink 1.13 introduced Reactive Mode, a big step forward in Flink's ability to dynamically adjust to changing workloads, reducing resource utilization and overall costs. This blog post showcases how to use this new feature on Kubernetes, including some lessons learned.</p>
+
+      <p><a href="/2021/05/06/reactive-mode.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></h2>
 
       <p>03 May 2021
@@ -329,19 +342,6 @@ to develop scalable, consistent, and elastic distributed applications.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2021/01/11/batch-fine-grained-fault-tolerance.html">Exploring fine-grained recovery of bounded data sets on Flink</a></h2>
-
-      <p>11 Jan 2021
-       Robert Metzger (<a href="https://twitter.com/rmetzger_">@rmetzger_</a>)</p>
-
-      <p>Apache Flink 1.9 introduced fine-grained recovery through FLIP-1. The Flink APIs that are made for bounded workloads benefit from this change by individually recovering failed operators, re-using results from the previous processing step. This blog post gives an overview over these changes and evaluates their effectiveness.</p>
-
-      <p><a href="/news/2021/01/11/batch-fine-grained-fault-tolerance.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -352,7 +352,7 @@ to develop scalable, consistent, and elastic distributed applications.</p>
       
       </li>
       <li>
-        <span class="page_number ">Page: 1 of 15</span>
+        <span class="page_number ">Page: 1 of 16</span>
       </li>
       <li>
       
@@ -374,6 +374,16 @@ to develop scalable, consistent, and elastic distributed applications.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page10/index.html b/content/blog/page10/index.html
index 9191d78..ef5156b 100644
--- a/content/blog/page10/index.html
+++ b/content/blog/page10/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2018/07/31/release-1.5.2.html">Apache Flink 1.5.2 Released</a></h2>
+
+      <p>31 Jul 2018
+      </p>
+
+      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.5 series.</p>
+
+</p>
+
+      <p><a href="/news/2018/07/31/release-1.5.2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2018/07/12/release-1.5.1.html">Apache Flink 1.5.1 Released</a></h2>
 
       <p>12 Jul 2018
@@ -331,24 +346,6 @@ for more detail.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2017/11/22/release-1.4-and-1.5-timeline.html">Looking Ahead to Apache Flink 1.4.0 and 1.5.0</a></h2>
-
-      <p>22 Nov 2017
-       Stephan Ewen (<a href="https://twitter.com/StephanEwen">@StephanEwen</a>), Aljoscha Krettek (<a href="https://twitter.com/aljoscha">@aljoscha</a>), &amp; Mike Winters (<a href="https://twitter.com/wints">@wints</a>)</p>
-
-      <p><p>The Apache Flink 1.4.0 release is on track to happen in the next couple of weeks, and for all of the
-readers out there who haven’t been following the release discussion on <a href="http://flink.apache.org/community.html#mailing-lists">Flink’s developer mailing
-list</a>, we’d like to provide some details on
-what’s coming in Flink 1.4.0 as well as a preview of what the Flink community will save for 1.5.0.</p>
-
-</p>
-
-      <p><a href="/news/2017/11/22/release-1.4-and-1.5-timeline.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -359,7 +356,7 @@ what’s coming in Flink 1.4.0 as well as a preview of what the Flink community
       
       </li>
       <li>
-        <span class="page_number ">Page: 10 of 15</span>
+        <span class="page_number ">Page: 10 of 16</span>
       </li>
       <li>
       
@@ -381,6 +378,16 @@ what’s coming in Flink 1.4.0 as well as a preview of what the Flink community
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page11/index.html b/content/blog/page11/index.html
index 3c2eac1..261c168 100644
--- a/content/blog/page11/index.html
+++ b/content/blog/page11/index.html
@@ -201,6 +201,24 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2017/11/22/release-1.4-and-1.5-timeline.html">Looking Ahead to Apache Flink 1.4.0 and 1.5.0</a></h2>
+
+      <p>22 Nov 2017
+       Stephan Ewen (<a href="https://twitter.com/StephanEwen">@StephanEwen</a>), Aljoscha Krettek (<a href="https://twitter.com/aljoscha">@aljoscha</a>), &amp; Mike Winters (<a href="https://twitter.com/wints">@wints</a>)</p>
+
+      <p><p>The Apache Flink 1.4.0 release is on track to happen in the next couple of weeks, and for all of the
+readers out there who haven’t been following the release discussion on <a href="http://flink.apache.org/community.html#mailing-lists">Flink’s developer mailing
+list</a>, we’d like to provide some details on
+what’s coming in Flink 1.4.0 as well as a preview of what the Flink community will save for 1.5.0.</p>
+
+</p>
+
+      <p><a href="/news/2017/11/22/release-1.4-and-1.5-timeline.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2017/08/05/release-1.3.2.html">Apache Flink 1.3.2 Released</a></h2>
 
       <p>05 Aug 2017
@@ -330,19 +348,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2017/02/06/release-1.2.0.html">Announcing Apache Flink 1.2.0</a></h2>
-
-      <p>06 Feb 2017 by Robert Metzger
-      </p>
-
-      <p><p>The Apache Flink community is excited to announce the 1.2.0 release.</p></p>
-
-      <p><a href="/news/2017/02/06/release-1.2.0.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -353,7 +358,7 @@
       
       </li>
       <li>
-        <span class="page_number ">Page: 11 of 15</span>
+        <span class="page_number ">Page: 11 of 16</span>
       </li>
       <li>
       
@@ -375,6 +380,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page12/index.html b/content/blog/page12/index.html
index d65cb3f..073eed5 100644
--- a/content/blog/page12/index.html
+++ b/content/blog/page12/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2017/02/06/release-1.2.0.html">Announcing Apache Flink 1.2.0</a></h2>
+
+      <p>06 Feb 2017 by Robert Metzger
+      </p>
+
+      <p><p>The Apache Flink community is excited to announce the 1.2.0 release.</p></p>
+
+      <p><a href="/news/2017/02/06/release-1.2.0.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2016/12/21/release-1.1.4.html">Apache Flink 1.1.4 Released</a></h2>
 
       <p>21 Dec 2016
@@ -332,21 +345,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2016/04/22/release-1.0.2.html">Flink 1.0.2 Released</a></h2>
-
-      <p>22 Apr 2016
-      </p>
-
-      <p><p>Today, the Flink community released Flink version <strong>1.0.2</strong>, the second bugfix release of the 1.0 series.</p>
-
-</p>
-
-      <p><a href="/news/2016/04/22/release-1.0.2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -357,7 +355,7 @@
       
       </li>
       <li>
-        <span class="page_number ">Page: 12 of 15</span>
+        <span class="page_number ">Page: 12 of 16</span>
       </li>
       <li>
       
@@ -379,6 +377,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page13/index.html b/content/blog/page13/index.html
index 5da820e..c0f2ba8 100644
--- a/content/blog/page13/index.html
+++ b/content/blog/page13/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2016/04/22/release-1.0.2.html">Flink 1.0.2 Released</a></h2>
+
+      <p>22 Apr 2016
+      </p>
+
+      <p><p>Today, the Flink community released Flink version <strong>1.0.2</strong>, the second bugfix release of the 1.0 series.</p>
+
+</p>
+
+      <p><a href="/news/2016/04/22/release-1.0.2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2016/04/14/flink-forward-announce.html">Flink Forward 2016 Call for Submissions Is Now Open</a></h2>
 
       <p>14 Apr 2016 by Aljoscha Krettek (<a href="https://twitter.com/">@aljoscha</a>)
@@ -328,21 +343,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2015/11/16/release-0.10.0.html">Announcing Apache Flink 0.10.0</a></h2>
-
-      <p>16 Nov 2015
-      </p>
-
-      <p><p>The Apache Flink community is pleased to announce the availability of the 0.10.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on data stream processing and operational features. About 80 contributors provided bug fixes, improvements, and new features such that in total more than 400 JIRA issues could be resolved.</p>
-
-</p>
-
-      <p><a href="/news/2015/11/16/release-0.10.0.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -353,7 +353,7 @@
       
       </li>
       <li>
-        <span class="page_number ">Page: 13 of 15</span>
+        <span class="page_number ">Page: 13 of 16</span>
       </li>
       <li>
       
@@ -375,6 +375,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page14/index.html b/content/blog/page14/index.html
index 76caa7f..701c80c 100644
--- a/content/blog/page14/index.html
+++ b/content/blog/page14/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2015/11/16/release-0.10.0.html">Announcing Apache Flink 0.10.0</a></h2>
+
+      <p>16 Nov 2015
+      </p>
+
+      <p><p>The Apache Flink community is pleased to announce the availability of the 0.10.0 release. The community put significant effort into improving and extending Apache Flink since the last release, focusing on data stream processing and operational features. About 80 contributors provided bug fixes, improvements, and new features such that in total more than 400 JIRA issues could be resolved.</p>
+
+</p>
+
+      <p><a href="/news/2015/11/16/release-0.10.0.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2015/09/16/off-heap-memory.html">Off-heap Memory in Apache Flink and the curious JIT compiler</a></h2>
 
       <p>16 Sep 2015 by Stephan Ewen (<a href="https://twitter.com/">@stephanewen</a>)
@@ -343,19 +358,6 @@ release is a preview release that contains known issues.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html">Peeking into Apache Flink's Engine Room</a></h2>
-
-      <p>13 Mar 2015 by Fabian Hüske (<a href="https://twitter.com/">@fhueske</a>)
-      </p>
-
-      <p>Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved – especially if large data sets need to be efficiently handled. In this blog post, we cut through Apache Flink’s layered architecture and take a look at its internals with a focus on how it handles joins.</p>
-
-      <p><a href="/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -366,7 +368,7 @@ release is a preview release that contains known issues.</p>
       
       </li>
       <li>
-        <span class="page_number ">Page: 14 of 15</span>
+        <span class="page_number ">Page: 14 of 16</span>
       </li>
       <li>
       
@@ -388,6 +390,16 @@ release is a preview release that contains known issues.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page15/index.html b/content/blog/page15/index.html
index 2f4b2fd..17f91e4 100644
--- a/content/blog/page15/index.html
+++ b/content/blog/page15/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html">Peeking into Apache Flink's Engine Room</a></h2>
+
+      <p>13 Mar 2015 by Fabian Hüske (<a href="https://twitter.com/">@fhueske</a>)
+      </p>
+
+      <p>Joins are prevalent operations in many data processing applications. Most data processing systems feature APIs that make joining data sets very easy. However, the internal algorithms for join processing are much more involved – especially if large data sets need to be efficiently handled. In this blog post, we cut through Apache Flink’s layered architecture and take a look at its internals with a focus on how it handles joins.</p>
+
+      <p><a href="/news/2015/03/13/peeking-into-Apache-Flinks-Engine-Room.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2015/03/02/february-2015-in-flink.html">February 2015 in the Flink community</a></h2>
 
       <p>02 Mar 2015
@@ -342,24 +355,6 @@ and offers a new API including definition of flexible windows.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2014/08/26/release-0.6.html">Apache Flink 0.6 available</a></h2>
-
-      <p>26 Aug 2014
-      </p>
-
-      <p><p>We are happy to announce the availability of Flink 0.6. This is the
-first release of the system inside the Apache Incubator and under the
-name Flink. Releases up to 0.5 were under the name Stratosphere, the
-academic and open source project that Flink originates from.</p>
-
-</p>
-
-      <p><a href="/news/2014/08/26/release-0.6.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -370,11 +365,11 @@ academic and open source project that Flink originates from.</p>
       
       </li>
       <li>
-        <span class="page_number ">Page: 15 of 15</span>
+        <span class="page_number ">Page: 15 of 16</span>
       </li>
       <li>
       
-        <span>Next</span>
+        <a href="/blog/page16" class="next">Next</a>
       
       </li>
     </ul>
@@ -392,6 +387,16 @@ academic and open source project that Flink originates from.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page9/index.html b/content/blog/page16/index.html
similarity index 88%
copy from content/blog/page9/index.html
copy to content/blog/page16/index.html
index 119bb31..895be65 100644
--- a/content/blog/page9/index.html
+++ b/content/blog/page16/index.html
@@ -201,153 +201,19 @@
     <!-- Blog posts -->
     
     <article>
-      <h2 class="blog-title"><a href="/news/2018/12/22/release-1.6.3.html">Apache Flink 1.6.3 Released</a></h2>
+      <h2 class="blog-title"><a href="/news/2014/08/26/release-0.6.html">Apache Flink 0.6 available</a></h2>
 
-      <p>22 Dec 2018
+      <p>26 Aug 2014
       </p>
 
-      <p><p>The Apache Flink community released the third bugfix version of the Apache Flink 1.6 series.</p>
+      <p><p>We are happy to announce the availability of Flink 0.6. This is the
+first release of the system inside the Apache Incubator and under the
+name Flink. Releases up to 0.5 were under the name Stratosphere, the
+academic and open source project that Flink originates from.</p>
 
 </p>
 
-      <p><a href="/news/2018/12/22/release-1.6.3.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/12/21/release-1.7.1.html">Apache Flink 1.7.1 Released</a></h2>
-
-      <p>21 Dec 2018
-      </p>
-
-      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.7 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/12/21/release-1.7.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/11/30/release-1.7.0.html">Apache Flink 1.7.0 Release Announcement</a></h2>
-
-      <p>30 Nov 2018
-       Till Rohrmann (<a href="https://twitter.com/stsffap">@stsffap</a>)</p>
-
-      <p><p>The Apache Flink community is pleased to announce Apache Flink 1.7.0. 
-The latest release includes more than 420 resolved issues and some exciting additions to Flink that we describe in the following sections of this post. 
-Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&amp;version=12343585">complete changelog</a> for more details.</p>
-
-</p>
-
-      <p><a href="/news/2018/11/30/release-1.7.0.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/10/29/release-1.6.2.html">Apache Flink 1.6.2 Released</a></h2>
-
-      <p>29 Oct 2018
-      </p>
-
-      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.6 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/10/29/release-1.6.2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/10/29/release-1.5.5.html">Apache Flink 1.5.5 Released</a></h2>
-
-      <p>29 Oct 2018
-      </p>
-
-      <p><p>The Apache Flink community released the fifth bugfix version of the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/10/29/release-1.5.5.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/09/20/release-1.6.1.html">Apache Flink 1.6.1 Released</a></h2>
-
-      <p>20 Sep 2018
-      </p>
-
-      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.6 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/09/20/release-1.6.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/09/20/release-1.5.4.html">Apache Flink 1.5.4 Released</a></h2>
-
-      <p>20 Sep 2018
-      </p>
-
-      <p><p>The Apache Flink community released the fourth bugfix version of the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/09/20/release-1.5.4.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/08/21/release-1.5.3.html">Apache Flink 1.5.3 Released</a></h2>
-
-      <p>21 Aug 2018
-      </p>
-
-      <p><p>The Apache Flink community released the third bugfix version of the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/08/21/release-1.5.3.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/08/09/release-1.6.0.html">Apache Flink 1.6.0 Release Announcement</a></h2>
-
-      <p>09 Aug 2018
-       Till Rohrmann (<a href="https://twitter.com/stsffap">@stsffap</a>)</p>
-
-      <p><p>The Apache Flink community is proud to announce the 1.6.0 release. Over the past 2 months, the Flink community has worked hard to resolve more than 360 issues. Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&amp;version=12342760">complete changelog</a> for more details.</p>
-
-</p>
-
-      <p><a href="/news/2018/08/09/release-1.6.0.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/07/31/release-1.5.2.html">Apache Flink 1.5.2 Released</a></h2>
-
-      <p>31 Jul 2018
-      </p>
-
-      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/07/31/release-1.5.2.html">Continue reading &raquo;</a></p>
+      <p><a href="/news/2014/08/26/release-0.6.html">Continue reading &raquo;</a></p>
     </article>
 
     <hr>
@@ -358,15 +224,15 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
     <ul class="pager">
       <li>
       
-        <a href="/blog/page8" class="previous">Previous</a>
+        <a href="/blog/page15" class="previous">Previous</a>
       
       </li>
       <li>
-        <span class="page_number ">Page: 9 of 15</span>
+        <span class="page_number ">Page: 16 of 16</span>
       </li>
       <li>
       
-        <a href="/blog/page10" class="next">Next</a>
+        <span>Next</span>
       
       </li>
     </ul>
@@ -384,6 +250,16 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page2/index.html b/content/blog/page2/index.html
index 7aefa39..4e6ec8d 100644
--- a/content/blog/page2/index.html
+++ b/content/blog/page2/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2021/01/11/batch-fine-grained-fault-tolerance.html">Exploring fine-grained recovery of bounded data sets on Flink</a></h2>
+
+      <p>11 Jan 2021
+       Robert Metzger (<a href="https://twitter.com/rmetzger_">@rmetzger_</a>)</p>
+
+      <p>Apache Flink 1.9 introduced fine-grained recovery through FLIP-1. The Flink APIs that are made for bounded workloads benefit from this change by individually recovering failed operators, re-using results from the previous processing step. This blog post gives an overview over these changes and evaluates their effectiveness.</p>
+
+      <p><a href="/news/2021/01/11/batch-fine-grained-fault-tolerance.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2021/01/07/pulsar-flink-connector-270.html">What's New in the Pulsar Flink Connector 2.7.0</a></h2>
 
       <p>07 Jan 2021
@@ -329,21 +342,6 @@ as well as increased observability for operational purposes.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/09/17/release-1.11.2.html">Apache Flink 1.11.2 Released</a></h2>
-
-      <p>17 Sep 2020
-       Zhu Zhu (<a href="https://twitter.com/zhuzhv">@zhuzhv</a>)</p>
-
-      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.11 series.</p>
-
-</p>
-
-      <p><a href="/news/2020/09/17/release-1.11.2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -354,7 +352,7 @@ as well as increased observability for operational purposes.</p>
       
       </li>
       <li>
-        <span class="page_number ">Page: 2 of 15</span>
+        <span class="page_number ">Page: 2 of 16</span>
       </li>
       <li>
       
@@ -376,6 +374,16 @@ as well as increased observability for operational purposes.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page3/index.html b/content/blog/page3/index.html
index 8602d17..ae24e72 100644
--- a/content/blog/page3/index.html
+++ b/content/blog/page3/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/09/17/release-1.11.2.html">Apache Flink 1.11.2 Released</a></h2>
+
+      <p>17 Sep 2020
+       Zhu Zhu (<a href="https://twitter.com/zhuzhv">@zhuzhv</a>)</p>
+
+      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.11 series.</p>
+
+</p>
+
+      <p><a href="/news/2020/09/17/release-1.11.2.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/09/04/community-update.html">Flink Community Update - August'20</a></h2>
 
       <p>04 Sep 2020
@@ -321,19 +336,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/07/27/community-update.html">Flink Community Update - July'20</a></h2>
-
-      <p>27 Jul 2020
-       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>)</p>
-
-      <p>As July draws to an end, we look back at a monthful of activity in the Flink community, including two releases (!) and some work around improving the first-time contribution experience in the project. Also, events are starting to pick up again, so we've put together a list of some great events you can (virtually) attend in August!</p>
-
-      <p><a href="/news/2020/07/27/community-update.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -344,7 +346,7 @@
       
       </li>
       <li>
-        <span class="page_number ">Page: 3 of 15</span>
+        <span class="page_number ">Page: 3 of 16</span>
       </li>
       <li>
       
@@ -366,6 +368,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page4/index.html b/content/blog/page4/index.html
index ab948a0..92004ed 100644
--- a/content/blog/page4/index.html
+++ b/content/blog/page4/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/07/27/community-update.html">Flink Community Update - July'20</a></h2>
+
+      <p>27 Jul 2020
+       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>)</p>
+
+      <p>As July draws to an end, we look back at a monthful of activity in the Flink community, including two releases (!) and some work around improving the first-time contribution experience in the project. Also, events are starting to pick up again, so we've put together a list of some great events you can (virtually) attend in August!</p>
+
+      <p><a href="/news/2020/07/27/community-update.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2020/07/23/catalogs.html">Sharing is caring - Catalogs in Flink SQL</a></h2>
 
       <p>23 Jul 2020
@@ -339,19 +352,6 @@ and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/05/07/community-update.html">Flink Community Update - May'20</a></h2>
-
-      <p>07 May 2020
-       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>)</p>
-
-      <p>Can you smell it? It’s release month! This time around, we’re warming up for Flink 1.11 and peeping back to the past month in the Flink community — with the release of Stateful Functions 2.0, a new self-paced Flink training and some efforts to improve the Flink documentation experience.</p>
-
-      <p><a href="/news/2020/05/07/community-update.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -362,7 +362,7 @@ and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
       
       </li>
       <li>
-        <span class="page_number ">Page: 4 of 15</span>
+        <span class="page_number ">Page: 4 of 16</span>
       </li>
       <li>
       
@@ -384,6 +384,16 @@ and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page5/index.html b/content/blog/page5/index.html
index f46030b..b0e3d5f 100644
--- a/content/blog/page5/index.html
+++ b/content/blog/page5/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/05/07/community-update.html">Flink Community Update - May'20</a></h2>
+
+      <p>07 May 2020
+       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>)</p>
+
+      <p>Can you smell it? It’s release month! This time around, we’re warming up for Flink 1.11 and peeping back to the past month in the Flink community — with the release of Stateful Functions 2.0, a new self-paced Flink training and some efforts to improve the Flink documentation experience.</p>
+
+      <p><a href="/news/2020/05/07/community-update.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/05/04/season-of-docs.html">Applying to Google Season of Docs 2020</a></h2>
 
       <p>04 May 2020
@@ -324,19 +337,6 @@ This release marks a big milestone: Stateful Functions 2.0 is not only an API up
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/ecosystem/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink.html">Apache Beam: How Beam Runs on Top of Flink</a></h2>
-
-      <p>22 Feb 2020
-       Maximilian Michels (<a href="https://twitter.com/stadtlegende">@stadtlegende</a>) &amp; Markos Sfikas (<a href="https://twitter.com/MarkSfik">@MarkSfik</a>)</p>
-
-      <p>This blog post discusses the reasons to use Flink together with Beam for your stream processing needs and takes a closer look at how Flink works with Beam under the hood.</p>
-
-      <p><a href="/ecosystem/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -347,7 +347,7 @@ This release marks a big milestone: Stateful Functions 2.0 is not only an API up
       
       </li>
       <li>
-        <span class="page_number ">Page: 5 of 15</span>
+        <span class="page_number ">Page: 5 of 16</span>
       </li>
       <li>
       
@@ -369,6 +369,16 @@ This release marks a big milestone: Stateful Functions 2.0 is not only an API up
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page6/index.html b/content/blog/page6/index.html
index f4b7f2c..34269fa 100644
--- a/content/blog/page6/index.html
+++ b/content/blog/page6/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/ecosystem/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink.html">Apache Beam: How Beam Runs on Top of Flink</a></h2>
+
+      <p>22 Feb 2020
+       Maximilian Michels (<a href="https://twitter.com/stadtlegende">@stadtlegende</a>) &amp; Markos Sfikas (<a href="https://twitter.com/MarkSfik">@MarkSfik</a>)</p>
+
+      <p>This blog post discusses the reasons to use Flink together with Beam for your stream processing needs and takes a closer look at how Flink works with Beam under the hood.</p>
+
+      <p><a href="/ecosystem/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/02/20/ddl.html">No Java Required: Configuring Sources and Sinks in SQL</a></h2>
 
       <p>20 Feb 2020
@@ -323,21 +336,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2019/10/18/release-1.9.1.html">Apache Flink 1.9.1 Released</a></h2>
-
-      <p>18 Oct 2019
-       Jark Wu (<a href="https://twitter.com/JarkWu">@JarkWu</a>)</p>
-
-      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.9 series.</p>
-
-</p>
-
-      <p><a href="/news/2019/10/18/release-1.9.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -348,7 +346,7 @@
       
       </li>
       <li>
-        <span class="page_number ">Page: 6 of 15</span>
+        <span class="page_number ">Page: 6 of 16</span>
       </li>
       <li>
       
@@ -370,6 +368,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page7/index.html b/content/blog/page7/index.html
index 4f6183e..113501b 100644
--- a/content/blog/page7/index.html
+++ b/content/blog/page7/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2019/10/18/release-1.9.1.html">Apache Flink 1.9.1 Released</a></h2>
+
+      <p>18 Oct 2019
+       Jark Wu (<a href="https://twitter.com/JarkWu">@JarkWu</a>)</p>
+
+      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.9 series.</p>
+
+</p>
+
+      <p><a href="/news/2019/10/18/release-1.9.1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/feature/2019/09/13/state-processor-api.html">The State Processor API: How to Read, write and modify the state of Flink applications</a></h2>
 
       <p>13 Sep 2019
@@ -324,19 +339,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/2019/05/14/temporal-tables.html">Flux capacitor, huh? Temporal Tables and Joins in Streaming SQL</a></h2>
-
-      <p>14 May 2019
-       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>)</p>
-
-      <p>Apache Flink natively supports temporal table joins since the 1.7 release for straightforward temporal data handling. In this blog post, we provide an overview of how this new concept can be leveraged for effective point-in-time analysis in streaming scenarios.</p>
-
-      <p><a href="/2019/05/14/temporal-tables.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -347,7 +349,7 @@
       
       </li>
       <li>
-        <span class="page_number ">Page: 7 of 15</span>
+        <span class="page_number ">Page: 7 of 16</span>
       </li>
       <li>
       
@@ -369,6 +371,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page8/index.html b/content/blog/page8/index.html
index cefa65d..772b30f 100644
--- a/content/blog/page8/index.html
+++ b/content/blog/page8/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/2019/05/14/temporal-tables.html">Flux capacitor, huh? Temporal Tables and Joins in Streaming SQL</a></h2>
+
+      <p>14 May 2019
+       Marta Paes (<a href="https://twitter.com/morsapaes">@morsapaes</a>)</p>
+
+      <p>Apache Flink natively supports temporal table joins since the 1.7 release for straightforward temporal data handling. In this blog post, we provide an overview of how this new concept can be leveraged for effective point-in-time analysis in streaming scenarios.</p>
+
+      <p><a href="/2019/05/14/temporal-tables.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2019/05/03/pulsar-flink.html">When Flink & Pulsar Come Together</a></h2>
 
       <p>03 May 2019
@@ -329,21 +342,6 @@ for more details.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/12/26/release-1.5.6.html">Apache Flink 1.5.6 Released</a></h2>
-
-      <p>26 Dec 2018
-      </p>
-
-      <p><p>The Apache Flink community released the sixth and last bugfix version of the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/12/26/release-1.5.6.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -354,7 +352,7 @@ for more details.</p>
       
       </li>
       <li>
-        <span class="page_number ">Page: 8 of 15</span>
+        <span class="page_number ">Page: 8 of 16</span>
       </li>
       <li>
       
@@ -376,6 +374,16 @@ for more details.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page9/index.html b/content/blog/page9/index.html
index 119bb31..669f586 100644
--- a/content/blog/page9/index.html
+++ b/content/blog/page9/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2018/12/26/release-1.5.6.html">Apache Flink 1.5.6 Released</a></h2>
+
+      <p>26 Dec 2018
+      </p>
+
+      <p><p>The Apache Flink community released the sixth and last bugfix version of the Apache Flink 1.5 series.</p>
+
+</p>
+
+      <p><a href="/news/2018/12/26/release-1.5.6.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2018/12/22/release-1.6.3.html">Apache Flink 1.6.3 Released</a></h2>
 
       <p>22 Dec 2018
@@ -337,21 +352,6 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/07/31/release-1.5.2.html">Apache Flink 1.5.2 Released</a></h2>
-
-      <p>31 Jul 2018
-      </p>
-
-      <p><p>The Apache Flink community released the second bugfix version of the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/07/31/release-1.5.2.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -362,7 +362,7 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
       
       </li>
       <li>
-        <span class="page_number ">Page: 9 of 15</span>
+        <span class="page_number ">Page: 9 of 16</span>
       </li>
       <li>
       
@@ -384,6 +384,16 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></li>
 
       
diff --git a/content/img/blog/2021-04-reactive-mode/arch.png b/content/img/blog/2021-04-reactive-mode/arch.png
new file mode 100644
index 0000000..b06d426
Binary files /dev/null and b/content/img/blog/2021-04-reactive-mode/arch.png differ
diff --git a/content/img/blog/2021-04-reactive-mode/high-timeout.png b/content/img/blog/2021-04-reactive-mode/high-timeout.png
new file mode 100644
index 0000000..01c569d
Binary files /dev/null and b/content/img/blog/2021-04-reactive-mode/high-timeout.png differ
diff --git a/content/img/blog/2021-04-reactive-mode/intro.svg b/content/img/blog/2021-04-reactive-mode/intro.svg
new file mode 100644
index 0000000..539f041
--- /dev/null
+++ b/content/img/blog/2021-04-reactive-mode/intro.svg
@@ -0,0 +1 @@
+<svg version="1.1" viewBox="0.0 0.0 691.0 345.0" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l691.0 0l0 345.0l-691.0 0l0 -345.0z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l691.0 0l0 345.0l-691.0 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m50.793964 8.918635l0 234.8 [...]
\ No newline at end of file
diff --git a/content/img/blog/2021-04-reactive-mode/result.png b/content/img/blog/2021-04-reactive-mode/result.png
new file mode 100644
index 0000000..69f7875
Binary files /dev/null and b/content/img/blog/2021-04-reactive-mode/result.png differ
diff --git a/content/index.html b/content/index.html
index 698c9b3..8799470 100644
--- a/content/index.html
+++ b/content/index.html
@@ -577,6 +577,9 @@
 
   <dl>
       
+        <dt> <a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></dt>
+        <dd>Apache Flink 1.13 introduced Reactive Mode, a big step forward in Flink's ability to dynamically adjust to changing workloads, reducing resource utilization and overall costs. This blog post showcases how to use this new feature on Kubernetes, including some lessons learned.</dd>
+      
         <dt> <a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></dt>
         <dd>The Apache Flink community is excited to announce the release of Flink 1.13.0! Around 200 contributors worked on over 1,000 issues to bring significant improvements to usability and observability as well as new features that improve the elasticity of Flink's Application-style deployments.</dd>
       
@@ -594,11 +597,6 @@ to develop scalable, consistent, and elastic distributed applications.</p>
       
         <dt> <a href="/2021/03/11/batch-execution-mode.html">A Rundown of Batch Execution Mode in the DataStream API</a></dt>
         <dd>Apache Flink 1.12 introduced batch execution mode through FLIP-140. This blog post discusses when to use the new mode, discusses its benefits and gives examples of programs that can be run in it.</dd>
-      
-        <dt> <a href="/news/2021/03/03/release-1.12.2.html">Apache Flink 1.12.2 Released</a></dt>
-        <dd><p>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.</p>
-
-</dd>
     
   </dl>
 
diff --git a/content/zh/index.html b/content/zh/index.html
index 246f409..879938d 100644
--- a/content/zh/index.html
+++ b/content/zh/index.html
@@ -570,6 +570,9 @@
 
   <dl>
       
+        <dt> <a href="/2021/05/06/reactive-mode.html">Scaling Flink automatically with Reactive Mode</a></dt>
+        <dd>Apache Flink 1.13 introduced Reactive Mode, a big step forward in Flink's ability to dynamically adjust to changing workloads, reducing resource utilization and overall costs. This blog post showcases how to use this new feature on Kubernetes, including some lessons learned.</dd>
+      
         <dt> <a href="/news/2021/05/03/release-1.13.0.html">Apache Flink 1.13.0 Release Announcement</a></dt>
         <dd>The Apache Flink community is excited to announce the release of Flink 1.13.0! Around 200 contributors worked on over 1,000 issues to bring significant improvements to usability and observability as well as new features that improve the elasticity of Flink's Application-style deployments.</dd>
       
@@ -587,11 +590,6 @@ to develop scalable, consistent, and elastic distributed applications.</p>
       
         <dt> <a href="/2021/03/11/batch-execution-mode.html">A Rundown of Batch Execution Mode in the DataStream API</a></dt>
         <dd>Apache Flink 1.12 introduced batch execution mode through FLIP-140. This blog post discusses when to use the new mode, discusses its benefits and gives examples of programs that can be run in it.</dd>
-      
-        <dt> <a href="/news/2021/03/03/release-1.12.2.html">Apache Flink 1.12.2 Released</a></dt>
-        <dd><p>The Apache Flink community released the next bugfix version of the Apache Flink 1.12 series.</p>
-
-</dd>
     
   </dl>