You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@incubator.apache.org by yu...@apache.org on 2016/12/29 09:49:04 UTC

[2/2] incubator-rocketmq-site git commit: Merge best practice docs closes apache/incubator-rocketmq-site#1

Merge best practice docs closes apache/incubator-rocketmq-site#1


Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/commit/9b429fbd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/tree/9b429fbd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/diff/9b429fbd

Branch: refs/heads/master
Commit: 9b429fbd9b92aa5542bf6ef261d54ea75782e448
Parents: 9616e1b
Author: dongeforever <zh...@yeah.net>
Authored: Thu Dec 29 17:48:41 2016 +0800
Committer: yukon <yu...@apache.org>
Committed: Thu Dec 29 17:48:41 2016 +0800

----------------------------------------------------------------------
 _data/navigation.yml                           |   8 +-
 _docs/best-practice-broker.md                  |  23 +
 _docs/best-practice-consumer.md                |  39 ++
 _docs/best-practice-namesvr.md                 |  14 +
 _docs/best-practice-producer.md                |  45 ++
 content/about/contact/index.html               |   2 +-
 content/about/team/index.html                  |   2 +-
 content/archive-layout-with-content/index.html |  52 ++
 content/collection-archive/index.html          |  88 ++++
 content/docs/best-practice-broker/index.html   | 475 ++++++++++++++++++
 content/docs/best-practice-consumer/index.html | 500 +++++++++++++++++++
 content/docs/best-practice-namesvr/index.html  | 463 ++++++++++++++++++
 content/docs/best-practice-producer/index.html | 507 ++++++++++++++++++++
 content/docs/cli-admin-tool/index.html         |  16 +-
 content/docs/cluster-deployment/index.html     |  16 +-
 content/docs/code-guidelines/index.html        |  16 +-
 content/docs/core-concept/index.html           |  16 +-
 content/docs/faq/index.html                    |  67 +--
 content/docs/motivation/index.html             |  16 +-
 content/docs/pull-request/index.html           |  16 +-
 content/docs/quick-start/index.html            |  16 +-
 content/feed.xml                               |   2 +-
 content/sitemap.xml                            |  24 +
 23 files changed, 2340 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/_data/navigation.yml
----------------------------------------------------------------------
diff --git a/_data/navigation.yml b/_data/navigation.yml
index bfb866e..5660990 100644
--- a/_data/navigation.yml
+++ b/_data/navigation.yml
@@ -36,11 +36,13 @@ docs:
   - title: Best Practice
     children:
       - title: "Broker"
-        url: /docs/motivation/
+        url: /docs/best-practice-broker/
       - title: "Producer"
-        url: /docs/motivation/
+        url: /docs/best-practice-producer/
       - title: "Consumer"
-        url: /docs/core-concept/
+        url: /docs/best-practice-consumer/
+      - title: "NameServer"
+        url: /docs/best-practice-namesvr/
       - title: "Virtualization"
         url: /docs/cli-admin-tool/
   - title: FAQ

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/_docs/best-practice-broker.md
----------------------------------------------------------------------
diff --git a/_docs/best-practice-broker.md b/_docs/best-practice-broker.md
new file mode 100644
index 0000000..60817bc
--- /dev/null
+++ b/_docs/best-practice-broker.md
@@ -0,0 +1,23 @@
+---
+title: "Best Practice For Broker"
+permalink: /docs/best-practice-broker/
+modified: 2016-12-24T15:01:43-04:00
+---
+
+Some useful tips for users.
+
+{% include toc %}
+
+## Broker Role
+Broker Role is ASYNC_MASTER, SYNC_MASTER or SLAVE.
+If you cannot tolerate message missing, we suggest you deploy SYNC_MASTER and attach a SLAVE to it.
+If you feel ok about missing, but you want the Broker to be always available, you may deploy ASYNC_MASTER with SLAVE.
+If you just want to make it easy, you may only need a ASYNC_MASTER without SLAVE.
+## FlushDiskType
+ASYNC_FLUSH is recommended, for SYNC_FLUSH is expensive and will cause too much performance loss. If you want reliability, we recommend you use SYNC_MASTER with SLAVE.
+## ReentrantLock vs CAS
+to be finished
+## os.sh
+to be finished
+
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/_docs/best-practice-consumer.md
----------------------------------------------------------------------
diff --git a/_docs/best-practice-consumer.md b/_docs/best-practice-consumer.md
new file mode 100644
index 0000000..a1d6c6b
--- /dev/null
+++ b/_docs/best-practice-consumer.md
@@ -0,0 +1,39 @@
+---
+title: "Best Practice For Consumer"
+permalink: /docs/best-practice-consumer/
+modified: 2016-12-24T15:01:43-04:00
+---
+
+Some useful tips for users.
+
+{% include toc %}
+## Consumer Group and Subscriptions
+The first thing you should be aware of is that different Consumer Group can consume the same topic independently, each of the group will have their own consuming offsets. 
+And make sure each Consumer within the same Group to subscribe the same topics.
+## MessageListener
+### Orderly
+The Consumer will lock each MessageQueue to make sure it is consumed one by one orderly. This will cause performance loss, but it is useful when you are care about the order of the messages.
+It is not recommended to throw exception, you can return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT instead.
+### Concurrently
+As the name tells, the Consumer will consume the messages concurrently. It is recommended to use this for achieving good performance.
+It is not recommended to throw exception, you can return ConsumeConcurrentlyStatus.RECONSUME_LATER instead.
+### Consume Status
+For MessageListenerConcurrently, you can return RECONSUME_LATER to tell the consumer that you can not consume it right now and want to reconsume it later. Then you can continue to consume other messages. 
+For MessageListenerOrderly, as that you care about the order, so you can not jump over the message, but you can return SUSPEND_CURRENT_QUEUE_A_MOMENT to tell the consumer to hold on for a moment.
+### Blocking
+It is not recommend to block the Listener, for in return it will block the thread pool, and finally the consuming process may get stuck.
+## Thread Number
+The consumer use a ThreadPoolExecutor to process consuming internally. So you can tune it by using setConsumeThreadMin or setConsumeThreadMax.
+## ConsumeFromWhere
+When a new Consumer Group is established, it will need to decide whether it need to consume the historical messages which had already existed in the Broker. 
+CONSUME_FROM_LAST_OFFSET will ignore the historical messages, and consume any newly produced.
+CONSUME_FROM_FIRST_OFFSET will consume every message existed in the Broker.
+You can also use CONSUME_FROM_TIMESTAMP to consume messages produced after the specified timestamp.
+## Duplication
+Many circumstances could cause duplication, such as:
+* Producer resend messages(i.e, in case of FLUSH_SLAVE_TIMEOUT)
+* Consumer shutdown with some offsets not updated to the Broker in time.
+
+
+So you may need to do some external work to handle this if your application cannot tolerate. For example, you may check the primary key of your DB.
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/_docs/best-practice-namesvr.md
----------------------------------------------------------------------
diff --git a/_docs/best-practice-namesvr.md b/_docs/best-practice-namesvr.md
new file mode 100644
index 0000000..2f5ba58
--- /dev/null
+++ b/_docs/best-practice-namesvr.md
@@ -0,0 +1,14 @@
+---
+title: "Best Practice For NameServer"
+permalink: /docs/best-practice-namesvr/
+modified: 2016-12-24T15:01:43-04:00
+---
+
+Some useful tips for users.
+
+{% include toc %}
+
+## Ordered Message
+to be finished
+
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/_docs/best-practice-producer.md
----------------------------------------------------------------------
diff --git a/_docs/best-practice-producer.md b/_docs/best-practice-producer.md
new file mode 100644
index 0000000..56f8794
--- /dev/null
+++ b/_docs/best-practice-producer.md
@@ -0,0 +1,45 @@
+---
+title: "Best Practice For Producer"
+permalink: /docs/best-practice-producer/
+modified: 2016-12-24T15:01:43-04:00
+---
+
+Some useful tips for users.
+
+{% include toc %}
+
+## SendStatus  
+When sending a message, you will get SendResult and it will contain the SendStatus. Firstly, we assume that Message's isWaitStoreMsgOK=true(default is true). If not, we will always get SEND_OK if no exception is thrown.
+Follow are the descriptions about each status.
+### FLUSH_DISK_TIMEOUT
+If the Broker set MessageStoreConfig's FlushDiskType=SYNC_FLUSH(default is ASYNC_FLUSH), and the Broker dose not finish flushing disk within MessageStoreConfig's syncFlushTimeout(default is 5 secs), you will get such status.
+### FLUSH_SLAVE_TIMEOUT
+If the Broker's role is SYNC_MASTER(default is ASYNC_MASTER), and the slave Broker dose not finish synchronizing with the master within the MessageStoreConfig's syncFlushTimeout(default is 5 secs), you will get such status.
+### SLAVE_NOT_AVAILABLE
+If the Broker's role is SYNC_MASTER(default is ASYNC_MASTER), but no slave Broker is configured, you will get such status.
+### SEND_OK
+You should be aware that SEND_OK does not mean it is reliable. If you cannot tolerate message missing, you should also enable SYNC_MASTER or SYNC_FLUSH.
+### Duplication or Missing
+If you get FLUSH_DISK_TIMEOUT, FLUSH_SLAVE_TIMEOUT or SLAVE_NOT_AVAILABLE, and the Broker happens to shutdown right the moment, you may get your message missing.
+At this time, you have two choices, one is letting it go, which may get message missing; another is resending, which may get message duplication.
+Often we suggest resend and make a way to handle the duplication removal when consuming. Unless you feel it does not matter when some messages are missed.
+## Timeout 
+The Client send requests to Broker, and wait the responses, but if the max wait time is elapsed and no response is return, the Client will throw a RemotingTimeoutException.
+The default wait time is 3 seconds.You can also pass timeout argument using send(msg, timeout) instead of send(msg).
+Note that we do not suggest the value to be too small, for the Broker need some time to flush disk or synchronize with slave. Also the value may have little effect if it is too bigger than syncFlushTimeout for Broker may return a response with FLUSH_SLAVE_TIMEOUT or FLUSH_SLAVE_TIMEOUT before the timeout.
+## Message Size
+We suggest the message should be no more than 512K.
+## Async Sending
+Default send(msg) will block until the response is return. So if you care about performance, we suggest you use send(msg, callback) which will act in a async way. 
+## Producer Group
+Normally, the producer group has no effects. But if you use transaction, you should take care of it. 
+In default, you can only create only one producer with the same producer group in the same JVM. Usually, this is enough.
+## Thread Safety 
+The producer is thread-safe, you can just use it in your business logic.
+## Performance
+If you want more than one producer in one JVM, maybe for big data processing, we suggest you:
+* use async sending with a few producers(3~5 is enough)
+* setInstanceName for each producer
+
+  
+

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/about/contact/index.html
----------------------------------------------------------------------
diff --git a/content/about/contact/index.html b/content/about/contact/index.html
index 9871191..ecdd387 100644
--- a/content/about/contact/index.html
+++ b/content/about/contact/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2016-12-29T17:32:31+08:00">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/about/team/index.html
----------------------------------------------------------------------
diff --git a/content/about/team/index.html b/content/about/team/index.html
index 95c5cd2..657c3ef 100644
--- a/content/about/team/index.html
+++ b/content/about/team/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2016-12-29T17:32:31+08:00">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
 
 
 

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/archive-layout-with-content/index.html
----------------------------------------------------------------------
diff --git a/content/archive-layout-with-content/index.html b/content/archive-layout-with-content/index.html
index e5ded07..3c2724e 100644
--- a/content/archive-layout-with-content/index.html
+++ b/content/archive-layout-with-content/index.html
@@ -736,6 +736,58 @@
     
     <h2 class="archive__item-title" itemprop="headline">
       
