提交 d9f74aac 编写于 作者: W wizardforcel

2021-05-08 11:02:14

上级 f65b81a1
......@@ -21,6 +21,7 @@
+ [Storm 1.1.0 中文文档](doc/storm-110-doc-zh/SUMMARY.md)
+ [Zeppelin 0.7.2 中文文档](doc/zeppelin-072-doc-zh/SUMMARY.md)
+ [Hudi 0.5.0 中文文档](doc/hudi-050-doc-zh/SUMMARY.md)
+ [Kafka 1.0.0 中文文档](doc/kafka-100-doc-zh/SUMMARY.md)
## 贡献指南
......
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>404</title>
<style>
body{
background-color:#444;
font-size:14px;
}
h3{
font-size:60px;
color:#eee;
text-align:center;
padding-top:30px;
font-weight:normal;
}
</style>
</head>
<body>
<h3>404,您请求的文件不存在!</h3>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns:og="http://ogp.me/ns#">
<head>
<title>Kafka 中文文档 - ApacheCN</title>
<link rel='stylesheet' href='./css/styles.css' type='text/css'>
<link rel='stylesheet' href='./css/syntax-highlighting.css' type='text/css'>
<link rel="icon" type="image/gif" href="./images/apache_feather.gif">
<meta name="robots" content="index,follow" />
<meta name="language" content="en" />
<meta name="keywords" content="apache kafka messaging queuing distributed stream processing">
<meta name="description" content="Apache Kafka: A Distributed Streaming Platform.">
<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
<meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
<meta property="og:title" content="Apache Kafka" />
<meta property="og:image" content="http://apache-kafka.org/images/apache-kafka.png" />
<meta property="og:description" content="Apache Kafka: A Distributed Streaming Platform." />
<meta property="og:site_name" content="Apache Kafka" />
<meta property="og:type" content="website" />
<link href="https://fonts.googleapis.com/css?family=Cutive+Mono|Roboto:400,700,900" rel="stylesheet">
<script src="./js/jquery.min.js"></script>
<script async src="./js/apachecn/googletagmanager.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'UA-102475051-9');
</script>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?9f2b74b80ab8aafb5970835acf96a0ea";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script>
(function () {
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<script>
// DO NOT NEED TO UPDATE
// Legacy versions of the documentation to not do frontend redirect for
// These docs are written as a single super long file so no need to re-route
var legacyDocPaths = [
'./07/documentation',
'./07/documentation/',
'./08/documentation',
'./08/documentation/',
'./081/documentation',
'./081/documentation/',
'./082/documentation',
'./082/documentation/',
'./090/documentation',
'./090/documentation/',
'./0100/documentation',
'./0100/documentation/'
];
// Any direct request for Streams documentation in docs versions prior to 0101
// Redirect these requests to the standalone Streams doc page
var currentPath = window.location.pathname;
var shouldRedirect = !legacyDocPaths.includes(currentPath);
var isDocumenationPage = currentPath.includes('/documentation');
var hasNotSpecifiedFullPath = !currentPath.includes('/documentation/streams') && !currentPath.includes('/documentation/streams/');
// Look for legacy anchors to clue us in on what full path the user needs
// Add more as needed
var specifiedStreamsAnchor = window.location.hash.includes('#streams_');
if (shouldRedirect && isDocumenationPage && hasNotSpecifiedFullPath) {
if (specifiedStreamsAnchor) {
window.location.pathname = currentPath + 'streams';
}
}
</script>
</head>
<body>
<div class="main">
<div class="header">
<a href="/"><img width="325" height="97" class="logo" src="/images/logo.png"></a>
</div>
<!--#include virtual="includes/_header.htm" -->
<!--#include virtual="includes/_top.htm" -->
<div class="content">
<nav class="b-sticky-nav">
<div class="nav-scroller">
<div class="nav__inner">
<a class="b-nav__home nav__item" href="/">主页</a>
<a class="b-nav__intro nav__item" href="/intro.html">介绍</a>
<a class="b-nav__quickstart nav__item" href="/quickstart.html">快速开始</a>
<a class="b-nav__uses nav__item" href="/uses.html">使用案例</a>
<div class="nav__item nav__item__with__subs">
<a class="b-nav__docs nav__item nav__sub__anchor" href="/documentation.html">文档</a>
<a class="nav__item nav__sub__item" href="/documentation.html#gettingStarted">入门</a>
<a class="nav__item nav__sub__item" href="/documentation.html#api">APIs</a>
<a class="b-nav__streams nav__item nav__sub__item" href="/documentation.html#streams">kafka streams</a>
<a class="nav__item nav__sub__item" href="/documentation.html#connect">kafka connect</a>
<a class="nav__item nav__sub__item" href="/documentation.html#configuration">配置</a>
<a class="nav__item nav__sub__item" href="/documentation.html#design">设计</a>
<a class="nav__item nav__sub__item" href="/documentation.html#implementation">实现</a>
<a class="nav__item nav__sub__item" href="/documentation.html#operations">操作</a>
<a class="nav__item nav__sub__item" href="/documentation.html#security">安全</a>
</div>
<a class="b-nav__performance nav__item" href="/performance.html">性能</a>
<a class="b-nav__poweredby nav__item" href="/powered-by.html">powered by</a>
<a class="b-nav__project nav__item" href="/project.html">项目信息</a>
<a class="b-nav__ecosystem nav__item" href="https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem" target="_blank">生态圈</a>
<a class="b-nav__clients nav__item" href="https://cwiki.apache.org/confluence/display/KAFKA/Clients" target="_blank">客户端</a>
<a class="b-nav__events nav__item" href="/events.html">事件</a>
<a class="b-nav__contact nav__item" href="/contact.html">联系我们</a>
<div class="nav__item nav__item__with__subs">
<a class="b-nav__apache nav__item nav__sub__anchor b-nav__sub__anchor" href="#">apache</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/" target="_blank">贡献</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/licenses/" target="_blank">license</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/foundation/sponsorship.html" target="_blank">赞助</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/foundation/thanks.html" target="_blank">感谢</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/security/" target="_blank">安全</a>
</div>
<a class="btn" href="/downloads.html">下载</a>
<div class="social-links">
<a class="twitter" href="https://twitter.com/apachekafka" target="_blank">@apachekafka</a>
</div>
</div>
</div>
<div class="navindicator">
<div class="b-nav__home navindicator__item"></div>
<div class="b-nav__intro navindicator__item"></div>
<div class="b-nav__quickstart navindicator__item"></div>
<div class="b-nav__uses navindicator__item"></div>
<div class="b-nav__docs navindicator__item"></div>
<div class="b-nav__performance navindicator__item"></div>
<div class="b-nav__poweredby navindicator__item"></div>
<div class="b-nav__project navindicator__item"></div>
<div class="b-nav__ecosystem navindicator__item"></div>
<div class="b-nav__clients navindicator__item"></div>
<div class="b-nav__events navindicator__item"></div>
<div class="b-nav__contact navindicator__item"></div>
</div>
</nav>
<!--#include virtual="includes/_nav.htm" -->
<div class="right">
<h1>Getting the code</h1>
<p>
Our code is kept in git. You can check it out like this:
</p>
<pre>
git clone https://git-wip-us.apache.org/repos/asf/kafka.git kafka
</pre>
<p>
Information on contributing patches can be found <a href="contributing.html">here</a>.
</p>
<p>
Official releases are available <a href="downloads.html">here</a>.
</p>
<p>
The source code for the web site and documentation can be checked out from Apache git repo:
<pre>
git clone -b asf-site https://git-wip-us.apache.org/repos/asf/kafka-site.git
</pre>
A <a href="https://github.com/apache/kafka-site">github mirror</a> is used for submitting patches for website and documentation. We think documentation is a core part of the project and welcome any improvements, suggestions, or clarifications. The procedure of contributing to the documentation can also be found <a href="contributing.html">here</a>.
</p>
<p>
To setup IDEs for development, following <a href="https://cwiki.apache.org/confluence/display/KAFKA/Developer+Setup">this guide</a> on the wiki.
</p>
<script>
// Show selected style on nav item
$(function() { $('.b-nav__project').addClass('selected'); });
</script>
</div>
</div>
</div>
<div class="footer">
<div class="footer__inner">
<div class="footer__legal">
<span class="footer__legal__one">The contents of this website are &copy; 2016 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a> under the terms of the <a href="https://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License v2</a>.</span>
<span class="footer__legal__two">Apache Kafka, Kafka, and the Kafka logo are either registered trademarks or trademarks of The Apache Software Foundation</span>
<span class="footer__legal__three">in the United States and other countries.</span>
</div>
<a class="apache-feather" target="_blank" href="http://www.apache.org">
<img width="40" src="/images/feather-small.png" alt="Apache Feather">
</a>
</div>
</div>
</body>
<script type="text/javascript" src="/js/syntaxhighlighter.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
<script>
$(function () {
// list of pages that are rendered with Handlebars
var templates = [
'introduction',
'implementation',
'design',
'api',
'configuration',
'ops',
'security',
'connect',
'streams',
'quickstart',
'toc',
'upgrade',
'content'
];
// loop through all Handlebar templates on the page and render them
for(var i = 0; i < templates.length; i++) {
var templateScript = $("#" + templates[i] + "-template").html();
if(templateScript) {
var template = Handlebars.compile(templateScript);
var html = template(context);
$(".p-" + templates[i]).html(html);
}
}
});
</script>
<script src="/js/jquery.sticky-kit.min.js"></script>
<script>
$(function() {
// Set mobile scroll position on nav
function setNavScroll(offsetLeft) {
$('.nav-scroller').animate({
scrollLeft: $('.nav-scroller').scrollLeft() + $('nav .selected').offset().left - offsetLeft
}, 50);
}
// Helper classes for nav
$('nav').mouseenter(function(){
$(this).addClass('hovering');
});
$('nav').mouseleave(function(){
$(this).removeClass('hovering');
});
// Handle expanding sections of nav (async)
$('.b-nav__sub__anchor').click(function(){
$('nav .selected').removeClass('selected');
$('.nav__item__with__subs--expanded').removeClass('nav__item__with__subs--expanded');
$(this).addClass('selected');
$(this).parent().toggleClass('nav__item__with__subs--expanded');
if($(window).width() <= 650) {
window.setTimeout(function(){
setNavScroll(30);
}, 300);
}
});
// Initialize sticky elements on the page
if($(window).width() > 650) {
// Nav for desktop
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
// Documentation banner for desktop
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
} else {
// Scroll nav for mobile so current nav item is in view
window.setTimeout(function(){
setNavScroll(80);
}, 300);
}
// On window resize check to see if stuff should be unstuck
window.onresize = function(event) {
if($(window).width() <= 650) {
$('.b-sticky-nav').trigger("sticky_kit:detach");
} else {
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
}
};
});
</script>
</html>
<!--#include virtual="includes/_footer.htm" -->
此差异已折叠。
<!--#include virtual="includes/_header.htm" -->
<!--#include virtual="includes/_top.htm" -->
<div class="content">
<nav class="b-sticky-nav">
<div class="nav-scroller">
<div class="nav__inner">
<a class="b-nav__home nav__item" href="/">主页</a>
<a class="b-nav__intro nav__item" href="/intro.html">介绍</a>
<a class="b-nav__quickstart nav__item" href="/quickstart.html">快速开始</a>
<a class="b-nav__uses nav__item" href="/uses.html">使用案例</a>
<div class="nav__item nav__item__with__subs">
<a class="b-nav__docs nav__item nav__sub__anchor" href="/documentation.html">文档</a>
<a class="nav__item nav__sub__item" href="/documentation.html#gettingStarted">入门</a>
<a class="nav__item nav__sub__item" href="/documentation.html#api">APIs</a>
<a class="b-nav__streams nav__item nav__sub__item" href="/documentation.html#streams">kafka streams</a>
<a class="nav__item nav__sub__item" href="/documentation.html#connect">kafka connect</a>
<a class="nav__item nav__sub__item" href="/documentation.html#configuration">配置</a>
<a class="nav__item nav__sub__item" href="/documentation.html#design">设计</a>
<a class="nav__item nav__sub__item" href="/documentation.html#implementation">实现</a>
<a class="nav__item nav__sub__item" href="/documentation.html#operations">操作</a>
<a class="nav__item nav__sub__item" href="/documentation.html#security">安全</a>
</div>
<a class="b-nav__performance nav__item" href="/performance.html">性能</a>
<a class="b-nav__poweredby nav__item" href="/powered-by.html">powered by</a>
<a class="b-nav__project nav__item" href="/project.html">项目信息</a>
<a class="b-nav__ecosystem nav__item" href="https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem" target="_blank">生态圈</a>
<a class="b-nav__clients nav__item" href="https://cwiki.apache.org/confluence/display/KAFKA/Clients" target="_blank">客户端</a>
<a class="b-nav__events nav__item" href="/events.html">事件</a>
<a class="b-nav__contact nav__item" href="/contact.html">联系我们</a>
<div class="nav__item nav__item__with__subs">
<a class="b-nav__apache nav__item nav__sub__anchor b-nav__sub__anchor" href="#">apache</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/" target="_blank">贡献</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/licenses/" target="_blank">license</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/foundation/sponsorship.html" target="_blank">赞助</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/foundation/thanks.html" target="_blank">感谢</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/security/" target="_blank">安全</a>
</div>
<a class="btn" href="/downloads.html">下载</a>
<div class="social-links">
<a class="twitter" href="https://twitter.com/apachekafka" target="_blank">@apachekafka</a>
</div>
</div>
</div>
<div class="navindicator">
<div class="b-nav__home navindicator__item"></div>
<div class="b-nav__intro navindicator__item"></div>
<div class="b-nav__quickstart navindicator__item"></div>
<div class="b-nav__uses navindicator__item"></div>
<div class="b-nav__docs navindicator__item"></div>
<div class="b-nav__performance navindicator__item"></div>
<div class="b-nav__poweredby navindicator__item"></div>
<div class="b-nav__project navindicator__item"></div>
<div class="b-nav__ecosystem navindicator__item"></div>
<div class="b-nav__clients navindicator__item"></div>
<div class="b-nav__events navindicator__item"></div>
<div class="b-nav__contact navindicator__item"></div>
</div>
</nav>
<!--#include virtual="includes/_nav.htm" -->
<div class="right">
<h1>The committers</h1>
<table style="margin-top: 4rem;">
<tr>
<td>
<img src="images/jun.jpg" width="150">
</td>
<td>
Jun Rao<br>
Committer, PMC member, and VP of Kafka<br>
<a href="http://www.linkedin.com/in/junrao">/in/junrao</a><br>
<a href="http://twitter.com/junrao">@junrao</a>
</td>
<td>
<img src="images/neha.jpg" width="150">
</td>
<td>
Neha Narkhede<br>
Committer, and PMC member<br>
<a href="http://www.linkedin.com/in/nehanarkhede">/in/nehanarkhede</a><br>
<a href="http://twitter.com/nehanarkhede">@nehanarkhede</a>
</td>
</tr>
<tr>
<td>
<img src="images/joe.jpg" width="150">
</td>
<td>
Joe Stein<br>
Committer, and PMC member<br>
<a href="http://www.linkedin.com/in/charmalloc">/in/charmalloc</a><br>
<a href="https://twitter.com/allthingshadoop">@allthingshadoop</a>
</td>
<td>
<img src="images/jay.jpg" width="150">
</td>
<td>
Jay Kreps<br>
Committer, and PMC member<br>
<a href="http://www.linkedin.com/in/jaykreps">/in/jaykreps</a><br>
<a href="http://twitter.com/jaykreps">@jaykreps</a>
</td>
</tr>
<tr>
<td>
<img src="images/joel.jpg" width="150">
</td>
<td>
Joel Koshy<br>
Committer, and PMC member<br>
<a href="http://www.linkedin.com/in/jjkoshy">/in/jjkoshy</a>
</td>
<td>
<img src="images/prashanth.jpg" width="150">
</td>
<td>
Prashanth Menon<br>
Committer, and PMC member<br>
<a href="http://ca.linkedin.com/in/prasmenon">/in/prasmenon</a><br>
<a href="https://twitter.com/prashanth_menon">twitter</a>
</td>
</tr>
<tr>
<td>
<img src="images/jakob.jpg" width="150">
</td>
<td>
Jakob Homan<br>
Apache Member, Committer, and PMC member<br>
<a href="http://www.linkedin.com/in/jghoman">/in/jghoman</a><br>
<a href="http://twitter.com/BlueBoxTraveler">@blueboxtraveler</a>
</td>
<td>
<img src="images/david.jpg" width="150">
</td>
<td>
David Arthur<br>
Committer<br>
<a href="http://www.linkedin.com/pub/david-arthur/8/245/b26">/in/davidarthur</a><br>
<a href="https://twitter.com/mumrah">@mumrah</a>
</td>
</tr>
<tr>
<td>
<img src="images/sriram.jpg" width="150">
</td>
<td>
Sriram Subramanian<br>
Committer<br>
<a href="http://www.linkedin.com/pub/sriram-subramanian/3/52a/162">/in/sriram</a><br>
<a href="http://twitter.com/sriramsub1">@sriramsub1</a>
</td>
<td>
<img src="images/guozhang.jpg" width="150">
</td>
<td>
Guozhang Wang<br>
Committer, and PMC member<br>
<a href="http://www.linkedin.com/in/guozhangwang">/in/guozhang</a><br>
<a href="https://twitter.com/guozhangwang">@guozhangwang</a>
</td>
</tr>
<tr>
<td>
<img src="images/gwenshap.jpg" width="150">
</td>
<td>
Gwen Shapira<br>
Committer, and PMC member<br>
<a href="https://www.linkedin.com/in/gwenshapira">/in/gwenshapira</a><br>
<a href="https://twitter.com/gwenshap">@gwenshap</a></br>
</td>
<td>
<img src="images/harsha.jpg" width="150">
</td>
<td>
Sriharsha Chintalapani<br>
Committer<br>
<a href="https://www.linkedin.com/in/sriharsha">/in/sriharsha</a><br>
<a href="https://twitter.com/d3fmacro">@d3fmacro</a></br>
</td>
</tr>
<tr>
<td>
<img src="images/ewencp.jpg" width="150">
</td>
<td>
Ewen Cheslack-Postava<br>
Committer<br>
<a href="https://www.linkedin.com/in/ewencp">/in/ewencp</a><br>
<a href="https://twitter.com/ewencp">@ewencp</a></br>
</td>
<td>
<img src="images/ijuma.jpg" width="150">
</td>
<td>
Ismael Juma<br>
Committer, and PMC member<br>
<a href="https://www.linkedin.com/in/ijuma">/in/ijuma</a><br>
<a href="https://twitter.com/ijuma">@ijuma</a></br>
</td>
</tr>
<tr>
<td>
<img src="images/jason.jpg" width="150">
</td>
<td>
Jason Gustafson<br>
Committer, and PMC member<br>
<a href="https://www.linkedin.com/in/jasongustafson">/in/jasongustafson</a><br>
</td>
<td>
<img src="images/jiangjie.jpg" width="150">
</td>
<td>
Jiangjie (Becket) Qin<br>
Committer, and PMC member<br>
<a href="https://www.linkedin.com/in/jiangjieqin">/in/jiangjieqin</a><br>
</td>
</tr>
<tr>
<td>
<img src="images/granthenke.jpg" width="150">
</td>
<td>
Grant Henke<br>
Committer<br>
<a href="https://www.linkedin.com/in/granthenke">/in/granthenke</a><br>
<a href="https://twitter.com/gchenke">@gchenke</a></br>
</td>
<td>
<img src="images/rsivaram.jpg" width="150">
</td>
<td>
Rajini Sivaram<br>
Committer<br>
<a href="https://www.linkedin.com/in/rajini-sivaram">/in/rajini-sivaram</a><br>
</td>
</tr>
<tr>
<td>
<img src="images/damianguy.jpg" width="150">
</td>
<td>
Damian Guy<br>
Committer<br>
<a href="https://www.linkedin.com/in/damianguy">/in/damianguy</a><br>
<a href="https://twitter.com/damianguy">@damianguy</a></br>
</td>
<td>
<img src="images/onur.jpg" width="150">
</td>
<td>
Onur Karaman<br>
Committer<br>
<a href="https://www.linkedin.com/in/onurkaraman">/in/onurkaraman</a><br>
</td>
</tr>
</table>
<script>
// Show selected style on nav item
$(function() { $('.b-nav__project').addClass('selected'); });
</script>
</div>
</div>
</div>
<div class="footer">
<div class="footer__inner">
<div class="footer__legal">
<span class="footer__legal__one">The contents of this website are &copy; 2016 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a> under the terms of the <a href="https://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License v2</a>.</span>
<span class="footer__legal__two">Apache Kafka, Kafka, and the Kafka logo are either registered trademarks or trademarks of The Apache Software Foundation</span>
<span class="footer__legal__three">in the United States and other countries.</span>
</div>
<a class="apache-feather" target="_blank" href="http://www.apache.org">
<img width="40" src="/images/feather-small.png" alt="Apache Feather">
</a>
</div>
</div>
</body>
<script type="text/javascript" src="/js/syntaxhighlighter.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
<script>
$(function () {
// list of pages that are rendered with Handlebars
var templates = [
'introduction',
'implementation',
'design',
'api',
'configuration',
'ops',
'security',
'connect',
'streams',
'quickstart',
'toc',
'upgrade',
'content'
];
// loop through all Handlebar templates on the page and render them
for(var i = 0; i < templates.length; i++) {
var templateScript = $("#" + templates[i] + "-template").html();
if(templateScript) {
var template = Handlebars.compile(templateScript);
var html = template(context);
$(".p-" + templates[i]).html(html);
}
}
});
</script>
<script src="/js/jquery.sticky-kit.min.js"></script>
<script>
$(function() {
// Set mobile scroll position on nav
function setNavScroll(offsetLeft) {
$('.nav-scroller').animate({
scrollLeft: $('.nav-scroller').scrollLeft() + $('nav .selected').offset().left - offsetLeft
}, 50);
}
// Helper classes for nav
$('nav').mouseenter(function(){
$(this).addClass('hovering');
});
$('nav').mouseleave(function(){
$(this).removeClass('hovering');
});
// Handle expanding sections of nav (async)
$('.b-nav__sub__anchor').click(function(){
$('nav .selected').removeClass('selected');
$('.nav__item__with__subs--expanded').removeClass('nav__item__with__subs--expanded');
$(this).addClass('selected');
$(this).parent().toggleClass('nav__item__with__subs--expanded');
if($(window).width() <= 650) {
window.setTimeout(function(){
setNavScroll(30);
}, 300);
}
});
// Initialize sticky elements on the page
if($(window).width() > 650) {
// Nav for desktop
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
// Documentation banner for desktop
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
} else {
// Scroll nav for mobile so current nav item is in view
window.setTimeout(function(){
setNavScroll(80);
}, 300);
}
// On window resize check to see if stuff should be unstuck
window.onresize = function(event) {
if($(window).width() <= 650) {
$('.b-sticky-nav').trigger("sticky_kit:detach");
} else {
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
}
};
});
</script>
</html>
<!--#include virtual="includes/_footer.htm" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns:og="http://ogp.me/ns#">
<head>
<title>Kafka 中文文档 - ApacheCN</title>
<link rel='stylesheet' href='./css/styles.css' type='text/css'>
<link rel='stylesheet' href='./css/syntax-highlighting.css' type='text/css'>
<link rel="icon" type="image/gif" href="./images/apache_feather.gif">
<meta name="robots" content="index,follow" />
<meta name="language" content="en" />
<meta name="keywords" content="apache kafka messaging queuing distributed stream processing">
<meta name="description" content="Apache Kafka: A Distributed Streaming Platform.">
<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
<meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
<meta property="og:title" content="Apache Kafka" />
<meta property="og:image" content="http://apache-kafka.org/images/apache-kafka.png" />
<meta property="og:description" content="Apache Kafka: A Distributed Streaming Platform." />
<meta property="og:site_name" content="Apache Kafka" />
<meta property="og:type" content="website" />
<link href="https://fonts.googleapis.com/css?family=Cutive+Mono|Roboto:400,700,900" rel="stylesheet">
<script src="./js/jquery.min.js"></script>
<script async src="./js/apachecn/googletagmanager.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'UA-102475051-9');
</script>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?9f2b74b80ab8aafb5970835acf96a0ea";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script>
(function () {
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<script>
// DO NOT NEED TO UPDATE
// Legacy versions of the documentation to not do frontend redirect for
// These docs are written as a single super long file so no need to re-route
var legacyDocPaths = [
'./07/documentation',
'./07/documentation/',
'./08/documentation',
'./08/documentation/',
'./081/documentation',
'./081/documentation/',
'./082/documentation',
'./082/documentation/',
'./090/documentation',
'./090/documentation/',
'./0100/documentation',
'./0100/documentation/'
];
// Any direct request for Streams documentation in docs versions prior to 0101
// Redirect these requests to the standalone Streams doc page
var currentPath = window.location.pathname;
var shouldRedirect = !legacyDocPaths.includes(currentPath);
var isDocumenationPage = currentPath.includes('/documentation');
var hasNotSpecifiedFullPath = !currentPath.includes('/documentation/streams') && !currentPath.includes('/documentation/streams/');
// Look for legacy anchors to clue us in on what full path the user needs
// Add more as needed
var specifiedStreamsAnchor = window.location.hash.includes('#streams_');
if (shouldRedirect && isDocumenationPage && hasNotSpecifiedFullPath) {
if (specifiedStreamsAnchor) {
window.location.pathname = currentPath + 'streams';
}
}
</script>
</head>
<body>
<div class="main">
<div class="header">
<a href="/"><img width="325" height="97" class="logo" src="/images/logo.png"></a>
</div>
<!--#include virtual="includes/_header.htm" -->
<!--#include virtual="includes/_top.htm" -->
<div class="content">
<!--#include virtual="includes/_nav.htm" -->
<div class="right">
<h1>Contact</h1>
<h3>Mailing Lists</h3>
<p>
We have a few mailing lists hosted by Apache:
</p>
<ul>
<li>
<a href="mailto: users@kafka.apache.org">users@kafka.apache.org</a>: A list for general user questions about Kafka&reg;. To subscribe, send an email to <a href="mailto: users-subscribe@kafka.apache.org">users-subscribe@kafka.apache.org</a>. Archives are available <a href="http://mail-archives.apache.org/mod_mbox/kafka-users">here</a>.
</li>
<li>
<a href="mailto: dev@kafka.apache.org">dev@kafka.apache.org</a>: A list for discussion on Kafka development. To subscribe, send an email to <a href="mailto: dev-subscribe@kafka.apache.org">dev-subscribe@kafka.apache.org</a>. Archives available <a href="http://mail-archives.apache.org/mod_mbox/kafka-dev">here</a>.
</li>
<li>
<a href="mailto: jira@kafka.apache.org">jira@kafka.apache.org</a>: A list to track Kafka <a href="https://issues.apache.org/jira/projects/KAFKA">JIRA</a> notifications. To subscribe, send an email to <a href="mailto: jira-subscribe@kafka.apache.org">jira-subscribe@kafka.apache.org</a>. Archives available <a href="http://mail-archives.apache.org/mod_mbox/kafka-jira">here</a>.
</li>
<li>
<a href="mailto: commits@kafka.apache.org">commits@kafka.apache.org</a>: A list to track Kafka commits. To subscribe, send an email to <a href="mailto: commits-subscribe@kafka.apache.org">commits-subscribe@kafka.apache.org</a>. Archives available <a href="http://mail-archives.apache.org/mod_mbox/kafka-commits">here</a>.
</li>
</ul>
<p>
A searchable archive of the mailing lists is available at <a href="http://search-hadoop.com/?project=Kafka">search-hadoop.com</a>.
</p>
<p>
To unsubscribe from any of these you just change the word "subscribe" in the above to "unsubscribe".
</p>
<p>
Prior to the move to Apache we had a Google group we used for discussion. Archives can be found <a href="http://groups.google.com/group/kafka-dev">here</a>. After that we were in Apache Incubator which has its own archives for <a href="http://mail-archives.apache.org/mod_mbox/incubator-kafka-users/">user</a>, <a href="http://mail-archives.apache.org/mod_mbox/incubator-kafka-dev/">dev</a>, and <a href="http://mail-archives.apache.org/mod_mbox/incubator-kafka-commits/">commit</a> lists.
</p>
<h3>IRC</h3>
<p>
We have an IRC channel where there is often a few people hanging around if you want an interactive discussion. You can find us on chat.freenode.net in #apache-kafka room (previously #kafka). The irc log can be found <a href="https://botbot.me/freenode/apache-kafka/">here</a>.
</p>
<script>
// Show selected style on nav item
$(function() { $('.b-nav__contact').addClass('selected'); });
</script>
</div>
</div>
</div>
<div class="footer">
<div class="footer__inner">
<div class="footer__legal">
<span class="footer__legal__one">The contents of this website are &copy; 2016 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a> under the terms of the <a href="https://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License v2</a>.</span>
<span class="footer__legal__two">Apache Kafka, Kafka, and the Kafka logo are either registered trademarks or trademarks of The Apache Software Foundation</span>
<span class="footer__legal__three">in the United States and other countries.</span>
</div>
<a class="apache-feather" target="_blank" href="http://www.apache.org">
<img width="40" src="/images/feather-small.png" alt="Apache Feather">
</a>
</div>
</div>
</body>
<script type="text/javascript" src="/js/syntaxhighlighter.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
<script>
$(function () {
// list of pages that are rendered with Handlebars
var templates = [
'introduction',
'implementation',
'design',
'api',
'configuration',
'ops',
'security',
'connect',
'streams',
'quickstart',
'toc',
'upgrade',
'content'
];
// loop through all Handlebar templates on the page and render them
for(var i = 0; i < templates.length; i++) {
var templateScript = $("#" + templates[i] + "-template").html();
if(templateScript) {
var template = Handlebars.compile(templateScript);
var html = template(context);
$(".p-" + templates[i]).html(html);
}
}
});
</script>
<script src="/js/jquery.sticky-kit.min.js"></script>
<script>
$(function() {
// Set mobile scroll position on nav
function setNavScroll(offsetLeft) {
$('.nav-scroller').animate({
scrollLeft: $('.nav-scroller').scrollLeft() + $('nav .selected').offset().left - offsetLeft
}, 50);
}
// Helper classes for nav
$('nav').mouseenter(function(){
$(this).addClass('hovering');
});
$('nav').mouseleave(function(){
$(this).removeClass('hovering');
});
// Handle expanding sections of nav (async)
$('.b-nav__sub__anchor').click(function(){
$('nav .selected').removeClass('selected');
$('.nav__item__with__subs--expanded').removeClass('nav__item__with__subs--expanded');
$(this).addClass('selected');
$(this).parent().toggleClass('nav__item__with__subs--expanded');
if($(window).width() <= 650) {
window.setTimeout(function(){
setNavScroll(30);
}, 300);
}
});
// Initialize sticky elements on the page
if($(window).width() > 650) {
// Nav for desktop
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
// Documentation banner for desktop
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
} else {
// Scroll nav for mobile so current nav item is in view
window.setTimeout(function(){
setNavScroll(80);
}, 300);
}
// On window resize check to see if stuff should be unstuck
window.onresize = function(event) {
if($(window).width() <= 650) {
$('.b-sticky-nav').trigger("sticky_kit:detach");
} else {
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
}
};
});
</script>
</html>
<!--#include virtual="includes/_footer.htm" -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns:og="http://ogp.me/ns#">
<head>
<title>Kafka 中文文档 - ApacheCN</title>
<link rel='stylesheet' href='./css/styles.css' type='text/css'>
<link rel='stylesheet' href='./css/syntax-highlighting.css' type='text/css'>
<link rel="icon" type="image/gif" href="./images/apache_feather.gif">
<meta name="robots" content="index,follow" />
<meta name="language" content="en" />
<meta name="keywords" content="apache kafka messaging queuing distributed stream processing">
<meta name="description" content="Apache Kafka: A Distributed Streaming Platform.">
<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
<meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
<meta property="og:title" content="Apache Kafka" />
<meta property="og:image" content="http://apache-kafka.org/images/apache-kafka.png" />
<meta property="og:description" content="Apache Kafka: A Distributed Streaming Platform." />
<meta property="og:site_name" content="Apache Kafka" />
<meta property="og:type" content="website" />
<link href="https://fonts.googleapis.com/css?family=Cutive+Mono|Roboto:400,700,900" rel="stylesheet">
<script src="./js/jquery.min.js"></script>
<script async src="./js/apachecn/googletagmanager.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'UA-102475051-9');
</script>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?9f2b74b80ab8aafb5970835acf96a0ea";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script>
(function () {
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<script>
// DO NOT NEED TO UPDATE
// Legacy versions of the documentation to not do frontend redirect for
// These docs are written as a single super long file so no need to re-route
var legacyDocPaths = [
'./07/documentation',
'./07/documentation/',
'./08/documentation',
'./08/documentation/',
'./081/documentation',
'./081/documentation/',
'./082/documentation',
'./082/documentation/',
'./090/documentation',
'./090/documentation/',
'./0100/documentation',
'./0100/documentation/'
];
// Any direct request for Streams documentation in docs versions prior to 0101
// Redirect these requests to the standalone Streams doc page
var currentPath = window.location.pathname;
var shouldRedirect = !legacyDocPaths.includes(currentPath);
var isDocumenationPage = currentPath.includes('/documentation');
var hasNotSpecifiedFullPath = !currentPath.includes('/documentation/streams') && !currentPath.includes('/documentation/streams/');
// Look for legacy anchors to clue us in on what full path the user needs
// Add more as needed
var specifiedStreamsAnchor = window.location.hash.includes('#streams_');
if (shouldRedirect && isDocumenationPage && hasNotSpecifiedFullPath) {
if (specifiedStreamsAnchor) {
window.location.pathname = currentPath + 'streams';
}
}
</script>
</head>
<body>
<div class="main">
<div class="header">
<a href="/"><img width="325" height="97" class="logo" src="/images/logo.png"></a>
</div>
<!--#include virtual="includes/_header.htm" -->
<!--#include virtual="includes/_top.htm" -->
<div class="content">
<nav class="b-sticky-nav">
<div class="nav-scroller">
<div class="nav__inner">
<a class="b-nav__home nav__item" href="/">主页</a>
<a class="b-nav__intro nav__item" href="/intro.html">介绍</a>
<a class="b-nav__quickstart nav__item" href="/quickstart.html">快速开始</a>
<a class="b-nav__uses nav__item" href="/uses.html">使用案例</a>
<div class="nav__item nav__item__with__subs">
<a class="b-nav__docs nav__item nav__sub__anchor" href="/documentation.html">文档</a>
<a class="nav__item nav__sub__item" href="/documentation.html#gettingStarted">入门</a>
<a class="nav__item nav__sub__item" href="/documentation.html#api">APIs</a>
<a class="b-nav__streams nav__item nav__sub__item" href="/documentation.html#streams">kafka streams</a>
<a class="nav__item nav__sub__item" href="/documentation.html#connect">kafka connect</a>
<a class="nav__item nav__sub__item" href="/documentation.html#configuration">配置</a>
<a class="nav__item nav__sub__item" href="/documentation.html#design">设计</a>
<a class="nav__item nav__sub__item" href="/documentation.html#implementation">实现</a>
<a class="nav__item nav__sub__item" href="/documentation.html#operations">操作</a>
<a class="nav__item nav__sub__item" href="/documentation.html#security">安全</a>
</div>
<a class="b-nav__performance nav__item" href="/performance.html">性能</a>
<a class="b-nav__poweredby nav__item" href="/powered-by.html">powered by</a>
<a class="b-nav__project nav__item" href="/project.html">项目信息</a>
<a class="b-nav__ecosystem nav__item" href="https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem" target="_blank">生态圈</a>
<a class="b-nav__clients nav__item" href="https://cwiki.apache.org/confluence/display/KAFKA/Clients" target="_blank">客户端</a>
<a class="b-nav__events nav__item" href="/events.html">事件</a>
<a class="b-nav__contact nav__item" href="/contact.html">联系我们</a>
<div class="nav__item nav__item__with__subs">
<a class="b-nav__apache nav__item nav__sub__anchor b-nav__sub__anchor" href="#">apache</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/" target="_blank">贡献</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/licenses/" target="_blank">license</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/foundation/sponsorship.html" target="_blank">赞助</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/foundation/thanks.html" target="_blank">感谢</a>
<a class="b-nav__apache nav__item nav__sub__item" href="http://www.apache.org/security/" target="_blank">安全</a>
</div>
<a class="btn" href="/downloads.html">下载</a>
<div class="social-links">
<a class="twitter" href="https://twitter.com/apachekafka" target="_blank">@apachekafka</a>
</div>
</div>
</div>
<div class="navindicator">
<div class="b-nav__home navindicator__item"></div>
<div class="b-nav__intro navindicator__item"></div>
<div class="b-nav__quickstart navindicator__item"></div>
<div class="b-nav__uses navindicator__item"></div>
<div class="b-nav__docs navindicator__item"></div>
<div class="b-nav__performance navindicator__item"></div>
<div class="b-nav__poweredby navindicator__item"></div>
<div class="b-nav__project navindicator__item"></div>
<div class="b-nav__ecosystem navindicator__item"></div>
<div class="b-nav__clients navindicator__item"></div>
<div class="b-nav__events navindicator__item"></div>
<div class="b-nav__contact navindicator__item"></div>
</div>
</nav>
<!--#include virtual="includes/_nav.htm" -->
<div class="right">
<h1>How to contribute</h1>
<p>We are always very happy to have contributions, whether for trivial cleanups or big new features.</p>
<p>
If you don't know Java or Scala you can still contribute to the project. An important area is the <a href="https://cwiki.apache.org/confluence/display/KAFKA/Clients">clients</a>. We want to have high quality, well documented clients for each programming language. These, as well as the surrounding <a href="https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem">ecosystem</a> of integration tools that people use with Kafka&reg;, are critical aspects of the project.
<p>
Nor is code the only way to contribute to the project. We strongly value documentation and gladly accept improvements to the documentation.
<h2>Contributing A Code Change</h2>
To submit a change for inclusion, please do the following:
<ul>
<li>If the change is non-trivial please include some unit tests that cover the new functionality.</li>
<li>If you are introducing a completely new feature or API it is a good idea to start a wiki and get consensus on the basic design first.</li>
<li>Make sure you have observed the recommendations in the <a href="coding-guide.html">style guide</a>.</li>
<li>Follow the detailed instructions in <a href="https://cwiki.apache.org/confluence/display/KAFKA/Contributing+Code+Changes">Contributing Code Changes</a>.</li>
<li>Note that if the change is related to user-facing protocols / interface / configs, etc, you need to make the corresponding change on the documentation as well. For wiki page changes feel free to edit the page content directly (you may need to contact us to get the permission first if it is your first time to edit on wiki); website docs live in the code repo under `docs` so that changes to that can be done in the same PR as changes to the code. Website doc change instructions are given below.
<li>It is our job to follow up on patches in a timely fashion. <a href="mailto: dev@kafka.apache.org">Nag us</a> if we aren't doing our job (sometimes we drop things).</li>
</ul>
<h2>Contributing A Change To The Website</h2>
To submit a change for inclusion please do the following:
<ul>
<li>Follow the instructions in <a href="https://cwiki.apache.org/confluence/display/KAFKA/Contributing+Website+Documentation+Changes">Contributing Website Changes</a>.</li>
<li>It is our job to follow up on patches in a timely fashion. <a href="mailto: dev@kafka.apache.org">Nag us</a> if we aren't doing our job (sometimes we drop things). If the patch needs improvement, the reviewer will mark the jira back to "In Progress" after reviewing.</li>
</ul>
<h2>Finding A Project To Work On</h2>
The easiest way to get started working with the code base is to pick up a really easy JIRA and work on that. This will help you get familiar with the code base, build system, review process, etc. We flag these kind of starter bugs <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20KAFKA%20AND%20labels%20%3D%20newbie%20AND%20status%20%3D%20Open">here</a>.
<p>
Please contact us to be added the contributor list. After that you can assign yourself to the JIRA ticket you have started working on so others will notice.
</p>
<p>
If your work is considered a "major change" then you would need to initiate a Kafka Improvement Proposal (KIP) along with the JIRA ticket (more details can be found <a href="https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals">here</a>). Please ask us to grant you the permission on wiki space in order to create a KIP wiki page.
</p>
<p>
Once you have gotten through the basic process of checking in code, you may want to move on to a more substantial project. We try to curate this kind of project as well, and you can find these <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20KAFKA%20AND%20labels%20%3D%20project%20AND%20status%20%3D%20Open">here</a>.
</p>
<h2>Becoming a Committer</h2>
We are always interested in adding new contributors. What we look for is a series of contributions, good taste, and an ongoing interest in the project. If you are interested in becoming a committer, let one of the existing committers know and they can help guide you through the process.
<script>
// Show selected style on nav item
$(function() { $('.b-nav__project').addClass('selected'); });
</script>
</div>
</div>
</div>
<div class="footer">
<div class="footer__inner">
<div class="footer__legal">
<span class="footer__legal__one">The contents of this website are &copy; 2016 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a> under the terms of the <a href="https://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License v2</a>.</span>
<span class="footer__legal__two">Apache Kafka, Kafka, and the Kafka logo are either registered trademarks or trademarks of The Apache Software Foundation</span>
<span class="footer__legal__three">in the United States and other countries.</span>
</div>
<a class="apache-feather" target="_blank" href="http://www.apache.org">
<img width="40" src="/images/feather-small.png" alt="Apache Feather">
</a>
</div>
</div>
</body>
<script type="text/javascript" src="/js/syntaxhighlighter.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
<script>
$(function () {
// list of pages that are rendered with Handlebars
var templates = [
'introduction',
'implementation',
'design',
'api',
'configuration',
'ops',
'security',
'connect',
'streams',
'quickstart',
'toc',
'upgrade',
'content'
];
// loop through all Handlebar templates on the page and render them
for(var i = 0; i < templates.length; i++) {
var templateScript = $("#" + templates[i] + "-template").html();
if(templateScript) {
var template = Handlebars.compile(templateScript);
var html = template(context);
$(".p-" + templates[i]).html(html);
}
}
});
</script>
<script src="/js/jquery.sticky-kit.min.js"></script>
<script>
$(function() {
// Set mobile scroll position on nav
function setNavScroll(offsetLeft) {
$('.nav-scroller').animate({
scrollLeft: $('.nav-scroller').scrollLeft() + $('nav .selected').offset().left - offsetLeft
}, 50);
}
// Helper classes for nav
$('nav').mouseenter(function(){
$(this).addClass('hovering');
});
$('nav').mouseleave(function(){
$(this).removeClass('hovering');
});
// Handle expanding sections of nav (async)
$('.b-nav__sub__anchor').click(function(){
$('nav .selected').removeClass('selected');
$('.nav__item__with__subs--expanded').removeClass('nav__item__with__subs--expanded');
$(this).addClass('selected');
$(this).parent().toggleClass('nav__item__with__subs--expanded');
if($(window).width() <= 650) {
window.setTimeout(function(){
setNavScroll(30);
}, 300);
}
});
// Initialize sticky elements on the page
if($(window).width() > 650) {
// Nav for desktop
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
// Documentation banner for desktop
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
} else {
// Scroll nav for mobile so current nav item is in view
window.setTimeout(function(){
setNavScroll(80);
}, 300);
}
// On window resize check to see if stuff should be unstuck
window.onresize = function(event) {
if($(window).width() <= 650) {
$('.b-sticky-nav').trigger("sticky_kit:detach");
} else {
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
}
};
});
</script>
</html>
<!--#include virtual="includes/_footer.htm" -->
此差异已折叠。
/**
* Emulates Apple Swift documentation syntax highlighting
* Contributed by Nate Cook
* http://natecook.com
*/
.syntaxhighlighter a,
.syntaxhighlighter div,
.syntaxhighlighter code,
.syntaxhighlighter table,
.syntaxhighlighter table td,
.syntaxhighlighter table tr,
.syntaxhighlighter table tbody,
.syntaxhighlighter table thead,
.syntaxhighlighter table caption,
.syntaxhighlighter textarea {
-moz-border-radius: 0 0 0 0 !important;
-webkit-border-radius: 0 0 0 0 !important;
background: none !important;
border: 0 !important;
bottom: auto !important;
float: none !important;
height: auto !important;
left: auto !important;
line-height: 1.1em !important;
margin: 0 !important;
outline: 0 !important;
overflow: visible !important;
padding: 0 !important;
position: static !important;
right: auto !important;
text-align: left !important;
top: auto !important;
vertical-align: baseline !important;
width: auto !important;
box-sizing: content-box !important;
font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
font-weight: normal !important;
font-style: normal !important;
font-size: 1.4rem !important;
min-height: inherit !important;
min-height: auto !important; }
.syntaxhighlighter {
width: 100% !important;
margin: 1em 0 1em 0 !important;
position: relative !important;
overflow: auto !important;
font-size: 1em !important; }
.syntaxhighlighter .container:before, .syntaxhighlighter .container:after {
content: none !important; }
.syntaxhighlighter.source {
overflow: hidden !important; }
.syntaxhighlighter .bold {
font-weight: bold !important; }
.syntaxhighlighter .italic {
font-style: italic !important; }
.syntaxhighlighter .line {
white-space: pre !important; }
.syntaxhighlighter table {
width: 100% !important; }
.syntaxhighlighter table caption {
text-align: left !important;
padding: .5em 0 0.5em 1em !important; }
.syntaxhighlighter table td.code {
width: 100% !important; }
.syntaxhighlighter table td.code .container {
position: relative !important; }
.syntaxhighlighter table td.code .container textarea {
box-sizing: border-box !important;
position: absolute !important;
left: 0 !important;
top: 0 !important;
width: 100% !important;
height: 100% !important;
border: none !important;
background: white !important;
padding-left: 1em !important;
overflow: hidden !important;
white-space: pre !important; }
.syntaxhighlighter table td.gutter .line {
text-align: right !important;
padding: 0 0.5em 0 1em !important; }
.syntaxhighlighter table td.code .line {
padding: 0 1em !important; }
.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
padding-left: 0em !important; }
.syntaxhighlighter.show {
display: block !important; }
.syntaxhighlighter.collapsed table {
display: none !important; }
.syntaxhighlighter.collapsed .toolbar {
padding: 0.1em 0.8em 0em 0.8em !important;
font-size: 1em !important;
position: static !important;
width: auto !important;
height: auto !important; }
.syntaxhighlighter.collapsed .toolbar span {
display: inline !important;
margin-right: 1em !important; }
.syntaxhighlighter.collapsed .toolbar span a {
padding: 0 !important;
display: none !important; }
.syntaxhighlighter.collapsed .toolbar span a.expandSource {
display: inline !important; }
.syntaxhighlighter .toolbar {
position: absolute !important;
right: 1px !important;
top: 1px !important;
width: 11px !important;
height: 11px !important;
font-size: 10px !important;
z-index: 10 !important; }
.syntaxhighlighter .toolbar span.title {
display: inline !important; }
.syntaxhighlighter .toolbar a {
display: block !important;
text-align: center !important;
text-decoration: none !important;
padding-top: 1px !important; }
.syntaxhighlighter .toolbar a.expandSource {
display: none !important; }
.syntaxhighlighter.ie {
font-size: .9em !important;
padding: 1px 0 1px 0 !important; }
.syntaxhighlighter.ie .toolbar {
line-height: 8px !important; }
.syntaxhighlighter.ie .toolbar a {
padding-top: 0px !important; }
.syntaxhighlighter.printing .line.alt1 .content,
.syntaxhighlighter.printing .line.alt2 .content,
.syntaxhighlighter.printing .line.highlighted .number,
.syntaxhighlighter.printing .line.highlighted.alt1 .content,
.syntaxhighlighter.printing .line.highlighted.alt2 .content {
background: none !important; }
.syntaxhighlighter.printing .line .number {
color: #bbbbbb !important; }
.syntaxhighlighter.printing .line .content {
color: black !important; }
.syntaxhighlighter.printing .toolbar {
display: none !important; }
.syntaxhighlighter.printing a {
text-decoration: none !important; }
.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
color: black !important; }
.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
color: #008200 !important; }
.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
color: blue !important; }
.syntaxhighlighter.printing .keyword {
color: #006699 !important;
font-weight: bold !important; }
.syntaxhighlighter.printing .preprocessor {
color: gray !important; }
.syntaxhighlighter.printing .variable {
color: #aa7700 !important; }
.syntaxhighlighter.printing .value {
color: #009900 !important; }
.syntaxhighlighter.printing .functions {
color: #ff1493 !important; }
.syntaxhighlighter.printing .constants {
color: #0066cc !important; }
.syntaxhighlighter.printing .script {
font-weight: bold !important; }
.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
color: gray !important; }
.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
color: #ff1493 !important; }
.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
color: red !important; }
.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
color: black !important; }
.syntaxhighlighter {
background-color: white !important; }
.syntaxhighlighter .line.alt1 {
background-color: white !important; }
.syntaxhighlighter .line.alt2 {
background-color: white !important; }
.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
background-color: #e9e9e9 !important; }
.syntaxhighlighter .line.highlighted.number {
color: white !important; }
.syntaxhighlighter table caption {
color: #353535 !important; }
.syntaxhighlighter table td.code .container textarea {
background: white;
color: black; }
.syntaxhighlighter .gutter {
color: gray !important; }
.syntaxhighlighter .gutter .line {
border-right: none !important; }
.syntaxhighlighter .gutter .line.highlighted {
background-color: #6ce26c !important;
color: white !important; }
.syntaxhighlighter.printing .line .content {
border: none !important; }
.syntaxhighlighter.collapsed {
overflow: visible !important; }
.syntaxhighlighter.collapsed .toolbar {
color: #00f !important;
background: #fff !important;
border: 1px solid #6ce26c !important; }
.syntaxhighlighter.collapsed .toolbar a {
color: #00f !important; }
.syntaxhighlighter.collapsed .toolbar a:hover {
color: #f00 !important; }
.syntaxhighlighter .toolbar {
color: #fff !important;
background: #6ce26c !important;
border: none !important; }
.syntaxhighlighter .toolbar a {
color: #fff !important; }
.syntaxhighlighter .toolbar a:hover {
color: #000 !important; }
.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
color: black !important; }
.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
color: #008312 !important; }
.syntaxhighlighter .string, .syntaxhighlighter .string a {
color: #c41a16 !important; }
.syntaxhighlighter .keyword {
font-weight: bold !important;
color: #b833a1 !important; }
.syntaxhighlighter .preprocessor {
color: gray !important; }
.syntaxhighlighter .variable {
color: #508187 !important; }
.syntaxhighlighter .value {
color: #1c00cf !important; }
.syntaxhighlighter .functions {
color: #ff1493 !important; }
.syntaxhighlighter .constants {
color: #0066cc !important; }
.syntaxhighlighter .script {
font-weight: bold !important;
color: #b833a1 !important;
background-color: none !important; }
.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
color: #b833a1 !important; }
.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
color: #6f41a7 !important; }
.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
color: red !important; }
.syntaxhighlighter {
font-size: 0.75em !important; }
.syntaxhighlighter a,
.syntaxhighlighter div,
.syntaxhighlighter code,
.syntaxhighlighter table,
.syntaxhighlighter table td,
.syntaxhighlighter table tr,
.syntaxhighlighter table tbody,
.syntaxhighlighter table thead,
.syntaxhighlighter table caption,
.syntaxhighlighter textarea {
font-family: Menlo, Consolas, monospace !important; }
.syntaxhighlighter table td.gutter .line {
text-align: right !important;
padding: 0.2em 0.5em !important; }
.syntaxhighlighter table td.code .line {
padding: 0.2em 1em !important; }
.syntaxhighlighter table td.code .container textarea {
padding-top: 0.1em !important;
line-height: 1.48em !important; }
.syntaxhighlighter .gutter .line {
background: #f9f9f9 !important; }
.syntaxhighlighter .gutter .line.highlighted {
background-color: #898989 !important;
color: white !important; }
@media only screen and (max-width: 800px) {
.syntaxhighlighter a, .syntaxhighlighter div, .syntaxhighlighter code, .syntaxhighlighter table, .syntaxhighlighter table td, .syntaxhighlighter table tr, .syntaxhighlighter table tbody, .syntaxhighlighter table thead, .syntaxhighlighter table caption, .syntaxhighlighter textarea
{
font-size:1.2rem!important;
}
}
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
<!-- should always link the the latest release's documentation -->
<!--#include virtual="../10/documentation.html" -->
此差异已折叠。
此差异已折叠。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns:og="http://ogp.me/ns#">
<head>
<title>Kafka 中文文档 - ApacheCN</title>
<link rel='stylesheet' href='./css/styles.css' type='text/css'>
<link rel='stylesheet' href='./css/syntax-highlighting.css' type='text/css'>
<link rel="icon" type="image/gif" href="./images/apache_feather.gif">
<meta name="robots" content="index,follow" />
<meta name="language" content="en" />
<meta name="keywords" content="apache kafka messaging queuing distributed stream processing">
<meta name="description" content="Apache Kafka: A Distributed Streaming Platform.">
<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
<meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />
<meta property="og:title" content="Apache Kafka" />
<meta property="og:image" content="http://apache-kafka.org/images/apache-kafka.png" />
<meta property="og:description" content="Apache Kafka: A Distributed Streaming Platform." />
<meta property="og:site_name" content="Apache Kafka" />
<meta property="og:type" content="website" />
<link href="https://fonts.googleapis.com/css?family=Cutive+Mono|Roboto:400,700,900" rel="stylesheet">
<script src="./js/jquery.min.js"></script>
<script async src="./js/apachecn/googletagmanager.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());
gtag('config', 'UA-102475051-9');
</script>
<script>
var _hmt = _hmt || [];
(function () {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?9f2b74b80ab8aafb5970835acf96a0ea";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script>
(function () {
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
<script>
// DO NOT NEED TO UPDATE
// Legacy versions of the documentation to not do frontend redirect for
// These docs are written as a single super long file so no need to re-route
var legacyDocPaths = [
'./07/documentation',
'./07/documentation/',
'./08/documentation',
'./08/documentation/',
'./081/documentation',
'./081/documentation/',
'./082/documentation',
'./082/documentation/',
'./090/documentation',
'./090/documentation/',
'./0100/documentation',
'./0100/documentation/'
];
// Any direct request for Streams documentation in docs versions prior to 0101
// Redirect these requests to the standalone Streams doc page
var currentPath = window.location.pathname;
var shouldRedirect = !legacyDocPaths.includes(currentPath);
var isDocumenationPage = currentPath.includes('/documentation');
var hasNotSpecifiedFullPath = !currentPath.includes('/documentation/streams') && !currentPath.includes('/documentation/streams/');
// Look for legacy anchors to clue us in on what full path the user needs
// Add more as needed
var specifiedStreamsAnchor = window.location.hash.includes('#streams_');
if (shouldRedirect && isDocumenationPage && hasNotSpecifiedFullPath) {
if (specifiedStreamsAnchor) {
window.location.pathname = currentPath + 'streams';
}
}
</script>
</head>
<!--#include virtual="includes/_header.htm" -->
<body>
<div class="main">
<div class="header">
<a href="/"><img width="325" height="97" class="logo" src="/images/logo.png"></a>
</div>
<!--#include virtual="includes/_top.htm" -->
<div class="content">
@@include('includes/_nav.htm)
<!--#include virtual="includes/_nav.htm" -->
<div class="right">
<h1>Events</h1>
<section style="overflow:hidden;">
<h2 style="margin-top:4rem;">Meetups</h2>
<p>Meetups focused on Kafka and the Kafka ecosystem are currently running in the following locations:</p>
<div style="float:left; width: 28rem;">
<h5 style="margin-bottom:0;">North America</h5>
<ul>
<li><a href="https://www.meetup.com/http-kafka-apache-org/" target="_blank">Bay Area, CA</a></li>
<li><a href="http://www.meetup.com/Apache-Kafka-San-Francisco/" target="_blank">San Francisco, CA</a></li>
<li><a href="https://www.meetup.com/Apache-Kafka-ATL/" target="_blank">Atlanta, GA</a></li>
<li><a href="https://www.meetup.com/Austin-Apache-Kafka-Meetup-Stream-Data-Platform/" target="_blank">Austin, TX</a></li>
<li><a href="https://www.meetup.com/Chicago-Area-Kafka-Enthusiasts/" target="_blank">Chicago, IL</a></li>
<li><a href="https://www.meetup.com/Front-Range-Apache-Kafka/" target="_blank">Denver, CO</a></li>
<li><a href="https://www.meetup.com/Apache-Kafka-NYC/" target="_blank">New York, NY</a></li>
<li><a href="https://www.meetup.com/Seattle-Apache-Kafka-Meetup/" target="_blank">Seattle, WA</a></li>
<li><a href="https://www.meetup.com/Apache-Kafka-DC/" target="_blank">Washington, DC</a></li>
<li><a href="https://www.meetup.com/Boston-Apache-kafka-Meetup/" target="_blank">Boston, MA</a></li>
<li><a href="https://www.meetup.com/Minneapolis-Apache-Kafka/" target="_blank">Minneapolis, MN</a></li>
<li><a href="https://www.meetup.com/Portland-Apache-Kafka/" target="_blank">Portland, OR</a></li>
<li><a href="https://www.meetup.com/Apache-Kafka-Phoenix-Meetup/" target="_blank">Phoenix, AZ</a></li>
<li><a href="https://www.meetup.com/Logger/" target="_blank">Toronto, Canada</a></li>
<li><a href="https://www.meetup.com/Kafka-Montreal-Meetup/" target="_blank">Montréal, Canada</a></li>
</ul>
</div>
<div style="float:left; width: 28rem;">
<h5 style="margin-bottom:0;">Europe</h5>
<ul>
<li><a href="http://www.meetup.com/Apache-Kafka-London/" target="_blank">London, England</a></li>
<li><a href="https://www.meetup.com/apachekafkamadrid/" target="_blank">Madrid, Spain</a></li>
<li><a href="https://www.meetup.com/Paris-Apache-Kafka-Meetup/" target="_blank">Paris, France</a></li>
<li><a href="https://www.meetup.com/Berlin-Apache-Kafka-Meetup-by-Confluent/" target="_blank">Berlin, Germany</a></li>
<li><a href="https://www.meetup.com/Apache-Kafka-Germany-Munich/" target="_blank">Munich, Germany</a></li>
<li><a href="https://www.meetup.com/Amsterdam-Apache-Kafka-Meetup/" target="_blank">Amsterdam, Netherlands</a></li>
<li><a href="https://www.meetup.com/Kafka-Meetup-Utrecht/" target="_blank">Utrecht, Netherlands</a></li>
<li><a href="https://www.meetup.com/Dublin-Apache-Kafka-Meetup-by-Confluent/" target="_blank">Dublin, Ireland</a></li>
<li><a href="https://www.meetup.com/Copenhagen-Apache-Kafka-Meetup-by-Confluent/" target="_blank">Copenhagen, Denmark</a></li>
<li><a href="https://www.meetup.com/Stockholm-Apache-Kafka-Meetup-by-Confluent/" target="_blank">Stockholm, Sweden</a></li>
<li><a href="https://www.meetup.com/Brussels-Apache-Kafka-Meetup-by-Confluent/" target="_blank">Brussels, Belgium</a></li>
<li><a href="https://www.meetup.com/Zurich-Apache-Kafka-Meetup-by-Confluent/" target="_blank">Z&uuml;rich, Switzerland</a></li>
<li><a href="https://www.meetup.com/Lisbon-Apache-Kafka-Meetup-by-Confluent/" target="_blank">Lisbon, Portugal</a></li>
</ul>
</div>
<div style="float:left; width: 28rem;">
<h5 style="margin-bottom:0;">Asia</h5>
<ul>
<li><a href="https://www.meetup.com/Beijing-Kafka-Meetup/" target="_blank">Beijing, China</a></li>
<li><a href="https://kafka-apache-jp.connpass.com/" target="_blank">Tokyo, Japan</a></li>
<li><a href="https://www.meetup.com/Apache-Kafka-TLV/" target="_blank">Tel Aviv-Yafo, Israel</a></li>
</ul>
<h5 style="margin-bottom:0; margin-top:4rem">Australia</h5>
<ul>
<li><a href="http://www.meetup.com/Apache-Kafka-Sydney-Meetup/" target="_blank">Sydney, Australia</a></li>
</ul>
</div>
</section>
<section style="border-top:.1rem solid #dedede; margin-top:6rem;">
<h2 style="margin-top:4rem;">Kafka Summit</h2>
<p>Conference for anyone currently using or excited to learn about Kafka and real time data streaming.</p>
<p style="margin-top:2rem;"><a class="btn btn--secondary btn--sm" href="http://kafka-summit.org" target="_blank">View times &amp; locations</a></p>
</section>
<script>
// Show selected style on nav item
$(function() { $('.b-nav__events').addClass('selected'); });
</script>
</div>
</div>
</div>
<div class="footer">
<div class="footer__inner">
<div class="footer__legal">
<span class="footer__legal__one">The contents of this website are &copy; 2016 <a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a> under the terms of the <a href="https://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">Apache License v2</a>.</span>
<span class="footer__legal__two">Apache Kafka, Kafka, and the Kafka logo are either registered trademarks or trademarks of The Apache Software Foundation</span>
<span class="footer__legal__three">in the United States and other countries.</span>
</div>
<a class="apache-feather" target="_blank" href="http://www.apache.org">
<img width="40" src="/images/feather-small.png" alt="Apache Feather">
</a>
</div>
</div>
</body>
<script type="text/javascript" src="/js/syntaxhighlighter.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
<script>
$(function () {
// list of pages that are rendered with Handlebars
var templates = [
'introduction',
'implementation',
'design',
'api',
'configuration',
'ops',
'security',
'connect',
'streams',
'quickstart',
'toc',
'upgrade',
'content'
];
// loop through all Handlebar templates on the page and render them
for(var i = 0; i < templates.length; i++) {
var templateScript = $("#" + templates[i] + "-template").html();
if(templateScript) {
var template = Handlebars.compile(templateScript);
var html = template(context);
$(".p-" + templates[i]).html(html);
}
}
});
</script>
<script src="/js/jquery.sticky-kit.min.js"></script>
<script>
$(function() {
// Set mobile scroll position on nav
function setNavScroll(offsetLeft) {
$('.nav-scroller').animate({
scrollLeft: $('.nav-scroller').scrollLeft() + $('nav .selected').offset().left - offsetLeft
}, 50);
}
// Helper classes for nav
$('nav').mouseenter(function(){
$(this).addClass('hovering');
});
$('nav').mouseleave(function(){
$(this).removeClass('hovering');
});
// Handle expanding sections of nav (async)
$('.b-nav__sub__anchor').click(function(){
$('nav .selected').removeClass('selected');
$('.nav__item__with__subs--expanded').removeClass('nav__item__with__subs--expanded');
$(this).addClass('selected');
$(this).parent().toggleClass('nav__item__with__subs--expanded');
if($(window).width() <= 650) {
window.setTimeout(function(){
setNavScroll(30);
}, 300);
}
});
// Initialize sticky elements on the page
if($(window).width() > 650) {
// Nav for desktop
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
// Documentation banner for desktop
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
} else {
// Scroll nav for mobile so current nav item is in view
window.setTimeout(function(){
setNavScroll(80);
}, 300);
}
// On window resize check to see if stuff should be unstuck
window.onresize = function(event) {
if($(window).width() <= 650) {
$('.b-sticky-nav').trigger("sticky_kit:detach");
} else {
$('.b-sticky-nav').stick_in_parent({offset_top: 40});
$('.b-sticky-doc-banner').stick_in_parent({offset_top: 0});
}
};
});
</script>
</html>
<!--#include virtual="includes/_footer.htm" -->
google-site-verification: google29eadbd0256e020c.html
\ No newline at end of file
google-site-verification: google7bff870a0cde1d0d.html
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册