{"action":"created","comment":{"url":"https://api.github.com/repos/apache/flink-web/pulls/comments/195732267","pull_request_review_id":129161501,"id":195732267,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NTczMjI2Nw==","diff_hunk":"@@ -0,0 +1,203 @@\n+---\n+title: \"What is Apache Flink?\"\n+---\n+\n+<hr/>\n+<div class=\"row\">\n+  <div class=\"col-sm-12\" style=\"background-color: #f8f8f8;\">\n+    <h2>\n+      <a href=\"{{ site.baseurl }}/flink-architecture.html\">Architecture</a> &nbsp;\n+      <span class=\"glyphicon glyphicon-chevron-right\"></span> &nbsp;\n+      Applications &nbsp;\n+      <span class=\"glyphicon glyphicon-chevron-right\"></span> &nbsp;\n+      <a href=\"{{ site.baseurl }}/flink-operations.html\">Operations</a>\n+    </h2>\n+  </div>\n+</div>\n+<hr/>\n+\n+Apache Flink is a framework for stateful computations over unbounded and bounded data streams. Flink provides multiple APIs at different levels of abstraction and offers dedicated libraries for common use cases.\n+\n+Here, we present Flink's easy-to-use and expressive APIs and libraries.\n+\n+## Building Blocks for Streaming Applications\n+\n+The types of applications that can be built with and executed by a stream processing framework are defined by how well the framework controls *streams*, *state*, and *time*. In the following, we describe these building blocks for stream processing applications and explain Flink's approaches to handle them.\n+\n+### Streams\n+\n+Obviously, streams are a fundamental aspect of stream processing. However, streams can have different characteristics that affect how a stream can and should be processed. Flink is a versatile processing framework that can handle any kind of stream.\n+\n+* **Bounded** and **unbounded** streams: Streams can be unbounded or bounded, i.e., fixed-sized data sets. Flink has sophisticated features to process unbounded streams, but also dedicated operators to efficiently process bounded streams. \n+* **Real-time** and **recorded** streams: All data are generated as streams. There are two ways to process the data. Processing it in real-time as it is generated or persisting the stream to a storage system, e.g., a file system or object store, and processed it later. Flink applications can process recorded or real-time streams.\n+\n+### State\n+\n+Every non-trivial streaming application is stateful, i.e., only applications that apply transformations on individual events do not require state. Any application that runs basic business logic needs to remember events or intermediate results to access them at a later point in time, for example when the next event is received or after a specific time duration.\n+\n+<div class=\"row front-graphic\">\n+  <img src=\"{{ site.baseurl }}/img/function-state.png\" width=\"350px\" />\n+</div>\n+\n+Application state is a first-class citizen in Flink. This is easy to see by looking at all the features that Flink provides in the context of state handling.\n+\n+* **Keyed State** and **Operator State**: Flink provides two types of managed state, which are accessed in different contexts. Keyed state is always accessed in the context of a key, operator state is accessed in the context of an operator instance.\n+* **Multiple State Primitives**: Flink provides state primitives for different data structures, such as atomic values, lists, or maps. Developers can choose the state primitive that is most efficient based on the access pattern of the function.\n+* **Pluggable State Backends**: Application state is managed in and checkpointed by a pluggable state backend. Flink features different state backends that store state in memory or in RocksDB, an efficient embedded on-disk data store. Also custom state backends can be plugged in.\n+* **Exactly-once state consistency**: Flink's checkpointing and recovery algorithms guarantee the consistency of application state in case of a failure. Hence, failures are transparently handled and do not affect the correctness of an application.\n+* **Very Large State**: Flink is able to maintain application state of several terabytes in size due to its asynchronous and incremental checkpoint algorithm.\n+* **Scalable Applications**: Flink supports scaling of stateful applications by redistributing the state to more or fewer workers.\n+\n+### Time\n+\n+Time is another important ingredient of streaming applications. Most event streams have inherent time semantics because each event is produced at a speicific point in time. Moreover, many common stream computations are based on time, such as windows aggregations, sessionization, pattern detection, and time-based joins. An important aspect of stream processing is how an application measures time, i.e., the difference of event-time and processing-time.\n+\n+Flink provides a rich set of time-related features.\n+\n+* **Event-time Mode**: Applications that process streams with event-time semantics compute results based on timestamps of the events. Thereby, event-time processing allows for accurate and consistent results regardless whether recorded or real-time events are processed.\n+* **Watermark Support**: Flink employs watermarks to reason about time in event-time applications. Watermarks are also a flexible mechanism to trade-off the latency and completeness of results.\n+* **Late Data Handling**: When processing streams in event-time mode with watermarks, it can happen that a computation has been completed before all associated events have arrived. Such events are called late events. Flink features multiple options to handle late events, such as rerouting them via side outputs and updating previously completed results.","path":"flink-applications.md","position":59,"original_position":59,"commit_id":"9ab993b12a574d004eb98a4dae3c41ccd94a4aa2","original_commit_id":"9ab993b12a574d004eb98a4dae3c41ccd94a4aa2","user":{"login":"fhueske","id":2388347,"node_id":"MDQ6VXNlcjIzODgzNDc=","avatar_url":"https://avatars3.githubusercontent.com/u/2388347?v=4","gravatar_id":"","url":"https://api.github.com/users/fhueske","html_url":"https://github.com/fhueske","followers_url":"https://api.github.com/users/fhueske/followers","following_url":"https://api.github.com/users/fhueske/following{/other_user}","gists_url":"https://api.github.com/users/fhueske/gists{/gist_id}","starred_url":"https://api.github.com/users/fhueske/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fhueske/subscriptions","organizations_url":"https://api.github.com/users/fhueske/orgs","repos_url":"https://api.github.com/users/fhueske/repos","events_url":"https://api.github.com/users/fhueske/events{/privacy}","received_events_url":"https://api.github.com/users/fhueske/received_events","type":"User","site_admin":false},"body":"The side output docs don't discuss the late data use case.","created_at":"2018-06-15T13:29:10Z","updated_at":"2018-06-15T13:29:11Z","html_url":"https://github.com/apache/flink-web/pull/109#discussion_r195732267","pull_request_url":"https://api.github.com/repos/apache/flink-web/pulls/109","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/apache/flink-web/pulls/comments/195732267"},"html":{"href":"https://github.com/apache/flink-web/pull/109#discussion_r195732267"},"pull_request":{"href":"https://api.github.com/repos/apache/flink-web/pulls/109"}},"in_reply_to_id":193018753},"pull_request":{"url":"https://api.github.com/repos/apache/flink-web/pulls/109","id":192518530,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkyNTE4NTMw","html_url":"https://github.com/apache/flink-web/pull/109","diff_url":"https://github.com/apache/flink-web/pull/109.diff","patch_url":"https://github.com/apache/flink-web/pull/109.patch","issue_url":"https://api.github.com/repos/apache/flink-web/issues/109","number":109,"state":"open","locked":false,"title":"[FLINK-9522] Restructure Flink website","user":{"login":"fhueske","id":2388347,"node_id":"MDQ6VXNlcjIzODgzNDc=","avatar_url":"https://avatars3.githubusercontent.com/u/2388347?v=4","gravatar_id":"","url":"https://api.github.com/users/fhueske","html_url":"https://github.com/fhueske","followers_url":"https://api.github.com/users/fhueske/followers","following_url":"https://api.github.com/users/fhueske/following{/other_user}","gists_url":"https://api.github.com/users/fhueske/gists{/gist_id}","starred_url":"https://api.github.com/users/fhueske/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fhueske/subscriptions","organizations_url":"https://api.github.com/users/fhueske/orgs","repos_url":"https://api.github.com/users/fhueske/repos","events_url":"https://api.github.com/users/fhueske/events{/privacy}","received_events_url":"https://api.github.com/users/fhueske/received_events","type":"User","site_admin":false},"body":"This PR reworks some parts of the Flink website. The goal is to improve the structure of the website and provide more valuable information about the project and the community. \r\n\r\nA visitor should be able to answer the following questions:\r\n\r\n1. What is Apache Flink?\r\n2. Does it address my use case?\r\n3. Who is using it/Is it credible?\r\n\r\nWe also want to improve the page for users who have questions about Flink or need help.\r\n\r\nThe PR includes the following changes:\r\n\r\n- Rework start page: added features, new figure, moved powered-by users up\r\n- Rework menu structure to address different audiences: \r\n  1. Potential users\r\n  2. users\r\n  3. contributors\r\n- Replace Features page by \"What is Flink?\" pages\r\n- Rework \"Use Cases\" page\r\n- Add \"Getting Help\" page\r\n- Remove IRC channel info\r\n\r\nPlease give feedback, suggest improvements, and proof read the new texts.\r\nThanks!","created_at":"2018-06-04T20:26:15Z","updated_at":"2018-06-15T13:29:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6f3614ff6b9888c4b5bc315408f8c134cb314d46","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apache/flink-web/pulls/109/commits","review_comments_url":"https://api.github.com/repos/apache/flink-web/pulls/109/comments","review_comment_url":"https://api.github.com/repos/apache/flink-web/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/flink-web/issues/109/comments","statuses_url":"https://api.github.com/repos/apache/flink-web/statuses/9ab993b12a574d004eb98a4dae3c41ccd94a4aa2","head":{"label":"fhueske:reworked","ref":"reworked","sha":"9ab993b12a574d004eb98a4dae3c41ccd94a4aa2","user":{"login":"fhueske","id":2388347,"node_id":"MDQ6VXNlcjIzODgzNDc=","avatar_url":"https://avatars3.githubusercontent.com/u/2388347?v=4","gravatar_id":"","url":"https://api.github.com/users/fhueske","html_url":"https://github.com/fhueske","followers_url":"https://api.github.com/users/fhueske/followers","following_url":"https://api.github.com/users/fhueske/following{/other_user}","gists_url":"https://api.github.com/users/fhueske/gists{/gist_id}","starred_url":"https://api.github.com/users/fhueske/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fhueske/subscriptions","organizations_url":"https://api.github.com/users/fhueske/orgs","repos_url":"https://api.github.com/users/fhueske/repos","events_url":"https://api.github.com/users/fhueske/events{/privacy}","received_events_url":"https://api.github.com/users/fhueske/received_events","type":"User","site_admin":false},"repo":{"id":43681786,"node_id":"MDEwOlJlcG9zaXRvcnk0MzY4MTc4Ng==","name":"flink-web","full_name":"fhueske/flink-web","owner":{"login":"fhueske","id":2388347,"node_id":"MDQ6VXNlcjIzODgzNDc=","avatar_url":"https://avatars3.githubusercontent.com/u/2388347?v=4","gravatar_id":"","url":"https://api.github.com/users/fhueske","html_url":"https://github.com/fhueske","followers_url":"https://api.github.com/users/fhueske/followers","following_url":"https://api.github.com/users/fhueske/following{/other_user}","gists_url":"https://api.github.com/users/fhueske/gists{/gist_id}","starred_url":"https://api.github.com/users/fhueske/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fhueske/subscriptions","organizations_url":"https://api.github.com/users/fhueske/orgs","repos_url":"https://api.github.com/users/fhueske/repos","events_url":"https://api.github.com/users/fhueske/events{/privacy}","received_events_url":"https://api.github.com/users/fhueske/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/fhueske/flink-web","description":"Mirror of Apache Flink Website","fork":true,"url":"https://api.github.com/repos/fhueske/flink-web","forks_url":"https://api.github.com/repos/fhueske/flink-web/forks","keys_url":"https://api.github.com/repos/fhueske/flink-web/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fhueske/flink-web/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fhueske/flink-web/teams","hooks_url":"https://api.github.com/repos/fhueske/flink-web/hooks","issue_events_url":"https://api.github.com/repos/fhueske/flink-web/issues/events{/number}","events_url":"https://api.github.com/repos/fhueske/flink-web/events","assignees_url":"https://api.github.com/repos/fhueske/flink-web/assignees{/user}","branches_url":"https://api.github.com/repos/fhueske/flink-web/branches{/branch}","tags_url":"https://api.github.com/repos/fhueske/flink-web/tags","blobs_url":"https://api.github.com/repos/fhueske/flink-web/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fhueske/flink-web/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fhueske/flink-web/git/refs{/sha}","trees_url":"https://api.github.com/repos/fhueske/flink-web/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fhueske/flink-web/statuses/{sha}","languages_url":"https://api.github.com/repos/fhueske/flink-web/languages","stargazers_url":"https://api.github.com/repos/fhueske/flink-web/stargazers","contributors_url":"https://api.github.com/repos/fhueske/flink-web/contributors","subscribers_url":"https://api.github.com/repos/fhueske/flink-web/subscribers","subscription_url":"https://api.github.com/repos/fhueske/flink-web/subscription","commits_url":"https://api.github.com/repos/fhueske/flink-web/commits{/sha}","git_commits_url":"https://api.github.com/repos/fhueske/flink-web/git/commits{/sha}","comments_url":"https://api.github.com/repos/fhueske/flink-web/comments{/number}","issue_comment_url":"https://api.github.com/repos/fhueske/flink-web/issues/comments{/number}","contents_url":"https://api.github.com/repos/fhueske/flink-web/contents/{+path}","compare_url":"https://api.github.com/repos/fhueske/flink-web/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fhueske/flink-web/merges","archive_url":"https://api.github.com/repos/fhueske/flink-web/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fhueske/flink-web/downloads","issues_url":"https://api.github.com/repos/fhueske/flink-web/issues{/number}","pulls_url":"https://api.github.com/repos/fhueske/flink-web/pulls{/number}","milestones_url":"https://api.github.com/repos/fhueske/flink-web/milestones{/number}","notifications_url":"https://api.github.com/repos/fhueske/flink-web/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fhueske/flink-web/labels{/name}","releases_url":"https://api.github.com/repos/fhueske/flink-web/releases{/id}","deployments_url":"https://api.github.com/repos/fhueske/flink-web/deployments","created_at":"2015-10-05T12:03:43Z","updated_at":"2015-10-05T12:03:48Z","pushed_at":"2018-06-04T20:18:45Z","git_url":"git://github.com/fhueske/flink-web.git","ssh_url":"git@github.com:fhueske/flink-web.git","clone_url":"https://github.com/fhueske/flink-web.git","svn_url":"https://github.com/fhueske/flink-web","homepage":null,"size":62371,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"asf-site"}},"base":{"label":"apache:asf-site","ref":"asf-site","sha":"0b278cc297ff9353eb394f777a0a7b64d25c648d","user":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":35755560,"node_id":"MDEwOlJlcG9zaXRvcnkzNTc1NTU2MA==","name":"flink-web","full_name":"apache/flink-web","owner":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apache/flink-web","description":"Mirror of Apache Flink Website","fork":false,"url":"https://api.github.com/repos/apache/flink-web","forks_url":"https://api.github.com/repos/apache/flink-web/forks","keys_url":"https://api.github.com/repos/apache/flink-web/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/flink-web/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/flink-web/teams","hooks_url":"https://api.github.com/repos/apache/flink-web/hooks","issue_events_url":"https://api.github.com/repos/apache/flink-web/issues/events{/number}","events_url":"https://api.github.com/repos/apache/flink-web/events","assignees_url":"https://api.github.com/repos/apache/flink-web/assignees{/user}","branches_url":"https://api.github.com/repos/apache/flink-web/branches{/branch}","tags_url":"https://api.github.com/repos/apache/flink-web/tags","blobs_url":"https://api.github.com/repos/apache/flink-web/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/flink-web/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/flink-web/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/flink-web/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/flink-web/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/flink-web/languages","stargazers_url":"https://api.github.com/repos/apache/flink-web/stargazers","contributors_url":"https://api.github.com/repos/apache/flink-web/contributors","subscribers_url":"https://api.github.com/repos/apache/flink-web/subscribers","subscription_url":"https://api.github.com/repos/apache/flink-web/subscription","commits_url":"https://api.github.com/repos/apache/flink-web/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/flink-web/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/flink-web/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/flink-web/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/flink-web/contents/{+path}","compare_url":"https://api.github.com/repos/apache/flink-web/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/flink-web/merges","archive_url":"https://api.github.com/repos/apache/flink-web/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/flink-web/downloads","issues_url":"https://api.github.com/repos/apache/flink-web/issues{/number}","pulls_url":"https://api.github.com/repos/apache/flink-web/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/flink-web/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/flink-web/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/flink-web/labels{/name}","releases_url":"https://api.github.com/repos/apache/flink-web/releases{/id}","deployments_url":"https://api.github.com/repos/apache/flink-web/deployments","created_at":"2015-05-17T07:00:05Z","updated_at":"2018-04-13T05:02:02Z","pushed_at":"2018-06-05T12:47:23Z","git_url":"git://github.com/apache/flink-web.git","ssh_url":"git@github.com:apache/flink-web.git","clone_url":"https://github.com/apache/flink-web.git","svn_url":"https://github.com/apache/flink-web","homepage":null,"size":60332,"stargazers_count":20,"watchers_count":20,"language":"HTML","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":55,"mirror_url":null,"archived":false,"open_issues_count":4,"license":null,"forks":55,"open_issues":4,"watchers":20,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/flink-web/pulls/109"},"html":{"href":"https://github.com/apache/flink-web/pull/109"},"issue":{"href":"https://api.github.com/repos/apache/flink-web/issues/109"},"comments":{"href":"https://api.github.com/repos/apache/flink-web/issues/109/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/flink-web/pulls/109/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/flink-web/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/flink-web/pulls/109/commits"},"statuses":{"href":"https://api.github.com/repos/apache/flink-web/statuses/9ab993b12a574d004eb98a4dae3c41ccd94a4aa2"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"fhueske"}}