+        <a href="/docs/best-practice-broker/" rel="permalink">Best Practice For Broker</a>
+      
+    </h2>
+    
+    
+  </article>
+</div>
+
+<div class="list__item">
+  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/best-practice-consumer/" rel="permalink">Best Practice For Consumer</a>
+      
+    </h2>
+    
+    
+  </article>
+</div>
+
+<div class="list__item">
+  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/best-practice-namesvr/" rel="permalink">Best Practice For NameServer</a>
+      
+    </h2>
+    
+    
+  </article>
+</div>
+
+<div class="list__item">
+  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/best-practice-producer/" rel="permalink">Best Practice For Producer</a>
+      
+    </h2>
+    
+    
+  </article>
+</div>
+
+<div class="list__item">
+  <article class="archive__item" itemscope="" itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
         <a href="/categories/" rel="permalink">Posts by Category</a>
       
     </h2>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/collection-archive/index.html
----------------------------------------------------------------------
diff --git a/content/collection-archive/index.html b/content/collection-archive/index.html
index ee6639b..b77a155 100644
--- a/content/collection-archive/index.html
+++ b/content/collection-archive/index.html
@@ -506,6 +506,94 @@
 </div>
     
   
+    
+      
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/best-practice-broker/" rel="permalink">Best Practice For Broker
+</a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
+
+</p>
+  </article>
+</div>
+    
+  
+    
+      
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/best-practice-consumer/" rel="permalink">Best Practice For Consumer
+</a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
+
+</p>
+  </article>
+</div>
+    
+  
+    
+      
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/best-practice-namesvr/" rel="permalink">Best Practice For NameServer
+</a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
+
+</p>
+  </article>
+</div>
+    
+  
+    
+      
+
+
+
+<div class="list__item">
+  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
+    
+    <h2 class="archive__item-title" itemprop="headline">
+      
+        <a href="/docs/best-practice-producer/" rel="permalink">Best Practice For Producer
+</a>
+      
+    </h2>
+    
+    <p class="archive__item-excerpt" itemprop="description">Some useful tips for users.
+
+</p>
+  </article>
+</div>
+    
+  
 
   
     

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/best-practice-broker/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-broker/index.html b/content/docs/best-practice-broker/index.html
new file mode 100644
index 0000000..77c7bd3
--- /dev/null
+++ b/content/docs/best-practice-broker/index.html
@@ -0,0 +1,475 @@
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>Best Practice For Broker - Apache RocketMQ</title>
+
+
+
+
+<meta name="description" content="Some useful tips for users.">
+
+
+
+
+<meta property="og:locale" content="en">
+<meta property="og:site_name" content="Apache RocketMQ">
+<meta property="og:title" content="Best Practice For Broker">
+
+
+
+
+  <meta property="og:description" content="Some useful tips for users.">
+
+
+
+  <meta name="twitter:site" content="@ApacheRocketMQ">
+  <meta name="twitter:title" content="Best Practice For Broker">
+  <meta name="twitter:description" content="Some useful tips for users.">
+  <meta name="twitter:url" content="">
+
+  
+    <meta name="twitter:card" content="summary">
+    
+  
+
+  
+
+
+
+  
+
+  
+
+
+
+
+
+  <meta property="og:type" content="article">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
+
+
+
+
+
+
+
+
+  <script type="application/ld+json">
+    {
+      "@context" : "http://schema.org",
+      "@type" : "Person",
+      "name" : "Apache RocketMQ",
+      "url" : null,
+      "sameAs" : null
+    }
+  </script>
+
+
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
+
+<!-- http://t.co/dKP3o1e -->
+<meta name="HandheldFriendly" content="True">
+<meta name="MobileOptimized" content="320">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<script>
+  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
+</script>
+
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+
+<meta http-equiv="cleartype" content="on">
+    <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+
+<!-- end custom head snippets -->
+  </head>
+
+  <body class="layout--single">
+
+    <!--[if lt IE 9]>
+<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
+<![endif]-->
+    <div class="masthead">
+  <div class="masthead__inner-wrap">
+    <div class="masthead__menu">
+      <nav id="site-nav" class="greedy-nav">
+        <button><div class="navicon"></div></button>
+        <ul class="visible-links">
+          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
+          
+        </ul>
+        <ul class="hidden-links hidden"></ul>
+      </nav>
+    </div>
+  </div>
+</div>
+
+    
+
+
+
+<div id="main" role="main">
+  
+  <div class="sidebar sticky">
+  
+  
+    
+      
+      
+      
+    
+    
+      
+
+<nav class="nav__list">
+  
+  <input id="ac-toc" name="accordion-toc" type="checkbox" />
+  <label for="ac-toc">Toggle Menu</label>
+  <ul class="nav__items">
+    
+      <li>
+        
+          <span class="nav__sub-title">User Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/motivation/" class="">Motivation</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Contributor Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Best Practice</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-broker/" class="active">Broker</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">Virtualization</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          
+          
+
+          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
+        
+
+        
+      </li>
+    
+  </ul>
+</nav>
+    
+  
+  </div>
+
+
+  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
+    <meta itemprop="headline" content="Best Practice For Broker">
+    <meta itemprop="description" content="Some useful tips for users.">
+    <meta itemprop="datePublished" content="December 29, 2016">
+    <meta itemprop="dateModified" content="December 25, 2016">
+
+    <div class="page__inner-wrap">
+      
+        <header>
+          <h1 class="page__title" itemprop="headline">Best Practice For Broker
+</h1>
+          
+        </header>
+      
+
+      <section class="page__content" itemprop="text">
+        <p>Some useful tips for users.</p>
+
+<aside class="sidebar__right">
+<nav class="toc">
+    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
+<ul class="toc__menu" id="markdown-toc">
+  <li><a href="#broker-role" id="markdown-toc-broker-role">Broker Role</a></li>
+  <li><a href="#flushdisktype" id="markdown-toc-flushdisktype">FlushDiskType</a></li>
+  <li><a href="#reentrantlock-vs-cas" id="markdown-toc-reentrantlock-vs-cas">ReentrantLock vs CAS</a></li>
+  <li><a href="#ossh" id="markdown-toc-ossh">os.sh</a></li>
+</ul>
+
+  </nav>
+</aside>
+
+<h2 id="broker-role">Broker Role</h2>
+<p>Broker Role is ASYNC_MASTER, SYNC_MASTER or SLAVE.
+If you cannot tolerate message missing, we suggest you deploy SYNC_MASTER and attach a SLAVE to it.
+If you feel ok about missing, but you want the Broker to be always available, you may deploy ASYNC_MASTER with SLAVE.
+If you just want to make it easy, you may only need a ASYNC_MASTER without SLAVE.</p>
+<h2 id="flushdisktype">FlushDiskType</h2>
+<p>ASYNC_FLUSH is recommended, for SYNC_FLUSH is expensive and will cause too much performance loss. If you want reliability, we recommend you use SYNC_MASTER with SLAVE.</p>
+<h2 id="reentrantlock-vs-cas">ReentrantLock vs CAS</h2>
+<p>to be finished</p>
+<h2 id="ossh">os.sh</h2>
+<p>to be finished</p>
+
+
+        
+      </section>
+
+      <footer class="page__meta">
+        
+        
+
+
+        
+          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
+        
+      </footer>
+
+      <section class="page__share">
+  
+    <h4 class="page__share-title">Share on</h4>
+  
+
+  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For Broker /docs/best-practice-broker/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
+
+  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-broker/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
+
+  <a href="https://plus.google.com/share?url=/docs/best-practice-broker/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
+
+  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-broker/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+</section>
+
+
+      
+  <nav class="pagination">
+    
+      <a href="/docs/faq/" class="pagination--pager" title="Frequently Asked Questions
+">Previous</a>
+    
+    
+      <a href="/docs/best-practice-consumer/" class="pagination--pager" title="Best Practice For Consumer
+">Next</a>
+    
+  </nav>
+
+    </div>
+
+    
+      <div class="page__comments">
+  
+  
+    <h4 class="page__comments-title">Leave a Comment</h4>
+    <section id="disqus_thread"></section>
+  
+</div>
+    
+  </article>
+
+  
+  
+</div>
+
+    <div class="page__footer">
+      <footer>
+        <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+        <div class="page__footer-follow">
+  <ul class="social-icons">
+    
+      <li><strong>Follow:</strong></li>
+    
+    
+      <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
+    
+    
+    
+      <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
+    
+    
+    <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
+  </ul>
+</div>
+
+<div class="page__footer-copyright">Copyright &copy; 2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
+      </footer>
+    </div>
+
+    <script src="/assets/js/main.min.js"></script>
+
+
+
+
+
+  
+  <script type="text/javascript">
+  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
+  	var disqus_shortname = 'rocketmq';
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function() {
+  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+  	})();
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function () {
+  		var s = document.createElement('script'); s.async = true;
+  		s.type = 'text/javascript';
+  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
+  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+  	}());
+  </script>
+  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
+
+
+
+
+
+
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/best-practice-consumer/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-consumer/index.html b/content/docs/best-practice-consumer/index.html
new file mode 100644
index 0000000..24838e2
--- /dev/null
+++ b/content/docs/best-practice-consumer/index.html
@@ -0,0 +1,500 @@
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>Best Practice For Consumer - Apache RocketMQ</title>
+
+
+
+
+<meta name="description" content="Some useful tips for users.">
+
+
+
+
+<meta property="og:locale" content="en">
+<meta property="og:site_name" content="Apache RocketMQ">
+<meta property="og:title" content="Best Practice For Consumer">
+
+
+
+
+  <meta property="og:description" content="Some useful tips for users.">
+
+
+
+  <meta name="twitter:site" content="@ApacheRocketMQ">
+  <meta name="twitter:title" content="Best Practice For Consumer">
+  <meta name="twitter:description" content="Some useful tips for users.">
+  <meta name="twitter:url" content="">
+
+  
+    <meta name="twitter:card" content="summary">
+    
+  
+
+  
+
+
+
+  
+
+  
+
+
+
+
+
+  <meta property="og:type" content="article">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
+
+
+
+
+
+
+
+
+  <script type="application/ld+json">
+    {
+      "@context" : "http://schema.org",
+      "@type" : "Person",
+      "name" : "Apache RocketMQ",
+      "url" : null,
+      "sameAs" : null
+    }
+  </script>
+
+
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
+
+<!-- http://t.co/dKP3o1e -->
+<meta name="HandheldFriendly" content="True">
+<meta name="MobileOptimized" content="320">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<script>
+  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
+</script>
+
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+
+<meta http-equiv="cleartype" content="on">
+    <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+
+<!-- end custom head snippets -->
+  </head>
+
+  <body class="layout--single">
+
+    <!--[if lt IE 9]>
+<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
+<![endif]-->
+    <div class="masthead">
+  <div class="masthead__inner-wrap">
+    <div class="masthead__menu">
+      <nav id="site-nav" class="greedy-nav">
+        <button><div class="navicon"></div></button>
+        <ul class="visible-links">
+          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
+          
+        </ul>
+        <ul class="hidden-links hidden"></ul>
+      </nav>
+    </div>
+  </div>
+</div>
+
+    
+
+
+
+<div id="main" role="main">
+  
+  <div class="sidebar sticky">
+  
+  
+    
+      
+      
+      
+    
+    
+      
+
+<nav class="nav__list">
+  
+  <input id="ac-toc" name="accordion-toc" type="checkbox" />
+  <label for="ac-toc">Toggle Menu</label>
+  <ul class="nav__items">
+    
+      <li>
+        
+          <span class="nav__sub-title">User Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/motivation/" class="">Motivation</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Contributor Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Best Practice</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-consumer/" class="active">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">Virtualization</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          
+          
+
+          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
+        
+
+        
+      </li>
+    
+  </ul>
+</nav>
+    
+  
+  </div>
+
+
+  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
+    <meta itemprop="headline" content="Best Practice For Consumer">
+    <meta itemprop="description" content="Some useful tips for users.">
+    <meta itemprop="datePublished" content="December 29, 2016">
+    <meta itemprop="dateModified" content="December 25, 2016">
+
+    <div class="page__inner-wrap">
+      
+        <header>
+          <h1 class="page__title" itemprop="headline">Best Practice For Consumer
+</h1>
+          
+        </header>
+      
+
+      <section class="page__content" itemprop="text">
+        <p>Some useful tips for users.</p>
+
+<aside class="sidebar__right">
+<nav class="toc">
+    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
+<ul class="toc__menu" id="markdown-toc">
+  <li><a href="#consumer-group-and-subscriptions" id="markdown-toc-consumer-group-and-subscriptions">Consumer Group and Subscriptions</a></li>
+  <li><a href="#messagelistener" id="markdown-toc-messagelistener">MessageListener</a>    <ul>
+      <li><a href="#orderly" id="markdown-toc-orderly">Orderly</a></li>
+      <li><a href="#concurrently" id="markdown-toc-concurrently">Concurrently</a></li>
+      <li><a href="#consume-status" id="markdown-toc-consume-status">Consume Status</a></li>
+      <li><a href="#blocking" id="markdown-toc-blocking">Blocking</a></li>
+    </ul>
+  </li>
+  <li><a href="#thread-number" id="markdown-toc-thread-number">Thread Number</a></li>
+  <li><a href="#consumefromwhere" id="markdown-toc-consumefromwhere">ConsumeFromWhere</a></li>
+  <li><a href="#duplication" id="markdown-toc-duplication">Duplication</a></li>
+</ul>
+
+  </nav>
+</aside>
+<h2 id="consumer-group-and-subscriptions">Consumer Group and Subscriptions</h2>
+<p>The first thing you should be aware of is that different Consumer Group can consume the same topic independently, each of the group will have their own consuming offsets. 
+And make sure each Consumer within the same Group to subscribe the same topics.</p>
+<h2 id="messagelistener">MessageListener</h2>
+<h3 id="orderly">Orderly</h3>
+<p>The Consumer will lock each MessageQueue to make sure it is consumed one by one orderly. This will cause performance loss, but it is useful when you are care about the order of the messages.
+It is not recommended to throw exception, you can return ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT instead.</p>
+<h3 id="concurrently">Concurrently</h3>
+<p>As the name tells, the Consumer will consume the messages concurrently. It is recommended to use this for achieving good performance.
+It is not recommended to throw exception, you can return ConsumeConcurrentlyStatus.RECONSUME_LATER instead.</p>
+<h3 id="consume-status">Consume Status</h3>
+<p>For MessageListenerConcurrently, you can return RECONSUME_LATER to tell the consumer that you can not consume it right now and want to reconsume it later. Then you can continue to consume other messages. 
+For MessageListenerOrderly, as that you care about the order, so you can not jump over the message, but you can return SUSPEND_CURRENT_QUEUE_A_MOMENT to tell the consumer to hold on for a moment.</p>
+<h3 id="blocking">Blocking</h3>
+<p>It is not recommend to block the Listener, for in return it will block the thread pool, and finally the consuming process may get stuck.</p>
+<h2 id="thread-number">Thread Number</h2>
+<p>The consumer use a ThreadPoolExecutor to process consuming internally. So you can tune it by using setConsumeThreadMin or setConsumeThreadMax.</p>
+<h2 id="consumefromwhere">ConsumeFromWhere</h2>
+<p>When a new Consumer Group is established, it will need to decide whether it need to consume the historical messages which had already existed in the Broker. 
+CONSUME_FROM_LAST_OFFSET will ignore the historical messages, and consume any newly produced.
+CONSUME_FROM_FIRST_OFFSET will consume every message existed in the Broker.
+You can also use CONSUME_FROM_TIMESTAMP to consume messages produced after the specified timestamp.</p>
+<h2 id="duplication">Duplication</h2>
+<p>Many circumstances could cause duplication, such as:</p>
+<ul>
+  <li>Producer resend messages(i.e, in case of FLUSH_SLAVE_TIMEOUT)</li>
+  <li>Consumer shutdown with some offsets not updated to the Broker in time.</li>
+</ul>
+
+<p>So you may need to do some external work to handle this if your application cannot tolerate. For example, you may check the primary key of your DB.</p>
+
+
+        
+      </section>
+
+      <footer class="page__meta">
+        
+        
+
+
+        
+          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
+        
+      </footer>
+
+      <section class="page__share">
+  
+    <h4 class="page__share-title">Share on</h4>
+  
+
+  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For Consumer /docs/best-practice-consumer/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
+
+  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-consumer/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
+
+  <a href="https://plus.google.com/share?url=/docs/best-practice-consumer/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
+
+  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-consumer/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+</section>
+
+
+      
+  <nav class="pagination">
+    
+      <a href="/docs/best-practice-broker/" class="pagination--pager" title="Best Practice For Broker
+">Previous</a>
+    
+    
+      <a href="/docs/best-practice-namesvr/" class="pagination--pager" title="Best Practice For NameServer
+">Next</a>
+    
+  </nav>
+
+    </div>
+
+    
+      <div class="page__comments">
+  
+  
+    <h4 class="page__comments-title">Leave a Comment</h4>
+    <section id="disqus_thread"></section>
+  
+</div>
+    
+  </article>
+
+  
+  
+</div>
+
+    <div class="page__footer">
+      <footer>
+        <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+        <div class="page__footer-follow">
+  <ul class="social-icons">
+    
+      <li><strong>Follow:</strong></li>
+    
+    
+      <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
+    
+    
+    
+      <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
+    
+    
+    <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
+  </ul>
+</div>
+
+<div class="page__footer-copyright">Copyright &copy; 2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
+      </footer>
+    </div>
+
+    <script src="/assets/js/main.min.js"></script>
+
+
+
+
+
+  
+  <script type="text/javascript">
+  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
+  	var disqus_shortname = 'rocketmq';
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function() {
+  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+  	})();
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function () {
+  		var s = document.createElement('script'); s.async = true;
+  		s.type = 'text/javascript';
+  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
+  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+  	}());
+  </script>
+  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
+
+
+
+
+
+
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/best-practice-namesvr/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-namesvr/index.html b/content/docs/best-practice-namesvr/index.html
new file mode 100644
index 0000000..75f005d
--- /dev/null
+++ b/content/docs/best-practice-namesvr/index.html
@@ -0,0 +1,463 @@
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>Best Practice For NameServer - Apache RocketMQ</title>
+
+
+
+
+<meta name="description" content="Some useful tips for users.">
+
+
+
+
+<meta property="og:locale" content="en">
+<meta property="og:site_name" content="Apache RocketMQ">
+<meta property="og:title" content="Best Practice For NameServer">
+
+
+
+
+  <meta property="og:description" content="Some useful tips for users.">
+
+
+
+  <meta name="twitter:site" content="@ApacheRocketMQ">
+  <meta name="twitter:title" content="Best Practice For NameServer">
+  <meta name="twitter:description" content="Some useful tips for users.">
+  <meta name="twitter:url" content="">
+
+  
+    <meta name="twitter:card" content="summary">
+    
+  
+
+  
+
+
+
+  
+
+  
+
+
+
+
+
+  <meta property="og:type" content="article">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
+
+
+
+
+
+
+
+
+  <script type="application/ld+json">
+    {
+      "@context" : "http://schema.org",
+      "@type" : "Person",
+      "name" : "Apache RocketMQ",
+      "url" : null,
+      "sameAs" : null
+    }
+  </script>
+
+
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
+
+<!-- http://t.co/dKP3o1e -->
+<meta name="HandheldFriendly" content="True">
+<meta name="MobileOptimized" content="320">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<script>
+  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
+</script>
+
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+
+<meta http-equiv="cleartype" content="on">
+    <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+
+<!-- end custom head snippets -->
+  </head>
+
+  <body class="layout--single">
+
+    <!--[if lt IE 9]>
+<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
+<![endif]-->
+    <div class="masthead">
+  <div class="masthead__inner-wrap">
+    <div class="masthead__menu">
+      <nav id="site-nav" class="greedy-nav">
+        <button><div class="navicon"></div></button>
+        <ul class="visible-links">
+          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
+          
+        </ul>
+        <ul class="hidden-links hidden"></ul>
+      </nav>
+    </div>
+  </div>
+</div>
+
+    
+
+
+
+<div id="main" role="main">
+  
+  <div class="sidebar sticky">
+  
+  
+    
+      
+      
+      
+    
+    
+      
+
+<nav class="nav__list">
+  
+  <input id="ac-toc" name="accordion-toc" type="checkbox" />
+  <label for="ac-toc">Toggle Menu</label>
+  <ul class="nav__items">
+    
+      <li>
+        
+          <span class="nav__sub-title">User Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/motivation/" class="">Motivation</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Contributor Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Best Practice</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="active">NameServer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">Virtualization</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          
+          
+
+          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
+        
+
+        
+      </li>
+    
+  </ul>
+</nav>
+    
+  
+  </div>
+
+
+  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
+    <meta itemprop="headline" content="Best Practice For NameServer">
+    <meta itemprop="description" content="Some useful tips for users.">
+    <meta itemprop="datePublished" content="December 29, 2016">
+    <meta itemprop="dateModified" content="December 25, 2016">
+
+    <div class="page__inner-wrap">
+      
+        <header>
+          <h1 class="page__title" itemprop="headline">Best Practice For NameServer
+</h1>
+          
+        </header>
+      
+
+      <section class="page__content" itemprop="text">
+        <p>Some useful tips for users.</p>
+
+<aside class="sidebar__right">
+<nav class="toc">
+    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
+<ul class="toc__menu" id="markdown-toc">
+  <li><a href="#ordered-message" id="markdown-toc-ordered-message">Ordered Message</a></li>
+</ul>
+
+  </nav>
+</aside>
+
+<h2 id="ordered-message">Ordered Message</h2>
+<p>to be finished</p>
+
+
+        
+      </section>
+
+      <footer class="page__meta">
+        
+        
+
+
+        
+          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
+        
+      </footer>
+
+      <section class="page__share">
+  
+    <h4 class="page__share-title">Share on</h4>
+  
+
+  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For NameServer /docs/best-practice-namesvr/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
+
+  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-namesvr/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
+
+  <a href="https://plus.google.com/share?url=/docs/best-practice-namesvr/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
+
+  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-namesvr/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+</section>
+
+
+      
+  <nav class="pagination">
+    
+      <a href="/docs/best-practice-consumer/" class="pagination--pager" title="Best Practice For Consumer
+">Previous</a>
+    
+    
+      <a href="/docs/best-practice-producer/" class="pagination--pager" title="Best Practice For Producer
+">Next</a>
+    
+  </nav>
+
+    </div>
+
+    
+      <div class="page__comments">
+  
+  
+    <h4 class="page__comments-title">Leave a Comment</h4>
+    <section id="disqus_thread"></section>
+  
+</div>
+    
+  </article>
+
+  
+  
+</div>
+
+    <div class="page__footer">
+      <footer>
+        <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+        <div class="page__footer-follow">
+  <ul class="social-icons">
+    
+      <li><strong>Follow:</strong></li>
+    
+    
+      <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
+    
+    
+    
+      <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
+    
+    
+    <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
+  </ul>
+</div>
+
+<div class="page__footer-copyright">Copyright &copy; 2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
+      </footer>
+    </div>
+
+    <script src="/assets/js/main.min.js"></script>
+
+
+
+
+
+  
+  <script type="text/javascript">
+  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
+  	var disqus_shortname = 'rocketmq';
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function() {
+  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+  	})();
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function () {
+  		var s = document.createElement('script'); s.async = true;
+  		s.type = 'text/javascript';
+  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
+  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+  	}());
+  </script>
+  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
+
+
+
+
+
+
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/best-practice-producer/index.html
----------------------------------------------------------------------
diff --git a/content/docs/best-practice-producer/index.html b/content/docs/best-practice-producer/index.html
new file mode 100644
index 0000000..150f29e
--- /dev/null
+++ b/content/docs/best-practice-producer/index.html
@@ -0,0 +1,507 @@
+<!doctype html>
+<html lang="en" class="no-js">
+  <head>
+    <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>Best Practice For Producer - Apache RocketMQ</title>
+
+
+
+
+<meta name="description" content="Some useful tips for users.">
+
+
+
+
+<meta property="og:locale" content="en">
+<meta property="og:site_name" content="Apache RocketMQ">
+<meta property="og:title" content="Best Practice For Producer">
+
+
+
+
+  <meta property="og:description" content="Some useful tips for users.">
+
+
+
+  <meta name="twitter:site" content="@ApacheRocketMQ">
+  <meta name="twitter:title" content="Best Practice For Producer">
+  <meta name="twitter:description" content="Some useful tips for users.">
+  <meta name="twitter:url" content="">
+
+  
+    <meta name="twitter:card" content="summary">
+    
+  
+
+  
+
+
+
+  
+
+  
+
+
+
+
+
+  <meta property="og:type" content="article">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
+
+
+
+
+
+
+
+
+  <script type="application/ld+json">
+    {
+      "@context" : "http://schema.org",
+      "@type" : "Person",
+      "name" : "Apache RocketMQ",
+      "url" : null,
+      "sameAs" : null
+    }
+  </script>
+
+
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache RocketMQ Feed">
+
+<!-- http://t.co/dKP3o1e -->
+<meta name="HandheldFriendly" content="True">
+<meta name="MobileOptimized" content="320">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+<script>
+  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
+</script>
+
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+
+<meta http-equiv="cleartype" content="on">
+    <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+
+<!-- end custom head snippets -->
+  </head>
+
+  <body class="layout--single">
+
+    <!--[if lt IE 9]>
+<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
+<![endif]-->
+    <div class="masthead">
+  <div class="masthead__inner-wrap">
+    <div class="masthead__menu">
+      <nav id="site-nav" class="greedy-nav">
+        <button><div class="navicon"></div></button>
+        <ul class="visible-links">
+          <li class="masthead__menu-item masthead__menu-item--lg"><a href="/">Apache RocketMQ</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/docs/quick-start/">Documentation</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/year-archive/">Blog</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/community/">Community</a></li>
+          
+            
+            <li class="masthead__menu-item"><a href="/about/team/">About</a></li>
+          
+        </ul>
+        <ul class="hidden-links hidden"></ul>
+      </nav>
+    </div>
+  </div>
+</div>
+
+    
+
+
+
+<div id="main" role="main">
+  
+  <div class="sidebar sticky">
+  
+  
+    
+      
+      
+      
+    
+    
+      
+
+<nav class="nav__list">
+  
+  <input id="ac-toc" name="accordion-toc" type="checkbox" />
+  <label for="ac-toc">Toggle Menu</label>
+  <ul class="nav__items">
+    
+      <li>
+        
+          <span class="nav__sub-title">User Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/quick-start/" class="">Quick Start</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/motivation/" class="">Motivation</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/core-concept/" class="">Core Concept</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">CLI Admin Tool</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cluster-deployment/" class="">Cluster Configuration & Deployment</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Contributor Guide</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/code-guidelines/" class="">Code Guidelines</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/pull-request/" class="">Best Practice in PR</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          <span class="nav__sub-title">Best Practice</span>
+        
+
+        
+        <ul>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-producer/" class="active">Producer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/cli-admin-tool/" class="">Virtualization</a></li>
+          
+        </ul>
+        
+      </li>
+    
+      <li>
+        
+          
+          
+
+          <a href="/docs/faq/"><span class="nav__sub-title">FAQ</span></a>
+        
+
+        
+      </li>
+    
+  </ul>
+</nav>
+    
+  
+  </div>
+
+
+  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
+    <meta itemprop="headline" content="Best Practice For Producer">
+    <meta itemprop="description" content="Some useful tips for users.">
+    <meta itemprop="datePublished" content="December 29, 2016">
+    <meta itemprop="dateModified" content="December 25, 2016">
+
+    <div class="page__inner-wrap">
+      
+        <header>
+          <h1 class="page__title" itemprop="headline">Best Practice For Producer
+</h1>
+          
+        </header>
+      
+
+      <section class="page__content" itemprop="text">
+        <p>Some useful tips for users.</p>
+
+<aside class="sidebar__right">
+<nav class="toc">
+    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
+<ul class="toc__menu" id="markdown-toc">
+  <li><a href="#sendstatus" id="markdown-toc-sendstatus">SendStatus</a>    <ul>
+      <li><a href="#flush_disk_timeout" id="markdown-toc-flush_disk_timeout">FLUSH_DISK_TIMEOUT</a></li>
+      <li><a href="#flush_slave_timeout" id="markdown-toc-flush_slave_timeout">FLUSH_SLAVE_TIMEOUT</a></li>
+      <li><a href="#slave_not_available" id="markdown-toc-slave_not_available">SLAVE_NOT_AVAILABLE</a></li>
+      <li><a href="#send_ok" id="markdown-toc-send_ok">SEND_OK</a></li>
+      <li><a href="#duplication-or-missing" id="markdown-toc-duplication-or-missing">Duplication or Missing</a></li>
+    </ul>
+  </li>
+  <li><a href="#timeout" id="markdown-toc-timeout">Timeout</a></li>
+  <li><a href="#message-size" id="markdown-toc-message-size">Message Size</a></li>
+  <li><a href="#async-sending" id="markdown-toc-async-sending">Async Sending</a></li>
+  <li><a href="#producer-group" id="markdown-toc-producer-group">Producer Group</a></li>
+  <li><a href="#thread-safety" id="markdown-toc-thread-safety">Thread Safety</a></li>
+  <li><a href="#performance" id="markdown-toc-performance">Performance</a></li>
+</ul>
+
+  </nav>
+</aside>
+
+<h2 id="sendstatus">SendStatus</h2>
+<p>When sending a message, you will get SendResult and it will contain the SendStatus. Firstly, we assume that Message\u2019s isWaitStoreMsgOK=true(default is true). If not, we will always get SEND_OK if no exception is thrown.
+Follow are the descriptions about each status.</p>
+<h3 id="flush_disk_timeout">FLUSH_DISK_TIMEOUT</h3>
+<p>If the Broker set MessageStoreConfig\u2019s FlushDiskType=SYNC_FLUSH(default is ASYNC_FLUSH), and the Broker dose not finish flushing disk within MessageStoreConfig\u2019s syncFlushTimeout(default is 5 secs), you will get such status.</p>
+<h3 id="flush_slave_timeout">FLUSH_SLAVE_TIMEOUT</h3>
+<p>If the Broker\u2019s role is SYNC_MASTER(default is ASYNC_MASTER), and the slave Broker dose not finish synchronizing with the master within the MessageStoreConfig\u2019s syncFlushTimeout(default is 5 secs), you will get such status.</p>
+<h3 id="slave_not_available">SLAVE_NOT_AVAILABLE</h3>
+<p>If the Broker\u2019s role is SYNC_MASTER(default is ASYNC_MASTER), but no slave Broker is configured, you will get such status.</p>
+<h3 id="send_ok">SEND_OK</h3>
+<p>You should be aware that SEND_OK does not mean it is reliable. If you cannot tolerate message missing, you should also enable SYNC_MASTER or SYNC_FLUSH.</p>
+<h3 id="duplication-or-missing">Duplication or Missing</h3>
+<p>If you get FLUSH_DISK_TIMEOUT, FLUSH_SLAVE_TIMEOUT or SLAVE_NOT_AVAILABLE, and the Broker happens to shutdown right the moment, you may get your message missing.
+At this time, you have two choices, one is letting it go, which may get message missing; another is resending, which may get message duplication.
+Often we suggest resend and make a way to handle the duplication removal when consuming. Unless you feel it does not matter when some messages are missed.</p>
+<h2 id="timeout">Timeout</h2>
+<p>The Client send requests to Broker, and wait the responses, but if the max wait time is elapsed and no response is return, the Client will throw a RemotingTimeoutException.
+The default wait time is 3 seconds.You can also pass timeout argument using send(msg, timeout) instead of send(msg).
+Note that we do not suggest the value to be too small, for the Broker need some time to flush disk or synchronize with slave. Also the value may have little effect if it is too bigger than syncFlushTimeout for Broker may return a response with FLUSH_SLAVE_TIMEOUT or FLUSH_SLAVE_TIMEOUT before the timeout.</p>
+<h2 id="message-size">Message Size</h2>
+<p>We suggest the message should be no more than 512K.</p>
+<h2 id="async-sending">Async Sending</h2>
+<p>Default send(msg) will block until the response is return. So if you care about performance, we suggest you use send(msg, callback) which will act in a async way.</p>
+<h2 id="producer-group">Producer Group</h2>
+<p>Normally, the producer group has no effects. But if you use transaction, you should take care of it. 
+In default, you can only create only one producer with the same producer group in the same JVM. Usually, this is enough.</p>
+<h2 id="thread-safety">Thread Safety</h2>
+<p>The producer is thread-safe, you can just use it in your business logic.</p>
+<h2 id="performance">Performance</h2>
+<p>If you want more than one producer in one JVM, maybe for big data processing, we suggest you:</p>
+<ul>
+  <li>use async sending with a few producers(3~5 is enough)</li>
+  <li>setInstanceName for each producer</li>
+</ul>
+
+
+        
+      </section>
+
+      <footer class="page__meta">
+        
+        
+
+
+        
+          <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2016-12-25">December 25, 2016</time></p>
+        
+      </footer>
+
+      <section class="page__share">
+  
+    <h4 class="page__share-title">Share on</h4>
+  
+
+  <a href="https://twitter.com/intent/tweet?via=ApacheRocketMQ&text=Best Practice For Producer /docs/best-practice-producer/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
+
+  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/best-practice-producer/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
+
+  <a href="https://plus.google.com/share?url=/docs/best-practice-producer/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
+
+  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/best-practice-producer/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+</section>
+
+
+      
+  <nav class="pagination">
+    
+      <a href="/docs/best-practice-namesvr/" class="pagination--pager" title="Best Practice For NameServer
+">Previous</a>
+    
+    
+      <a href="#" class="pagination--pager disabled">Next</a>
+    
+  </nav>
+
+    </div>
+
+    
+      <div class="page__comments">
+  
+  
+    <h4 class="page__comments-title">Leave a Comment</h4>
+    <section id="disqus_thread"></section>
+  
+</div>
+    
+  </article>
+
+  
+  
+</div>
+
+    <div class="page__footer">
+      <footer>
+        <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+        <div class="page__footer-follow">
+  <ul class="social-icons">
+    
+      <li><strong>Follow:</strong></li>
+    
+    
+      <li><a href="https://twitter.com/ApacheRocketMQ"><i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter</a></li>
+    
+    
+    
+      <li><a href="http://github.com/apache/incubator-rocketmq"><i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub</a></li>
+    
+    
+    <li><a href="/feed.xml"><i class="fa fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
+  </ul>
+</div>
+
+<div class="page__footer-copyright">Copyright &copy; 2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.</div>
+      </footer>
+    </div>
+
+    <script src="/assets/js/main.min.js"></script>
+
+
+
+
+
+  
+  <script type="text/javascript">
+  	/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
+  	var disqus_shortname = 'rocketmq';
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function() {
+  		var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+  		dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+  		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+  	})();
+
+  	/* * * DON'T EDIT BELOW THIS LINE * * */
+  	(function () {
+  		var s = document.createElement('script'); s.async = true;
+  		s.type = 'text/javascript';
+  		s.src = '//' + disqus_shortname + '.disqus.com/count.js';
+  		(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+  	}());
+  </script>
+  <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
+
+
+
+
+
+
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/cli-admin-tool/index.html
----------------------------------------------------------------------
diff --git a/content/docs/cli-admin-tool/index.html b/content/docs/cli-admin-tool/index.html
index 0758ee9..ab1a8fd 100644
--- a/content/docs/cli-admin-tool/index.html
+++ b/content/docs/cli-admin-tool/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2016-12-29T17:32:31+08:00">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
 
 
 
@@ -255,7 +255,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Broker</a></li>
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
           
             
             
@@ -263,7 +263,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Producer</a></li>
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
           
             
             
@@ -271,7 +271,15 @@
             
             
 
-            <li><a href="/docs/core-concept/" class="">Consumer</a></li>
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
           
             
             

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/cluster-deployment/index.html
----------------------------------------------------------------------
diff --git a/content/docs/cluster-deployment/index.html b/content/docs/cluster-deployment/index.html
index e196a95..a9cbb83 100644
--- a/content/docs/cluster-deployment/index.html
+++ b/content/docs/cluster-deployment/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2016-12-29T17:32:31+08:00">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
 
 
 
@@ -255,7 +255,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Broker</a></li>
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
           
             
             
@@ -263,7 +263,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Producer</a></li>
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
           
             
             
@@ -271,7 +271,15 @@
             
             
 
-            <li><a href="/docs/core-concept/" class="">Consumer</a></li>
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
           
             
             

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/code-guidelines/index.html
----------------------------------------------------------------------
diff --git a/content/docs/code-guidelines/index.html b/content/docs/code-guidelines/index.html
index 30449e6..e5b7fc3 100644
--- a/content/docs/code-guidelines/index.html
+++ b/content/docs/code-guidelines/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2016-12-29T17:32:31+08:00">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
 
 
 
@@ -255,7 +255,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Broker</a></li>
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
           
             
             
@@ -263,7 +263,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Producer</a></li>
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
           
             
             
@@ -271,7 +271,15 @@
             
             
 
-            <li><a href="/docs/core-concept/" class="">Consumer</a></li>
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
           
             
             

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/core-concept/index.html
----------------------------------------------------------------------
diff --git a/content/docs/core-concept/index.html b/content/docs/core-concept/index.html
index 1b9ec75..d9fa606 100644
--- a/content/docs/core-concept/index.html
+++ b/content/docs/core-concept/index.html
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2016-12-29T17:32:31+08:00">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
 
 
 
@@ -255,7 +255,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Broker</a></li>
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
           
             
             
@@ -263,7 +263,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Producer</a></li>
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
           
             
             
@@ -271,7 +271,15 @@
             
             
 
-            <li><a href="/docs/core-concept/" class="active">Consumer</a></li>
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
           
             
             

http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-site/blob/9b429fbd/content/docs/faq/index.html
----------------------------------------------------------------------
diff --git a/content/docs/faq/index.html b/content/docs/faq/index.html
index 7636161..44a503f 100644
--- a/content/docs/faq/index.html
+++ b/content/docs/faq/index.html
@@ -18,7 +18,7 @@
 
 
 
-<meta name="description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.">
+<meta name="description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
 
 
 
@@ -30,13 +30,13 @@
 
 
 
-  <meta property="og:description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.">
+  <meta property="og:description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
 
 
 
   <meta name="twitter:site" content="@ApacheRocketMQ">
   <meta name="twitter:title" content="Frequently Asked Questions">
-  <meta name="twitter:description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.">
+  <meta name="twitter:description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
   <meta name="twitter:url" content="">
 
   
@@ -57,7 +57,7 @@
 
 
   <meta property="og:type" content="article">
-  <meta property="article:published_time" content="2016-12-29T17:32:31+08:00">
+  <meta property="article:published_time" content="2016-12-29T17:47:05+08:00">
 
 
 
@@ -255,7 +255,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Broker</a></li>
+            <li><a href="/docs/best-practice-broker/" class="">Broker</a></li>
           
             
             
@@ -263,7 +263,7 @@
             
             
 
-            <li><a href="/docs/motivation/" class="">Producer</a></li>
+            <li><a href="/docs/best-practice-producer/" class="">Producer</a></li>
           
             
             
@@ -271,7 +271,15 @@
             
             
 
-            <li><a href="/docs/core-concept/" class="">Consumer</a></li>
+            <li><a href="/docs/best-practice-consumer/" class="">Consumer</a></li>
+          
+            
+            
+
+            
+            
+
+            <li><a href="/docs/best-practice-namesvr/" class="">NameServer</a></li>
           
             
             
@@ -305,7 +313,7 @@
 
   <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
     <meta itemprop="headline" content="Frequently Asked Questions">
-    <meta itemprop="description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.">
+    <meta itemprop="description" content="The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.General1. Why create rocketmq project instead of selecting other products?In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.">
     <meta itemprop="datePublished" content="December 29, 2016">
     <meta itemprop="dateModified" content="December 28, 2016">
 
@@ -321,46 +329,6 @@
       <section class="page__content" itemprop="text">
         <p>The following questions are frequently asked with regard to the RocketMQ project in general. If you have further questions, make sure to consult the documentation or ask the community.</p>
 
-<aside class="sidebar__right">
-<nav class="toc">
-    <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header>
-<ul class="toc__menu" id="markdown-toc">
-  <li><a href="#general" id="markdown-toc-general">General</a>    <ul>
-      <li><a href="#1-why-create-rocketmq-project-instead-of-selecting-other-products" id="markdown-toc-1-why-create-rocketmq-project-instead-of-selecting-other-products">1. Why create rocketmq project instead of selecting other products?</a></li>
-      <li><a href="#2-do-i-have-to-install-other-softewares-such-as-zookeeper-to-use-rocketmq" id="markdown-toc-2-do-i-have-to-install-other-softewares-such-as-zookeeper-to-use-rocketmq">2. Do I have to install other softewares, such as zookeeper, to use RocketMQ?</a></li>
-    </ul>
-  </li>
-  <li><a href="#usage" id="markdown-toc-usage">Usage</a>    <ul>
-      <li><a href="#1-where-does-the-newly-created-consumer-id-start-consuming-messages" id="markdown-toc-1-where-does-the-newly-created-consumer-id-start-consuming-messages">1. Where does the newly created Consumer ID start consuming messages?</a></li>
-      <li><a href="#2-how-to-reconsume-message-when-consumption-fails" id="markdown-toc-2-how-to-reconsume-message-when-consumption-fails">2. How to reconsume message when consumption fails?</a></li>
-      <li><a href="#3-how-to-deal-with-consume-message-failed" id="markdown-toc-3-how-to-deal-with-consume-message-failed">3. How to deal with consume message failed?</a></li>
-      <li><a href="#4-delivery-exactly-once" id="markdown-toc-4-delivery-exactly-once">4. Delivery exactly once?</a></li>
-      <li><a href="#5-how-to-add-a-new-broker" id="markdown-toc-5-how-to-add-a-new-broker">5. How to add a new broker?</a></li>
-    </ul>
-  </li>
-  <li><a href="#configuration-related" id="markdown-toc-configuration-related">Configuration related</a>    <ul>
-      <li><a href="#1-how-long-the-message-is-saved-on-the-server" id="markdown-toc-1-how-long-the-message-is-saved-on-the-server">1. How long the message is saved on the server?</a></li>
-      <li><a href="#2-what-is-the-length-limit-for-message-body" id="markdown-toc-2-what-is-the-length-limit-for-message-body">2. What is the length limit for message Body?</a></li>
-      <li><a href="#3-how-to-set-the-number-of-consumer-threads" id="markdown-toc-3-how-to-set-the-number-of-consumer-threads">3. How to set the number of consumer threads?</a></li>
-    </ul>
-  </li>
-  <li><a href="#errors" id="markdown-toc-errors">Errors</a>    <ul>
-      <li><a href="#1-start-producer-or-consumer-failed-and-producer-group-or-consumer-repeat" id="markdown-toc-1-start-producer-or-consumer-failed-and-producer-group-or-consumer-repeat">1. Start producer or consumer failed and producer group or consumer repeat?</a></li>
-      <li><a href="#2-in-broadcast-mode-consumer-start-loading-json-file-failed" id="markdown-toc-2-in-broadcast-mode-consumer-start-loading-json-file-failed">2. In broadcast mode, consumer start loading json file failed?</a></li>
-      <li><a href="#3-what-if-a-broker-crashes" id="markdown-toc-3-what-if-a-broker-crashes">3. What if a broker crashes?</a></li>
-      <li><a href="#4-producer-complains-no-topic-route-info-how-to-diagnose" id="markdown-toc-4-producer-complains-no-topic-route-info-how-to-diagnose">4. Producer complains \u201cNo Topic Route Info\u201d, how to diagnose?</a></li>
-    </ul>
-  </li>
-  <li><a href="#features" id="markdown-toc-features">Features</a>    <ul>
-      <li><a href="#1-what-kind-of-consumption-pattern-does-rocketmq-provide" id="markdown-toc-1-what-kind-of-consumption-pattern-does-rocketmq-provide">1. What kind of consumption pattern does RocketMQ provide?</a></li>
-      <li><a href="#2-how-many-kinds-of-message-type-are-supported" id="markdown-toc-2-how-many-kinds-of-message-type-are-supported">2. How many kinds of message type are supported?</a></li>
-    </ul>
-  </li>
-</ul>
-
-  </nav>
-</aside>
-
 <h2 id="general">General</h2>
 <h3 id="1-why-create-rocketmq-project-instead-of-selecting-other-products">1. Why create rocketmq project instead of selecting other products?</h3>
 <p>In some cases, slower consumers can slow down the producers. We tried our best efforts to handle this problems through throttling, circuit breaker or degradation, but it cannot scale out gracefully. So we begin to focus on the popular messaging solution Kafka at that time. Unfortunately, Kafka can not meet our requirements such as low latency and high reliability. So we decided to innovate a new messaging middleware to handle a broad set of use cases, ranging from traditional publish/subscribe scenario to demandingly high volume realtime transaction system that tolerates no message loss.</p>
@@ -496,7 +464,8 @@ The broadcaset consumption still ensures that a message is consumered at least o
 ">Previous</a>
     
     
-      <a href="#" class="pagination--pager disabled">Next</a>
+      <a href="/docs/best-practice-broker/" class="pagination--pager" title="Best Practice For Broker
+">Next</a>
     
   </nav>