You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/11/02 10:17:39 UTC
[incubator-servicecomb-website] 02/02: Publish the website
This is an automated email from the ASF dual-hosted git repository.
ningjiang pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-website.git
commit 1beae1f594b12e969a08113e0773ce1b7d745083
Author: Willem Jiang <ji...@huawei.com>
AuthorDate: Fri Nov 2 18:17:19 2018 +0800
Publish the website
---
content/assets/images/OSI/OSI-Tracks.png | Bin 165029 -> 0 bytes
content/assets/images/OSI/Patners.png | Bin 116394 -> 0 bytes
content/assets/images/OSI/Speakers.jpg | Bin 2886295 -> 0 bytes
content/assets/images/hybrid-arch.jpg | Bin 0 -> 22772 bytes
content/assets/images/hybrid-consumer-result.png | Bin 0 -> 13916 bytes
content/assets/images/hybrid-mesher-process.jpg | Bin 0 -> 17217 bytes
.../assets/images/hybrid-servicecenter-result.png | Bin 0 -> 49970 bytes
content/assets/images/hybrid-sidecar-injector.jpg | Bin 0 -> 19811 bytes
content/assets/images/jmeter-collector.png | Bin 0 -> 55774 bytes
content/assets/images/spring-demo.jpg | Bin 0 -> 25204 bytes
.../index.html | 6 +-
content/cn/docs/crm-part-I/index.html | 2 +-
...dex.html => loadtest-saga-with-kubernetes.html} | 249 ++++++++++++---------
content/cn/docs/osi-microservices/index.html | 131 +++++------
content/cn/year-archive/index.html | 237 ++++++++++++++++++++
.../index.html | 8 +-
content/docs/osi-microservices/index.html | 6 +-
content/feed.xml | 190 +++++++++++-----
content/sitemap.xml | 4 +
content/sitemap/index.html | 4 +-
content/year-archive/index.html | 101 ---------
21 files changed, 601 insertions(+), 337 deletions(-)
diff --git a/content/assets/images/OSI/OSI-Tracks.png b/content/assets/images/OSI/OSI-Tracks.png
deleted file mode 100644
index db6eefc..0000000
Binary files a/content/assets/images/OSI/OSI-Tracks.png and /dev/null differ
diff --git a/content/assets/images/OSI/Patners.png b/content/assets/images/OSI/Patners.png
deleted file mode 100644
index d931c65..0000000
Binary files a/content/assets/images/OSI/Patners.png and /dev/null differ
diff --git a/content/assets/images/OSI/Speakers.jpg b/content/assets/images/OSI/Speakers.jpg
deleted file mode 100644
index 9e328a7..0000000
Binary files a/content/assets/images/OSI/Speakers.jpg and /dev/null differ
diff --git a/content/assets/images/hybrid-arch.jpg b/content/assets/images/hybrid-arch.jpg
new file mode 100644
index 0000000..95df0ae
Binary files /dev/null and b/content/assets/images/hybrid-arch.jpg differ
diff --git a/content/assets/images/hybrid-consumer-result.png b/content/assets/images/hybrid-consumer-result.png
new file mode 100644
index 0000000..085f7ca
Binary files /dev/null and b/content/assets/images/hybrid-consumer-result.png differ
diff --git a/content/assets/images/hybrid-mesher-process.jpg b/content/assets/images/hybrid-mesher-process.jpg
new file mode 100644
index 0000000..977b45c
Binary files /dev/null and b/content/assets/images/hybrid-mesher-process.jpg differ
diff --git a/content/assets/images/hybrid-servicecenter-result.png b/content/assets/images/hybrid-servicecenter-result.png
new file mode 100644
index 0000000..d020b9e
Binary files /dev/null and b/content/assets/images/hybrid-servicecenter-result.png differ
diff --git a/content/assets/images/hybrid-sidecar-injector.jpg b/content/assets/images/hybrid-sidecar-injector.jpg
new file mode 100644
index 0000000..fb41c63
Binary files /dev/null and b/content/assets/images/hybrid-sidecar-injector.jpg differ
diff --git a/content/assets/images/jmeter-collector.png b/content/assets/images/jmeter-collector.png
new file mode 100644
index 0000000..1b1f7e0
Binary files /dev/null and b/content/assets/images/jmeter-collector.png differ
diff --git a/content/assets/images/spring-demo.jpg b/content/assets/images/spring-demo.jpg
new file mode 100644
index 0000000..e590530
Binary files /dev/null and b/content/assets/images/spring-demo.jpg differ
diff --git a/content/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html b/content/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
index deb6690..7eda5a6 100644
--- a/content/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
+++ b/content/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
@@ -701,11 +701,11 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/crm-part-I/" rel="permalink">客户管理系统微服务化实战-PartI
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
</a>
</h2>
- <p class="archive__item-excerpt" itemprop="description">客户管理系统微服务化实战-PartI
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
@@ -713,7 +713,7 @@
- 5 分钟 阅读
+ 1 分钟 阅读
</p>
diff --git a/content/cn/docs/crm-part-I/index.html b/content/cn/docs/crm-part-I/index.html
index 5bf8a6a..1af5fd6 100644
--- a/content/cn/docs/crm-part-I/index.html
+++ b/content/cn/docs/crm-part-I/index.html
@@ -1253,7 +1253,7 @@
">向前</a>
- <a href="/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" class="pagination--pager" title="Apache ServiceComb (incubating) Meetup -Shanghai 2018.10.12
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" class="pagination--pager" title="使用Kubernetes对Saga进行压力测试
">向后</a>
</nav>
diff --git a/content/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html b/content/cn/docs/loadtest-saga-with-kubernetes.html
similarity index 56%
copy from content/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
copy to content/cn/docs/loadtest-saga-with-kubernetes.html
index deb6690..78bea6e 100644
--- a/content/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
+++ b/content/cn/docs/loadtest-saga-with-kubernetes.html
@@ -19,35 +19,35 @@
-<title>Apache ServiceComb (incubating) Meetup -上海 2018.10.12 - Apache ServiceComb</title>
+<title>使用Kubernetes对Saga进行压力测试 - Apache ServiceComb</title>
-<meta name="description" content="Apache ServiceComb (incubating) Meetup">
+<meta name="description" content="如何使用Kubernetes方便的对Saga进行性能测试">
-<meta name="author" content="Dean Lee">
+<meta name="author" content="Zhen Ju">
<meta property="og:locale" content="cn">
<meta property="og:site_name" content="Apache ServiceComb">
-<meta property="og:title" content="Apache ServiceComb (incubating) Meetup -上海 2018.10.12">
+<meta property="og:title" content="使用Kubernetes对Saga进行压力测试">
- <link rel="canonical" href="http://github.com/pages/apache/incubator-servicecomb-website/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/">
- <meta property="og:url" content="http://github.com/pages/apache/incubator-servicecomb-website/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/">
+ <link rel="canonical" href="http://github.com/pages/apache/incubator-servicecomb-website/cn/docs/loadtest-saga-with-kubernetes">
+ <meta property="og:url" content="http://github.com/pages/apache/incubator-servicecomb-website/cn/docs/loadtest-saga-with-kubernetes">
- <meta property="og:description" content="Apache ServiceComb (incubating) Meetup">
+ <meta property="og:description" content="如何使用Kubernetes方便的对Saga进行性能测试">
<meta name="twitter:site" content="@ServiceComb">
- <meta name="twitter:title" content="Apache ServiceComb (incubating) Meetup -上海 2018.10.12">
- <meta name="twitter:description" content="Apache ServiceComb (incubating) Meetup">
+ <meta name="twitter:title" content="使用Kubernetes对Saga进行压力测试">
+ <meta name="twitter:description" content="如何使用Kubernetes方便的对Saga进行性能测试">
<meta name="twitter:url" content="">
@@ -56,7 +56,7 @@
- <meta name="twitter:creator" content="@Dean Lee">
+ <meta name="twitter:creator" content="@">
@@ -70,7 +70,7 @@
<meta property="og:type" content="article">
- <meta property="article:published_time" content="2018-09-28T00:00:00+08:00">
+ <meta property="article:published_time" content="2018-09-11T00:00:00+08:00">
@@ -226,7 +226,7 @@
- <a href=/docs/Apache-ServiceComb-Meetup-2018-Shanghai/>English</a>
+ <a href=/docs/loadtest-saga-with-kubernetes>English</a>
</div>
</nav>
@@ -250,20 +250,14 @@
<div itemscope itemtype="http://schema.org/Person">
- <div class="author__avatar">
-
- <img src="/assets/images/ServiceComb-logo-3.jpg" class="author__avatar" alt="" itemprop="image">
-
- </div>
-
<div class="author__content">
- <h3 class="author__name" itemprop="name"></h3>
+ <h3 class="author__name" itemprop="name">Zhen Ju</h3>
<p class="author__bio" itemprop="description">
- ServiceComb提供了一套关于服务注册,服务发现,服务配置以及管理功能的微服务框架
+ Curious about everything~
</p>
@@ -274,21 +268,19 @@
<button class="btn btn--inverse">关注</button>
<ul class="author__urls social-icons">
- <li itemprop="homeLocation" itemscope itemtype="http://schema.org/Place">
-
-
- <i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> <span itemprop="name">中国</span>
-
-
- </li>
-
+ <li>
+ <a href="https://github.com/crystaldust" itemprop="url">
+ <i class="fa fa-fw fa-chain" aria-hidden="true"></i> 网站
+ </a>
+ </li>
+
<li>
- <a href="mailto:dev@servicecomb.apache.org">
- <meta itemprop="email" content="dev@servicecomb.apache.org" />
+ <a href="mailto:juzhenatpku@gmail.com">
+ <meta itemprop="email" content="juzhenatpku@gmail.com" />
<i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> 电子邮箱
</a>
</li>
@@ -313,12 +305,6 @@
- <li>
- <a href="https://github.com/ServiceComb" itemprop="sameAs">
- <i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub
- </a>
- </li>
-
@@ -361,16 +347,16 @@
<article class="page" itemscope itemtype="http://schema.org/CreativeWork">
- <meta itemprop="headline" content="Apache ServiceComb (incubating) Meetup -上海 2018.10.12">
- <meta itemprop="description" content="Apache ServiceComb (incubating) Meetup">
- <meta itemprop="datePublished" content="September 28, 2018">
- <meta itemprop="dateModified" content="September 27, 2018">
+ <meta itemprop="headline" content="使用Kubernetes对Saga进行压力测试">
+ <meta itemprop="description" content="如何使用Kubernetes方便的对Saga进行性能测试">
+ <meta itemprop="datePublished" content="September 11, 2018">
+ <meta itemprop="dateModified" content="September 11, 2018">
<div class="page__inner-wrap">
<header>
- <h1 class="page__title" itemprop="headline">Apache ServiceComb (incubating) Meetup -上海 2018.10.12
+ <h1 class="page__title" itemprop="headline">使用Kubernetes对Saga进行压力测试
</h1>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
@@ -378,7 +364,7 @@
- 少于 1 分钟 阅读
+ 1 分钟 阅读
</p>
@@ -387,85 +373,138 @@
<section class="page__content" itemprop="text">
- <p><strong>全球最大的开源软件基金会 Apache的大咖们和ServiceComb社区管理委员会成员们齐聚一堂,将从多维度带来干货满满的精彩技术和实践分享</strong></p>
+ <h2 id="使用kubernetes对saga进行压力测试">使用Kubernetes对Saga进行压力测试</h2>
-<p><strong>Apache ServiceComb Meetup</strong></p>
+<p>Apache ServiceComb (incubating) Saga 是一个微服务应用的数据最终一致性解决方案。Saga在try阶段直接提交事务,后续rollback阶段则通过反向的补偿操作来完成。</p>
-<p><strong>会议日期/时间</strong>:2018 年 10 月 12 日,星期五,13:30–16:50</p>
+<p>基于ServiceComb Saga的项目,基本的构架如下:</p>
-<p><strong>会议地址</strong>:上海世博展览馆416-417会议厅</p>
+<p><img src="https://raw.githubusercontent.com/apache/incubator-servicecomb-saga/master/docs/static_files/pack.png" alt="overview" /></p>
-<p><strong>在线直播:</strong> <a href="http://www.itdks.com/eventlist/detail/2709">链接</a></p>
+<p>在我们的Saga实现中,业务服务引入Omega库,通过Omega将事务相关信息作为事件发送给Alpha server,由Alpha server统一进行协调。Alpha server将事务保存在PostgreSQL中,后台定期进行扫描。当扫描到异常事件时,尝试向事件对应的Omega发送gRPC请求,调用补偿方法。由于在原生业务中加入了Omega,进行了一系列后台操作,因此需要对整个框架进行压力测试,以获取框架的基础性能报告。</p>
-<hr />
+<p>在Cloud Native时代,容器几乎是标准的部署形态,应用程序容器化之后,通过Kubernetes进行容器编排,可以轻松的实现弹性扩容、任务调度等,非常适合对该项目进行压力测试。有鉴于此,我们将demo项目构建成docker镜像,并部署到Kubernetes集群中,通过Kubernetes的一系列组件,对demo方便的进行压力测试,以对Saga项目的性能有一个初步的评估。</p>
-<p><strong>关于Apache ServiceComb (incubating) 项目</strong>:</p>
+<h3 id="kubernetize服务">“Kubernetize”服务</h3>
-<p>ServiceComb Apache软件基金会孵化项目的主体代码由华为云捐赠,致力于帮助企业轻松构建云原生应用及传统企业业务快速微服务化,通过系列解决方案帮助用户快速开发微服务的同时实现对这些微服务应用的高效运维管理。它具有完整的微服务生态栈,无厂商锁定,当前遵循Apache Way进行孵化,已拥有如消费者云、云EI、云安全、云核等华为业务之外的一批非华为商用用户,且社区和开发者也日趋多样化。</p>
+<p>我们的demo项目由Java编写、maven作为依赖管理工具,在项目中引入了fabric8插件,编译程序时可以顺便将jar包构建成docker镜像。首先,我们构建alpha-server镜像:</p>
-<p>这是一个免费的开放日Meetup活动,由Apache ServiceComb (incubating)社区组织,华为云赞助主办,我们邀请到了来自商用企业、Apache、ServiceComb社区及华为的多位专家和工程师,与大家进行分享和探讨,详细议题如下:</p>
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span><span class="nb">cd </span>alpha/alpha-server
+<span class="gp">$ </span>mvn clean install -Pdocker
+</code></pre>
+</div>
-<hr />
-<p><strong>《Apache之道》</strong></p>
+<p>然后进入demo项目路径<code class="highlighter-rouge">saga-demo/saga-spring-demo</code>,执行相同的maven构建命令,构建完成后,我们可以看到产生了4个相关镜像:</p>
-<p><strong>时间:</strong> 13:30-14:30</p>
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>docker images | grep SNAPHOST <span class="c"># {version}-SNAPSHOT是构建过程中使用的镜像标签</span>
+alpha-server:0.3.0-SNAPSHOT
+booking:0.3.0-SNAPSHOT
+car:0.3.0-SNAPSHOT
+hotel:0.3.0-SNAPSHOT
+</code></pre>
+</div>
+
+<p>至此,我们已经构建好所需镜像,下一步便是编写Kubernetes所需的资源文件,这一步我们不再赘述,项目中已经有写好的yaml文件,路径在<code class="highlighter-rouge">saga-demo/saga-k8s-resources</code>,目录结构如下:</p>
+
+<pre><code class="language-base">.
+├── base
+│ ├── alpha.yaml
+│ ├── jmeter-collector.yaml
+│ └── postgresql.yaml
+├── README.md
+└── spring-demo
+ ├── booking.yaml
+ ├── car.yaml
+ ├── hotel.yaml
+ └── test
+ ├── jmeter.configmap.yaml
+ └── jmeter.yaml
+</code></pre>
+
+<p>其中<code class="highlighter-rouge">base</code>目录包含了alpha-server,postgresql以及用于收集测试报告的jmeter-collector3个服务。<code class="highlighter-rouge">spring-demo</code>目录包含了demo项目的所有服务,<code class="highlighter-rouge">spring-demo/test</code>路径下包含了对demo测试所需的服务。</p>
+
+<p>我们通过最基础的deployment和service对项目进行部署,程序之间通过域名互相访问,通过<code class="highlighter-rouge">kubectl</code>命令对Kubernetes资源进行部署:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl create ns servicecomb <span class="c"># 默认所有服务都在servicecomb namespace下</span>
+<span class="gp">$ </span>kubectl apply -f ./base
+<span class="gp">$ </span>kubectl apply -f ./spring-demo
+</code></pre>
+</div>
-<p><strong>主讲人:</strong> Roman Shaposhnik,知名企业开源专家及数字转型顾问,曾在Linux基金会下项目的开源协作过程中起了重要作用。并曾在Pivotal负责大数据及应用管理平台领域的工作。Roman 在Pivotal的工作使他深入了解了容器技术、虚拟化以及unikernel架构。此外,Roman 是Apache基金会孵化器的活跃成员,指导了大量的Apache基金会项目并直接参与项目贡献。</p>
+<p>我们通过<code class="highlighter-rouge">kubectl exec</code>命令进入一个pod,通过curl命令测试booking程序:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl <span class="nb">exec</span> -it -n servicecomb alpha-server-xxxxx
+<span class="gp">$ </span>curl http://booking.servicecomb:8083/booking/test/2/2
+resp: OK
+</code></pre>
+</div>
-<p><strong>主讲人:</strong> Justin Mclean,Apache项目管理委员会主席,Apache Member,20余年IT行业软件开发经历,擅长IoT, Web 应用开发,数据库设计,开源硬件领域。曾经在全球范围内超过50场会议中进行演讲。</p>
+<p>至此,我们的demo项目就已经运行起来了。</p>
-<p><strong>主讲人:</strong> Craig Russell,Apache Member,Apache IPMC成员,专注于数据库API方向,Sun公司和Oracle公司Java和Javascript中ORM部分架构师。Craig从2005年开始参与Apache基金会的事务,从2010年开始担任Apache Secretary及形象大使。</p>
+<h3 id="部署jmeter">部署JMeter</h3>
-<p><strong>摘要:</strong> Apache软件基金会是全球最大的开源基金会,目前拥有300多个开源项目,涵盖大数据、云计算、服务器和Web框架、构建管理、内容管理、物联网等众多领域。三位来自Apache基金会的专家将详细介绍Apache基金会发展历程及现状,阐述Apache基金会的运作方式,解读Apache软件基金会的核心理念—Apache Way。同时分析作为一个Apache项目需要遵守的合规性规则及背后所蕴含的意义。并介绍Apache基金会孵化器的概况及项目流程,讨论Apache孵化项目如何发展社区并毕业成为顶级项目。</p>
+<p>我们选用<a href="https://jmeter.apache.org/">JMeter</a>作为压测工具,<a href="https://hub.docker.com/">Docker Hub</a>上已有公共镜像<a href="https://hub.docker.com/r/justb4/jmeter/">justb4/jmeter</a>,该镜像比较成熟,启动前会先侦测系统中可用内存,按照一定比例为jmeter申请jvm内存,可以最大化、合理的利用系统资源。</p>
-<hr />
-<p><strong>《Apache ServiceComb(incubating)社区最新路线》</strong></p>
+<p>当我们部署JMeter时,为了保持测试的灵活性,一般需要将JMeter脚本单独存储,而JMeter程序可以通过某种方式获取测试脚本,进而保证测试配置可以单独修改,不需要重新构建JMeter镜像。在Kubernetes中,我们可以将JMeter的配置文件存放于<a href="https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/">ConfigMap</a>,并通过<a href="https://kubernetes.io/docs/concepts/storage/volumes/">VolumeMount</a>挂载到JMeter容器的指定目录,这样,当我们需要修改测试配置时,只需修改ConfigMap,并重新部署JMeter deployment,即可完成配置的更新。</p>
-<p><strong>时间:</strong> 14:40-15:00</p>
+<p>部署ConfigMap命令如下:</p>
-<p><strong>主讲人:</strong> 姜宁,Apache Member,华为微服务领域专家,开源专家,前红帽软件首席软件工程师,有十五年企业级开源中间件开发经验。2006年起一直从事Apache开源中间件项目工作,先后参与Apache CXF, Apache Camel,以及Apache ServiceComb等项目。对微服务架构,WebServices,Enterprise Integration Pattern,SOA, OSGi有比较深入的研究。</p>
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl apply -f spring-demo/test/jmeter.configmap.yaml
+</code></pre>
+</div>
-<p><strong>摘要:</strong> 介绍ServiceComb社区自1.0.0版本发布之后的整体技术演进路线和项目在Apache软件基金会的最新成长状态。</p>
+<h3 id="jmeter-镜像改造">JMeter 镜像改造</h3>
-<hr />
-<p><strong>《ServiceComb在Service Mesh的探索与思考》</strong></p>
+<p>由于原有的JMeter容器执行完测试之后就退出了,如果在单机环境、仅运行docker容器的环境下,我们可以在执行<code class="highlighter-rouge">docker run</code>命令时通过-v参数将宿主机目录挂载到容器中,以保存测试的结果。但是Kubernetes环境,每个pod部署时都是根据一定的算法分配到不同节点上的,节点即是容器的宿主机。但是,登录到节点并找到相应目录来查看结果似乎是非常“不体面”的姿势,因此需要构建一个服务,收集JMeter生成的报告,并能够方便的展示。为此,我们用go语言实现了一个简单的文件上传服务,并附带静态文件服务。该服务收到JMeter测试报告达成的tgz压缩包,将其解压到相应静态文件服务目录中,这样,我们就可以方便的在集群中查看测试结果。该服务就是上文提到的jmeter-collector服务。</p>
-<p><strong>时间:</strong> 15:00-15:20</p>
+<p>这样一来,我们还需要对JMeter服务进行一些小改造,当执行完JMeter测试后,我们通过一个脚本将测试结果目录打包上传到jmeter-collector服务。这些改造都已经完成并做好了相应的镜像,直接使用项目中的资源即可:</p>
-<p><strong>主讲人:</strong> 田晓亮,华为云微服务架构师,同时是服务网格的技术带头人。前三星Svoice监控平台架构师,为Svoice执行运维开发解决方案,在PaaS、运维开发和 APM拥有丰富的经验,多次在包括LC3和ArchSummit的开源大会上演讲。</p>
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl apply -f spring-demo/test/jmeter.yaml
+</code></pre>
+</div>
-<p><strong>摘要:</strong> 介绍ServiceComb在生态兼容Service Mesh方面的工作,阐述ServiceComb在支持零侵入微服务化方面以及和传统微服务框架实现方式的协同部署、治理的探索。</p>
+<p>现在,我们已经配置好JMeter相关资源,执行<code class="highlighter-rouge">kubectl logs</code>检查JMeter运行状况:</p>
-<hr />
-<p><strong>《Service Mesh微服务化和传统框架微服务化混合部署协同实践分享》</strong></p>
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl get pod -n servicecomb | grep spring-demo-jmeter
+spring-demo-jmeter-xxxxx
+<span class="gp">$ </span>kubectl logs -f -n servicecomb pring-demo-jmeter-xxxxx
+...
+summary + 420 <span class="k">in </span>00:00:22 <span class="o">=</span> 18.8/s Avg: 214 Min: 111 Max: 471 Err: 207 <span class="o">(</span>49.29%<span class="o">)</span> Active: 12 Started: 12 Finished: 0
+</code></pre>
+</div>
-<p><strong>时间:</strong> 15:20-15:40</p>
+<p>可以看到JMeter已经开始逐步增加测试线程进行压测了。</p>
-<p><strong>主讲人:</strong> 苗彦杰 梅斯医学首席架构师,多年医疗行业云计算开发经验。</p>
+<p>由于我们用deployment部署JMeter,当执行结束后,容器正常退出,Kubernetes会重新启动容器,将测试服务再次拉起。因此测试会持续进行,直到我们将deployment删除。</p>
-<p><strong>摘要:</strong> 在以Service Mesh为代表的零侵入微服务化发展过程中,如何与传统侵入式框架开发的微服务混合部署、协同治理成为了一道难题。演讲者将从自身的业务背景出发,介绍如何借助ServiceComb和Mesher完成混合部署,分享其中遇到的问题和解决方法。</p>
+<p>至此,我们已经完成了demo和相应的压力测试服务,整个集群中相关资源的结构如下图所示:</p>
-<hr />
-<p><strong>《Apache Committer 成长经验分享》</strong></p>
+<p><img src="https://github.com/crystaldust/incubator-servicecomb-website/raw/blogs/loadtest-saga-with-k8s/assets/images/spring-demo.jpg" alt="demo-and-test-arch" /></p>
-<p><strong>时间:</strong> 15:50-16:10</p>
+<p>JMeter服务通过ConfigMap读取测试脚本,然后对booking服务发起压力测试,测试结束后,将结果上传至jmeter-collector服务。</p>
-<p><strong>主讲人:</strong> 冯征,软件工程师,2009年加入红帽软件公司。主要从事事务管理器方面的工作,Narayan和Blacktie项目的核心开发人员。从2017年开始参与了Apache ServiceComb有关分布式事务部分的实现,利用Byteman等工具完善了异常和超时测试场景。对于分布式事务处理以及微服务环境中的事务处理,有过深入的研究。</p>
+<h3 id="查看测试结果">查看测试结果</h3>
-<p><strong>摘要:</strong> 作为ServiceComb的新晋PMC和Committer,讲述自己如何在ServiceComb项目中成长的历程,分享自身参与开源社区的经验和收获。</p>
+<p>JMeter容器运行完成后,在容器内生成了测试结果文件,并调用upload脚本打包上传到jmeter-collector服务,可以通过该服务直接在页面上查看结果。在Kubernetes中,在集群外部访问服务有两种方式:LoadBalancer或NodePort,前者一般由提供Kubernetes集群服务的云服务厂商提供,后者则可以通过节点的IP和端口来访问某个服务。由于我们使用了本地部署的Kubernetes集群,因此我们使用NodePort来查看访问结果。</p>
-<hr />
-<p><strong>《快速微服务化编程体验》</strong></p>
+<p>首先,调用<code class="highlighter-rouge">kubectl edit</code>命令,编辑jmeter-collector服务:</p>
-<p><strong>时间:</strong> 16:10-16:50</p>
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl edit svc -n servicecomb jmeter-collector
+<span class="c"># in the editor:</span>
+spec:
+ <span class="nb">type</span>: NodePort <span class="c">## 插入此行,注意yaml文件空格缩进</span>
+ exteranlIPs: <span class="o">[</span><span class="s2">"192.168.43.70"</span><span class="o">]</span> <span class="c">## 插入此行,根据Kubernetes集群中节点IP来设置</span>
+ ports:
+ - port: 80
+ targetPort: 8883
+ <span class="c">#....</span>
+</code></pre>
+</div>
-<p><strong>主讲人:</strong> 巨震,华为软件工程师,Go语言开发者,聚焦云计算、容器技术和DevOps。华为云公有云容器镜像服务核心开发者,当前主要从事华为开源项目开发。《第一本Docker书》的合作译者。热衷于自动化运维、微服务、Service Mesh等技术,曾在Container Days 2017, KubeCon 2017发表演讲。</p>
+<p>在笔者的环境中,制定了IP为192.168.43.70的节点作为NodePort的IP,对外暴露80端口,因此,在浏览器中直接访问<code class="highlighter-rouge">http://192.168.43.70</code>即可查看测试报告的结果了,结果如下图所示:</p>
-<p><strong>摘要:</strong> 现场演示如何快速使用ServiceComb Java-chassis和Service Mesh技术Mesher进行微服务化应用编程,结合Kubernetes进行快速部署,并和与会者互动练习。</p>
+<p><img src="https://github.com/crystaldust/incubator-servicecomb-website/raw/blogs/loadtest-saga-with-k8s/assets/images/jmeter-collector.png" alt="jmeter-collector-dashboard" /></p>
-<hr />
-<p><strong>如您需要在参加Meetup之余参观ServiceComb展台,请您加入ServiecComb Gitter聊天室咨询:</strong> <br />
-<strong><a href="https://gitter.im/ServiceCombUsers/Lobby">ServiceComb Gitter 聊天室</a></strong></p>
</section>
@@ -486,11 +525,15 @@
- <a href="/tags/#meetup" class="page__taxonomy-item" rel="tag">Meetup</a><span class="sep">, </span>
+ <a href="/tags/#microservice" class="page__taxonomy-item" rel="tag">microservice</a><span class="sep">, </span>
+
+
+
+ <a href="/tags/#saga" class="page__taxonomy-item" rel="tag">saga</a><span class="sep">, </span>
- <a href="/tags/#%E5%BE%AE%E6%9C%8D%E5%8A%A1" class="page__taxonomy-item" rel="tag">微服务</a>
+ <a href="/tags/#servicemesh" class="page__taxonomy-item" rel="tag">servicemesh</a>
</span>
</p>
@@ -502,7 +545,7 @@
- <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> 最新的:</strong> <time datetime="2018-09-27">2018年9月27日</time></p>
+ <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> 最新的:</strong> <time datetime="2018-09-11">2018年9月11日</time></p>
@@ -513,24 +556,24 @@
<h4 class="page__share-title">分享</h4>
- <a href="https://twitter.com/intent/tweet?via=ServiceComb&text=Apache ServiceComb (incubating) Meetup -上海 2018.10.12 /cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" class="btn btn--twitter" title="分享 Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
+ <a href="https://twitter.com/intent/tweet?via=ServiceComb&text=使用Kubernetes对Saga进行压力测试 /cn/docs/loadtest-saga-with-kubernetes" class="btn btn--twitter" title="分享 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=/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" class="btn btn--facebook" title="分享 Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
+ <a href="https://www.facebook.com/sharer/sharer.php?u=/cn/docs/loadtest-saga-with-kubernetes" class="btn btn--facebook" title="分享 Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
- <a href="https://plus.google.com/share?url=/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" class="btn btn--google-plus" title="分享 Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
+ <a href="https://plus.google.com/share?url=/cn/docs/loadtest-saga-with-kubernetes" class="btn btn--google-plus" title="分享 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=/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" class="btn btn--linkedin" title="分享 LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+ <a href="https://www.linkedin.com/shareArticle?mini=true&url=/cn/docs/loadtest-saga-with-kubernetes" class="btn btn--linkedin" title="分享 LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>
<nav class="pagination">
- <a href="/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" class="pagination--pager" title="Apache ServiceComb (incubating) Meetup -Shanghai 2018.10.12
+ <a href="/cn/docs/crm-part-I/" class="pagination--pager" title="客户管理系统微服务化实战-PartI
">向前</a>
- <a href="/docs/osi-microservices/" class="pagination--pager" title="OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
+ <a href="/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" class="pagination--pager" title="Apache ServiceComb (incubating) Meetup -Shanghai 2018.10.12
">向后</a>
</nav>
@@ -577,7 +620,7 @@
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
</fieldset>
<fieldset class="hidden" style="display: none;">
- <input type="hidden" name="options[slug]" value="Apache-ServiceComb-Meetup-2018-Shanghai">
+ <input type="hidden" name="options[slug]" value="loadtest-saga-with-kubernetes">
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
</fieldset>
@@ -672,7 +715,7 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" rel="permalink">Apache ServiceComb (incubating) Meetup -Shanghai 2018.10.12
+ <a href="/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" rel="permalink">Apache ServiceComb (incubating) Meetup -上海 2018.10.12
</a>
</h2>
@@ -684,7 +727,7 @@
- 4 分钟 阅读
+ 少于 1 分钟 阅读
</p>
@@ -701,11 +744,11 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/crm-part-I/" rel="permalink">客户管理系统微服务化实战-PartI
+ <a href="/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" rel="permalink">Apache ServiceComb (incubating) Meetup -Shanghai 2018.10.12
</a>
</h2>
- <p class="archive__item-excerpt" itemprop="description">客户管理系统微服务化实战-PartI
+ <p class="archive__item-excerpt" itemprop="description">Apache ServiceComb (incubating) Meetup
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
@@ -713,7 +756,7 @@
- 5 分钟 阅读
+ 4 分钟 阅读
</p>
@@ -767,8 +810,8 @@
<div class="col">
<ul>
<p class="header">贡献</p>
- <li><a href="https://github.com/apache/incubator-servicecomb-website/issues/new?title=Issue with _posts/cn/2018-09-28-Apache-ServiceComb-Meetup-2018-Shanghai.md">报告本网页问题</a></li>
- <li><a href="https://github.com/apache/incubator-servicecomb-website/edit/master/_posts/cn/2018-09-28-Apache-ServiceComb-Meetup-2018-Shanghai.md">在Github上编辑此页</a></li>
+ <li><a href="https://github.com/apache/incubator-servicecomb-website/issues/new?title=Issue with _posts/cn/2018-09-11-loadtest-saga-with-kubernetes.md">报告本网页问题</a></li>
+ <li><a href="https://github.com/apache/incubator-servicecomb-website/edit/master/_posts/cn/2018-09-11-loadtest-saga-with-kubernetes.md">在Github上编辑此页</a></li>
<li><a href="/cn/developers/submit-codes/">代码提交指南</a></li>
<li><a href="/cn/security">安全</a></li>
</ul>
diff --git a/content/cn/docs/osi-microservices/index.html b/content/cn/docs/osi-microservices/index.html
index 37ad542..05f1bd7 100644
--- a/content/cn/docs/osi-microservices/index.html
+++ b/content/cn/docs/osi-microservices/index.html
@@ -5,7 +5,7 @@
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
-->
-<html lang="en" class="no-js">
+<html lang="cn" class="no-js">
<head>
<meta charset="utf-8">
@@ -31,7 +31,7 @@
<meta name="author" content="Asif Siddiqui">
-<meta property="og:locale" content="en">
+<meta property="og:locale" content="cn">
<meta property="og:site_name" content="Apache ServiceComb">
<meta property="og:title" content="OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop">
@@ -161,7 +161,7 @@
<div class="masthead__menu">
<nav id="site-nav" class="greedy-nav">
- <a class="site-title active" href="/"><img src="https://www.apache.org/img/servicecomb.png"></a>
+ <a class="site-title active" href="/cn"><img src="https://www.apache.org/img/servicecomb.png"></a>
<ul class="visible-links">
@@ -170,7 +170,7 @@
- <a href="/docs/quick-start/">Quick Start</a>
+ <a href="/cn/docs/quick-start/">快速入门</a>
</li>
@@ -179,7 +179,7 @@
- <a href="/users/">Users</a>
+ <a href="/cn/users/">用户手册</a>
</li>
@@ -188,7 +188,7 @@
- <a href="/developers/">Developers</a>
+ <a href="/cn/developers/">开发者手册</a>
</li>
@@ -197,7 +197,7 @@
- <a href="/year-archive/">Blogs</a>
+ <a href="/cn/year-archive/">博文</a>
</li>
@@ -206,7 +206,7 @@
- <a href="/faqs/">FAQ</a>
+ <a href="/cn/faqs/">常见问题</a>
</li>
@@ -215,7 +215,7 @@
- <a href="/release/">Downloads</a>
+ <a href="/cn/release/">下载</a>
</li>
@@ -225,7 +225,8 @@
<div class="nav-lang">
- <a href=/cn/cn/docs/osi-microservices/>中文</a>
+
+ <a href=/docs/osi-microservices/>English</a>
</div>
</nav>
@@ -242,7 +243,7 @@
<div class="sidebar sticky">
- <div class="back-to-home">Home > <a href="/">ServiceComb</a></div>
+ <div class="back-to-home">首页 > <a href="/cn/">ServiceComb</a></div>
@@ -255,21 +256,23 @@
<p class="author__bio" itemprop="description">
- Gopher, PaaS and Microservice
+
+ Gopher, PaaS and Microservice
+
</p>
</div>
<div class="author__urls-wrapper">
- <button class="btn btn--inverse">Follow</button>
+ <button class="btn btn--inverse">关注</button>
<ul class="author__urls social-icons">
<li>
<a href="http://asifdxtreme.github.io" itemprop="url">
- <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
+ <i class="fa fa-fw fa-chain" aria-hidden="true"></i> 网站
</a>
</li>
@@ -278,7 +281,7 @@
<li>
<a href="mailto:mohammad.asif.siddiqui1@huawei.com">
<meta itemprop="email" content="mohammad.asif.siddiqui1@huawei.com" />
- <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> Email
+ <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> 电子邮箱
</a>
</li>
@@ -367,7 +370,7 @@
- less than 1 minute read
+ 少于 1 分钟 阅读
</p>
@@ -421,7 +424,7 @@
<p class="page__taxonomy">
- <strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> Tags: </strong>
+ <strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> 标签: </strong>
<span itemprop="keywords">
@@ -442,7 +445,7 @@
- <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2018-10-15">October 15, 2018</time></p>
+ <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> 最新的:</strong> <time datetime="2018-10-15">2018年10月15日</time></p>
@@ -450,16 +453,16 @@
<section class="page__share">
- <h4 class="page__share-title">Share on</h4>
+ <h4 class="page__share-title">分享</h4>
- <a href="https://twitter.com/intent/tweet?via=ServiceComb&text=OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop /cn/docs/osi-microservices/" 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://twitter.com/intent/tweet?via=ServiceComb&text=OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop /cn/docs/osi-microservices/" class="btn btn--twitter" title="分享 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=/cn/docs/osi-microservices/" 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://www.facebook.com/sharer/sharer.php?u=/cn/docs/osi-microservices/" class="btn btn--facebook" title="分享 Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
- <a href="https://plus.google.com/share?url=/cn/docs/osi-microservices/" 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://plus.google.com/share?url=/cn/docs/osi-microservices/" class="btn btn--google-plus" title="分享 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=/cn/docs/osi-microservices/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
+ <a href="https://www.linkedin.com/shareArticle?mini=true&url=/cn/docs/osi-microservices/" class="btn btn--linkedin" title="分享 LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>
@@ -467,10 +470,10 @@
<nav class="pagination">
<a href="/docs/osi-microservices/" class="pagination--pager" title="OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
-">Previous</a>
+">向前</a>
- <a href="#" class="pagination--pager disabled">Next</a>
+ <a href="#" class="pagination--pager disabled">向后</a>
</nav>
@@ -490,29 +493,29 @@
<!-- End static comments -->
<!-- Start new comment form -->
- <h4 class="page__comments-title">Leave a Comment</h4>
- <p class="small">Your email address will not be published. Required fields are marked <span class="required">*</span></p>
+ <h4 class="page__comments-title">留下评论</h4>
+ <p class="small">您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 <span class="required">*</span></p>
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/apache/incubator-servicecomb-website/master">
<div class="form__spinner">
<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
- <span class="sr-only">Loading...</span>
+ <span class="sr-only">正在加载...</span>
</div>
<fieldset>
- <label for="comment-form-message">Comment <small class="required">*</small></label>
+ <label for="comment-form-message">评论 <small class="required">*</small></label>
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
- <div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">Markdown is supported.</a></div>
+ <div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">Markdown语法已支持。</a></div>
</fieldset>
<fieldset>
- <label for="comment-form-name">Name <small class="required">*</small></label>
+ <label for="comment-form-name">姓名 <small class="required">*</small></label>
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
</fieldset>
<fieldset>
- <label for="comment-form-email">Email address <small class="required">*</small></label>
+ <label for="comment-form-email">电子邮箱 <small class="required">*</small></label>
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
</fieldset>
<fieldset>
- <label for="comment-form-url">Website (optional)</label>
+ <label for="comment-form-url">网站(可选)</label>
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
</fieldset>
<fieldset class="hidden" style="display: none;">
@@ -526,7 +529,7 @@
</p>
<!-- End comment form alert messaging -->
<fieldset>
- <button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--large">Submit Comment</button>
+ <button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--large">提交评论</button>
</fieldset>
</form>
<!-- End new comment form -->
@@ -541,7 +544,7 @@
<div class="page__related">
- <h4 class="page__related-title">You May Also Enjoy</h4>
+ <h4 class="page__related-title">猜您还喜欢</h4>
<div class="grid__wrapper">
@@ -565,7 +568,7 @@
- less than 1 minute read
+ 少于 1 分钟 阅读
</p>
@@ -594,7 +597,7 @@
- less than 1 minute read
+ 少于 1 分钟 阅读
</p>
@@ -623,7 +626,7 @@
- 4 minute read
+ 4 分钟 阅读
</p>
@@ -640,11 +643,11 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/crm-part-I/" rel="permalink">客户管理系统微服务化实战-PartI
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
</a>
</h2>
- <p class="archive__item-excerpt" itemprop="description">客户管理系统微服务化实战-PartI
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
@@ -652,7 +655,7 @@
- 5 minute read
+ 1 分钟 阅读
</p>
@@ -686,37 +689,37 @@
<div class="col">
<ul>
- <p class="header">Resources</p>
- <li><a href="/docs/quick-start/">Quick Start</a></li>
- <li><a href="/users/">User Guide</a></li>
- <li><a href="/slides/">Slides</a></li>
- <li><a href="/users/faq/">Common Questions</a></li>
+ <p class="header">资源</p>
+ <li><a href="/cn/docs/quick-start/">快速入门</a></li>
+ <li><a href="/cn/users/">用户指南</a></li>
+ <li><a href="/cn/slides/">资料</a></li>
+ <li><a href="/cn/users/faq/">常见问题</a></li>
</ul>
</div>
<div class="col">
<ul>
<p class="header">ASF</p>
- <li><a href="http://www.apache.org">Foundation</a></li>
- <li><a href="http://www.apache.org/licenses/">License</a></li>
- <li><a href="http://www.apache.org/events/current-event">Events</a></li>
- <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
- <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+ <li><a href="http://www.apache.org">基金会</a></li>
+ <li><a href="http://www.apache.org/licenses/">许可证</a></li>
+ <li><a href="http://www.apache.org/events/current-event">活动</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">赞助</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">鸣谢</a></li>
</ul>
</div>
<div class="col">
<ul>
- <p class="header">Contribute</p>
- <li><a href="https://github.com/apache/incubator-servicecomb-website/issues/new?title=Issue with _posts/cn/2018-10-15-OSI-Workshop-Report.md">Report a Doc Issue</a></li>
- <li><a href="https://github.com/apache/incubator-servicecomb-website/edit/master/_posts/cn/2018-10-15-OSI-Workshop-Report.md">Edit This Page on Github</a></li>
- <li><a href="/developers/submit-codes/">Code Submit Guide</a></li>
- <li><a href="/security">Security</a></li>
+ <p class="header">贡献</p>
+ <li><a href="https://github.com/apache/incubator-servicecomb-website/issues/new?title=Issue with _posts/cn/2018-10-15-OSI-Workshop-Report.md">报告本网页问题</a></li>
+ <li><a href="https://github.com/apache/incubator-servicecomb-website/edit/master/_posts/cn/2018-10-15-OSI-Workshop-Report.md">在Github上编辑此页</a></li>
+ <li><a href="/cn/developers/submit-codes/">代码提交指南</a></li>
+ <li><a href="/cn/security">安全</a></li>
</ul>
</div>
<div class="col">
<ul class="social-icons">
- <p class="header">Community</p>
+ <p class="header">社区</p>
<li>
- <a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">Mailing List</span></a>
+ <a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">邮件列表</span></a>
</li>
<li>
<a href="https://github.com/apache?q=ServiceComb" target="_blank"><span class="github">Github</span></a>
@@ -732,7 +735,7 @@
</div>
</div>
<div class="page__footer-bottom">
- <div>© 2018 Apache ServiceComb. Powered by <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
+ <div>© 2018 Apache ServiceComb. 技术来自于 <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> & <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
<div>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
</div>
@@ -769,7 +772,7 @@
var form = this;
$(form).addClass('disabled');
- $('#comment-form-submit').html('<i class="fa fa-spinner fa-spin fa-fw"></i> Loading...');
+ $('#comment-form-submit').html('<i class="fa fa-spinner fa-spin fa-fw"></i> 正在加载...');
$.ajax({
type: $(this).attr('method'),
@@ -777,17 +780,17 @@
data: $(this).serialize(),
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
- $('#comment-form-submit').html('Submitted');
+ $('#comment-form-submit').html('已提交');
$('.page__comments-form .js-notice').removeClass('notice--danger');
$('.page__comments-form .js-notice').addClass('notice--success');
- showAlert('Thanks for your comment! It will show on the site once it has been approved.');
+ showAlert('感谢您的评论!被批准后它会立即在此站点展示。');
},
error: function (err) {
console.log(err);
- $('#comment-form-submit').html('Submit Comment');
+ $('#comment-form-submit').html('提交评论');
$('.page__comments-form .js-notice').removeClass('notice--success');
$('.page__comments-form .js-notice').addClass('notice--danger');
- showAlert('Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again.');
+ showAlert('很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。');
$(form).removeClass('disabled');
}
});
diff --git a/content/cn/year-archive/index.html b/content/cn/year-archive/index.html
index f7bc31d..233a50e 100644
--- a/content/cn/year-archive/index.html
+++ b/content/cn/year-archive/index.html
@@ -400,6 +400,37 @@
<h2 class="archive__item-title" itemprop="headline">
+ <a href="/cn/docs/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
+</a>
+
+ </h2>
+ <p class="archive__item-excerpt" itemprop="description">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
+</p>
+
+ <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
+
+
+
+
+ 少于 1 分钟 阅读
+
+</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="/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" rel="permalink">Apache ServiceComb (incubating) Meetup -上海 2018.10.12
</a>
@@ -431,6 +462,37 @@
<h2 class="archive__item-title" itemprop="headline">
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
+</a>
+
+ </h2>
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
+</p>
+
+ <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
+
+
+
+
+ 1 分钟 阅读
+
+</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="/cn/docs/crm-part-I/" rel="permalink">客户管理系统微服务化实战-PartI
</a>
@@ -1528,6 +1590,12 @@
<!-- If not equal to previous then it must be unique as sorted -->
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
<!-- Push to group_names -->
@@ -1630,6 +1698,18 @@
<!-- If not equal to previous then it must be unique as sorted -->
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
<!-- Push to group_names -->
@@ -1650,6 +1730,12 @@
<!-- If not equal to previous then it must be unique as sorted -->
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
<!-- Push to group_names -->
@@ -1680,6 +1766,12 @@
<!-- If not equal to previous then it must be unique as sorted -->
+
+
+
+<!-- If not equal to previous then it must be unique as sorted -->
+
+
<!-- Push to group_names -->
@@ -2566,6 +2658,35 @@
<h2 class="archive__item-title" itemprop="headline">
+ <a href="/cn/docs/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
+</a>
+
+ </h2>
+ <p class="archive__item-excerpt" itemprop="description">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
+</p>
+
+ <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
+
+
+
+
+ 少于 1 分钟 阅读
+
+</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="/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" rel="permalink">Apache ServiceComb (incubating) Meetup -上海 2018.10.12
</a>
@@ -2950,6 +3071,64 @@
<h2 class="archive__item-title" itemprop="headline">
+ <a href="/cn/docs/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
+</a>
+
+ </h2>
+ <p class="archive__item-excerpt" itemprop="description">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
+</p>
+
+ <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
+
+
+
+
+ 少于 1 分钟 阅读
+
+</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="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
+</a>
+
+ </h2>
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
+</p>
+
+ <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
+
+
+
+
+ 1 分钟 阅读
+
+</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="/cn/docs/consul-servicemesh" rel="permalink">Consul Service Mesh实战
</a>
@@ -3016,6 +3195,35 @@
<h2 class="archive__item-title" itemprop="headline">
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
+</a>
+
+ </h2>
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
+</p>
+
+ <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
+
+
+
+
+ 1 分钟 阅读
+
+</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="/cn/docs/saga_pack_design/" rel="permalink">ServiceComb数据一致性解决方案Saga演进介绍
</a>
@@ -3115,6 +3323,35 @@
<h2 class="archive__item-title" itemprop="headline">
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
+</a>
+
+ </h2>
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
+</p>
+
+ <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
+
+
+
+
+ 1 分钟 阅读
+
+</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="/cn/docs/consul-servicemesh" rel="permalink">Consul Service Mesh实战
</a>
diff --git a/content/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html b/content/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
index ae84b92..b141571 100644
--- a/content/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
+++ b/content/docs/Apache-ServiceComb-Meetup-2018-Shanghai/index.html
@@ -512,7 +512,7 @@
<nav class="pagination">
- <a href="/cn/docs/crm-part-I/" class="pagination--pager" title="客户管理系统微服务化实战-PartI
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" class="pagination--pager" title="使用Kubernetes对Saga进行压力测试
">Previous</a>
@@ -687,11 +687,11 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/crm-part-I/" rel="permalink">客户管理系统微服务化实战-PartI
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
</a>
</h2>
- <p class="archive__item-excerpt" itemprop="description">客户管理系统微服务化实战-PartI
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
@@ -699,7 +699,7 @@
- 5 minute read
+ 1 minute read
</p>
diff --git a/content/docs/osi-microservices/index.html b/content/docs/osi-microservices/index.html
index 51d6538..e7c731d 100644
--- a/content/docs/osi-microservices/index.html
+++ b/content/docs/osi-microservices/index.html
@@ -641,11 +641,11 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/crm-part-I/" rel="permalink">客户管理系统微服务化实战-PartI
+ <a href="/cn/docs/loadtest-saga-with-kubernetes" rel="permalink">使用Kubernetes对Saga进行压力测试
</a>
</h2>
- <p class="archive__item-excerpt" itemprop="description">客户管理系统微服务化实战-PartI
+ <p class="archive__item-excerpt" itemprop="description">如何使用Kubernetes方便的对Saga进行性能测试
</p>
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
@@ -653,7 +653,7 @@
- 5 minute read
+ 1 minute read
</p>
diff --git a/content/feed.xml b/content/feed.xml
index 46813c0..8a8afc2 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.4.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2018-10-22T14:05:20+08:00</updated><id>/</id><title type="html">Apache ServiceComb</title><subtitle>The homepage of ServiceComb</subtitle><author><name>{"name"=>nil, "avatar"=>"/assets [...]
+<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.4.3">Jekyll</generator><link href="/feed.xml" rel="self" type="application/atom+xml" /><link href="/" rel="alternate" type="text/html" /><updated>2018-11-02T18:16:33+08:00</updated><id>/</id><title type="html">Apache ServiceComb</title><subtitle>The homepage of ServiceComb</subtitle><author><name>{"name"=>nil, "avatar"=>"/assets [...]
<p><strong>Event Location</strong>: Workshop Hall 3, Nimhans Convention Center, Bangalore, India</p>
@@ -201,7 +201,137 @@
<hr />
<p><strong>Please checkout ServiceComb Gitter if you are interesting about visiting the booth of ServiceComb during the Meetup</strong>
-<strong><a href="https://gitter.im/ServiceCombUsers/Lobby">ServiceComb Gitter</a></strong></p></content><author><name>Dean Lee</name></author><category term="microservice" /><category term="Meetup" /><summary type="html">Apache ServiceComb (incubating) Meetup</summary></entry><entry xml:lang="cn"><title type="html">客户管理系统微服务化实战-PartI</title><link href="/cn/docs/crm-part-I/" rel="alternate" type="text/html" title="客户管理系统微服务化实战-PartI" /><published>20 [...]
+<strong><a href="https://gitter.im/ServiceCombUsers/Lobby">ServiceComb Gitter</a></strong></p></content><author><name>Dean Lee</name></author><category term="microservice" /><category term="Meetup" /><summary type="html">Apache ServiceComb (incubating) Meetup</summary></entry><entry xml:lang="cn"><title type="html">使用Kubernetes对Saga进行压力测试</title><link href="/cn/docs/loadtest-saga-with-kubernetes" rel="alternate" type="text/html" title="使用Kubernetes [...]
+
+<p>Apache ServiceComb (incubating) Saga 是一个微服务应用的数据最终一致性解决方案。Saga在try阶段直接提交事务,后续rollback阶段则通过反向的补偿操作来完成。</p>
+
+<p>基于ServiceComb Saga的项目,基本的构架如下:</p>
+
+<p><img src="https://raw.githubusercontent.com/apache/incubator-servicecomb-saga/master/docs/static_files/pack.png" alt="overview" /></p>
+
+<p>在我们的Saga实现中,业务服务引入Omega库,通过Omega将事务相关信息作为事件发送给Alpha server,由Alpha server统一进行协调。Alpha server将事务保存在PostgreSQL中,后台定期进行扫描。当扫描到异常事件时,尝试向事件对应的Omega发送gRPC请求,调用补偿方法。由于在原生业务中加入了Omega,进行了一系列后台操作,因此需要对整个框架进行压力测试,以获取框架的基础性能报告。</p>
+
+<p>在Cloud Native时代,容器几乎是标准的部署形态,应用程序容器化之后,通过Kubernetes进行容器编排,可以轻松的实现弹性扩容、任务调度等,非常适合对该项目进行压力测试。有鉴于此,我们将demo项目构建成docker镜像,并部署到Kubernetes集群中,通过Kubernetes的一系列组件,对demo方便的进行压力测试,以对Saga项目的性能有一个初步的评估。</p>
+
+<h3 id="kubernetize服务">“Kubernetize”服务</h3>
+
+<p>我们的demo项目由Java编写、maven作为依赖管理工具,在项目中引入了fabric8插件,编译程序时可以顺便将jar包构建成docker镜像。首先,我们构建alpha-server镜像:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span><span class="nb">cd </span>alpha/alpha-server
+<span class="gp">$ </span>mvn clean install -Pdocker
+</code></pre>
+</div>
+
+<p>然后进入demo项目路径<code class="highlighter-rouge">saga-demo/saga-spring-demo</code>,执行相同的maven构建命令,构建完成后,我们可以看到产生了4个相关镜像:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>docker images | grep SNAPHOST <span class="c"># {version}-SNAPSHOT是构建过程中使用的镜像标签</span>
+alpha-server:0.3.0-SNAPSHOT
+booking:0.3.0-SNAPSHOT
+car:0.3.0-SNAPSHOT
+hotel:0.3.0-SNAPSHOT
+</code></pre>
+</div>
+
+<p>至此,我们已经构建好所需镜像,下一步便是编写Kubernetes所需的资源文件,这一步我们不再赘述,项目中已经有写好的yaml文件,路径在<code class="highlighter-rouge">saga-demo/saga-k8s-resources</code>,目录结构如下:</p>
+
+<pre><code class="language-base">.
+├── base
+│ ├── alpha.yaml
+│ ├── jmeter-collector.yaml
+│ └── postgresql.yaml
+├── README.md
+└── spring-demo
+ ├── booking.yaml
+ ├── car.yaml
+ ├── hotel.yaml
+ └── test
+ ├── jmeter.configmap.yaml
+ └── jmeter.yaml
+</code></pre>
+
+<p>其中<code class="highlighter-rouge">base</code>目录包含了alpha-server,postgresql以及用于收集测试报告的jmeter-collector3个服务。<code class="highlighter-rouge">spring-demo</code>目录包含了demo项目的所有服务,<code class="highlighter-rouge">spring-demo/test</code>路径下包含了对demo测试所需的服务。</p>
+
+<p>我们通过最基础的deployment和service对项目进行部署,程序之间通过域名互相访问,通过<code class="highlighter-rouge">kubectl</code>命令对Kubernetes资源进行部署:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl create ns servicecomb <span class="c"># 默认所有服务都在servicecomb namespace下</span>
+<span class="gp">$ </span>kubectl apply -f ./base
+<span class="gp">$ </span>kubectl apply -f ./spring-demo
+</code></pre>
+</div>
+
+<p>我们通过<code class="highlighter-rouge">kubectl exec</code>命令进入一个pod,通过curl命令测试booking程序:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl <span class="nb">exec</span> -it -n servicecomb alpha-server-xxxxx
+<span class="gp">$ </span>curl http://booking.servicecomb:8083/booking/test/2/2
+resp: OK
+</code></pre>
+</div>
+
+<p>至此,我们的demo项目就已经运行起来了。</p>
+
+<h3 id="部署jmeter">部署JMeter</h3>
+
+<p>我们选用<a href="https://jmeter.apache.org/">JMeter</a>作为压测工具,<a href="https://hub.docker.com/">Docker Hub</a>上已有公共镜像<a href="https://hub.docker.com/r/justb4/jmeter/">justb4/jmeter</a>,该镜像比较成熟,启动前会先侦测系统中可用内存,按照一定比例为jmeter申请jvm内存,可以最大化、合理的利用系统资源。</p>
+
+<p>当我们部署JMeter时,为了保持测试的灵活性,一般需要将JMeter脚本单独存储,而JMeter程序可以通过某种方式获取测试脚本,进而保证测试配置可以单独修改,不需要重新构建JMeter镜像。在Kubernetes中,我们可以将JMeter的配置文件存放于<a href="https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/">ConfigMap</a>,并通过<a href="https://kubernetes.io/docs/concepts/storage/volumes/">VolumeMount</a>挂载到JMeter容器的指定目录,这样,当我们需要修改测试配置时,只需修改ConfigMap,并重新部署JMeter deployment,即可完成配置的更新。</p>
+
+<p>部署ConfigMap命令如下:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl apply -f spring-demo/test/jmeter.configmap.yaml
+</code></pre>
+</div>
+
+<h3 id="jmeter-镜像改造">JMeter 镜像改造</h3>
+
+<p>由于原有的JMeter容器执行完测试之后就退出了,如果在单机环境、仅运行docker容器的环境下,我们可以在执行<code class="highlighter-rouge">docker run</code>命令时通过-v参数将宿主机目录挂载到容器中,以保存测试的结果。但是Kubernetes环境,每个pod部署时都是根据一定的算法分配到不同节点上的,节点即是容器的宿主机。但是,登录到节点并找到相应目录来查看结果似乎是非常“不体面”的姿势,因此需要构建一个服务,收集JMeter生成的报告,并能够方便的展示。为此,我们用go语言实现了一个简单的文件上传服务,并附带静态文件服务。该服务收到JMeter测试报告达成的tgz压缩包,将其解压到相应静态文件服务目录中,这样,我们就可以方便的在集群中查看测试结果。该服务就是上文提到的jmeter-collector服务。</p>
+
+<p>这样一来,我们还需要对JMeter服务进行一些小改造,当执行完JMeter测试后,我们通过一个脚本将测试结果目录打包上传到jmeter-collector服务。这些改造都已经完成并做好了相应的镜像,直接使用项目中的资源即可:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl apply -f spring-demo/test/jmeter.yaml
+</code></pre>
+</div>
+
+<p>现在,我们已经配置好JMeter相关资源,执行<code class="highlighter-rouge">kubectl logs</code>检查JMeter运行状况:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl get pod -n servicecomb | grep spring-demo-jmeter
+spring-demo-jmeter-xxxxx
+<span class="gp">$ </span>kubectl logs -f -n servicecomb pring-demo-jmeter-xxxxx
+...
+summary + 420 <span class="k">in </span>00:00:22 <span class="o">=</span> 18.8/s Avg: 214 Min: 111 Max: 471 Err: 207 <span class="o">(</span>49.29%<span class="o">)</span> Active: 12 Started: 12 Finished: 0
+</code></pre>
+</div>
+
+<p>可以看到JMeter已经开始逐步增加测试线程进行压测了。</p>
+
+<p>由于我们用deployment部署JMeter,当执行结束后,容器正常退出,Kubernetes会重新启动容器,将测试服务再次拉起。因此测试会持续进行,直到我们将deployment删除。</p>
+
+<p>至此,我们已经完成了demo和相应的压力测试服务,整个集群中相关资源的结构如下图所示:</p>
+
+<p><img src="https://github.com/crystaldust/incubator-servicecomb-website/raw/blogs/loadtest-saga-with-k8s/assets/images/spring-demo.jpg" alt="demo-and-test-arch" /></p>
+
+<p>JMeter服务通过ConfigMap读取测试脚本,然后对booking服务发起压力测试,测试结束后,将结果上传至jmeter-collector服务。</p>
+
+<h3 id="查看测试结果">查看测试结果</h3>
+
+<p>JMeter容器运行完成后,在容器内生成了测试结果文件,并调用upload脚本打包上传到jmeter-collector服务,可以通过该服务直接在页面上查看结果。在Kubernetes中,在集群外部访问服务有两种方式:LoadBalancer或NodePort,前者一般由提供Kubernetes集群服务的云服务厂商提供,后者则可以通过节点的IP和端口来访问某个服务。由于我们使用了本地部署的Kubernetes集群,因此我们使用NodePort来查看访问结果。</p>
+
+<p>首先,调用<code class="highlighter-rouge">kubectl edit</code>命令,编辑jmeter-collector服务:</p>
+
+<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>kubectl edit svc -n servicecomb jmeter-collector
+<span class="c"># in the editor:</span>
+spec:
+ <span class="nb">type</span>: NodePort <span class="c">## 插入此行,注意yaml文件空格缩进</span>
+ exteranlIPs: <span class="o">[</span><span class="s2">"192.168.43.70"</span><span class="o">]</span> <span class="c">## 插入此行,根据Kubernetes集群中节点IP来设置</span>
+ ports:
+ - port: 80
+ targetPort: 8883
+ <span class="c">#....</span>
+</code></pre>
+</div>
+
+<p>在笔者的环境中,制定了IP为192.168.43.70的节点作为NodePort的IP,对外暴露80端口,因此,在浏览器中直接访问<code class="highlighter-rouge">http://192.168.43.70</code>即可查看测试报告的结果了,结果如下图所示:</p>
+
+<p><img src="https://github.com/crystaldust/incubator-servicecomb-website/raw/blogs/loadtest-saga-with-k8s/assets/images/jmeter-collector.png" alt="jmeter-collector-dashboard" /></p></content><author><name>Zhen Ju</name><email>juzhenatpku@gmail.com</email><uri>https://github.com/crystaldust</uri></author><category term="microservice" /><category term="servicemesh" /><category term="saga" /><summary type="html">如何使用Kubernetes方便的对Saga进行性能测试</summary></ [...]
<h2 id="ddd场景极速开发">——DDD、场景、极速开发</h2>
<p>在今年的LC3大会上,ServiceComb展台所展示的demo视频<code class="highlighter-rouge">“30分钟开发雏形CRM应用”</code>引起了参会者的广泛关注,大家纷纷对其背后的技术表现出浓厚的兴趣。本文将从房地产企业的客户管理管理场景入手,使用领域驱动设计,深入技术细节,详解如何快速开发落地一个微服务化的客户管理系统。</p>
@@ -1483,58 +1613,4 @@ About 80 participants attended the workshop on-site and about 300 participants w
<img src="/assets/images/lc3-workshop/13.jpg" alt="13" />
<img src="/assets/images/lc3-workshop/14.jpg" alt="14" />
<img src="/assets/images/lc3-workshop/15.jpg" alt="15" />
-<img src="/assets/images/lc3-workshop/16.jpg" alt="16" /></p></content><author><name>Wang Qilin</name><email>wangqilintech@gmail.com</email><uri>https://github.com/wangkirin</uri></author><category term="microservice" /><category term="Meetup" /><category term="report" /><summary type="html">Apache ServiceComb (incubating) Day Report</summary></entry><entry xml:lang="cn"><title type="html">LC3大会微服务Workshop-Apaceh ServiceComb(incubating) Day 演讲PPT</title><l [...]
-<a href="/assets/slides/20180627/1_How_Apache_works_jb.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong>Jean-Baptiste Onofré Apache Member,Talend的Fellow, 04年开始从事Apache软件基金会相关工作,Karaf、Camel、Carbondata等超过20个Apache项目的PMC member。</p>
-
-<p><strong>摘要:</strong>深度解读全球最大的开源软件基金会Apache,诠释什么是Apache Way,及Apache的吸引开源项目之处,结合实际项目讲述从开源到孵化再到毕业的全过程,介绍当前ServiceComb的Apache孵化状态。</p>
-
-<p><strong>《ServiceComb社区概况与Roadmap》</strong>
-<a href="/assets/slides/20180627/2_ServiceComb-introduction-jiangning.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong>姜宁 Apache Member,华为开源能力中心技术专家</p>
-
-<p><strong>摘要:</strong>介绍 Apache ServiceComb (incubating) 社区的理念,当前概况,技术走向与社区活动。</p>
-
-<p><strong>《软通动力基于ServiceComb的智能城市微服务改造历程》</strong>
-<a href="/assets/slides/20180627/3_How_Smart_City_Microserviced_Based_on_ServiceComb_from_iSoftStone.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong>鲍永伟 软通动力智慧城市业务副总裁,聚焦于云计算与大数据相关的创新技术在智慧城市的应用。</p>
-
-<p><strong>摘要:</strong>软通动力智慧城市业务涉及系统繁多并交互复杂,在进行微服务化时面临微服务粒度设计不合理、代码重复率高、大型应用微服务部署困难等阵痛,本分享介绍软通动力如何使用ServiceComb,特别是ServiceComb的Swagger API,解决阵痛的微服务化历程,使能烟囱系统互通、系统松耦合,以应对智慧城市的微服务多样性挑战。</p>
-
-<p><strong>《ServiceComb Java SDK和注册中心详解》</strong>
-<a href="/assets/slides/20180627/4_Java_sdk_details_wujimin.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong>吴继敏 Apache ServiceComb (incubating) PPMC,ServiceComb商业版本 华为云微服务引擎 原作者</p>
-
-<p><strong>摘要:</strong>介绍 ServiceComb Java Chassis、Service Center的设计细节和特性。</p>
-
-<p><strong>《ServiceComb在华为消费者云的亿级用户微服务实践》</strong>
- <a href="/assets/slides/20180627/5_Millions_Users_Solution_Based_on_ServiceComb_Microservices_from_Huawei_Consumer_Cloud_lilinfeng.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong>李林锋 华为消费者云应用市场微服务架构师,多年平台中间件、云平台、微服务框架设计和开发经验。工作之余爱好技术写作,《Netty权威指南》和《分布式服务框架原理与实践》作者</p>
-
-<p><strong>摘要:</strong>华为消费者云服务为全球100多个国家数亿华为终端用户提供精品云服务,为了支撑业务的快速发展,需要通过微服务架构驱动价值需求更敏捷和高效的交付。利用ServiceComb对SpringMVC、透明RPC开发模式的支持,业务已有的代码可以低成本的迁移到新的微服务架构,同时利用ServiceComb对Reactive异步编程模型的支持,业务实现了全栈异步化改造,相比于传统的同步阻塞式服务调用,性能提升数倍,但是资源损耗却大幅降低…更多实践案例,尽在ServiceComb在华为消费者云的亿级用户实践分享中。</p>
-
-<p><strong>《微服务的领域驱动设计》</strong>
-<a href="/assets/slides/20180627/6_DDD_in_Microservics_wanglei.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong> 王磊 微服务国内先驱,《微服务架构与实践》作者,华为微服务专家,前ThoughtWorks首席咨询师。</p>
-
-<p><strong>摘要:</strong>微服务作为新时代架构方式被业界广泛采纳,也顺理成章成为DDD领域驱动设计的理念的落地工具。本议题分享DDD领域驱动设计理念是如何与微服务友好结合和实践的。</p>
-
-<p><strong>《ServiceComb 事务一致性解决方案详解》</strong>
-<a href="/assets/slides/20180627/7_Detailed_Introduction_of_Transaction_Consistency_Solution_from_ServiceComb-Saga.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong>姜宁 Apache Member,华为开源能力中心技术专家</p>
-
-<p><strong>摘要:</strong>分享ServiceComb的分布式事务Saga解决方案与实践</p>
-
-<p><strong>《ServiceComb的ServiceMesh思考》</strong>
-<a href="/assets/slides/20180627/8_Thinking_about_ServiceMesh_in_ServiceComb.pdf">点击下载</a></p>
-
-<p><strong>主讲人:</strong>田晓亮 华为云 Service Mesh 架构师</p>
-
-<p><strong>摘要:</strong>分享ServiceComb对于服务网格Service Mesh的最新思考,以及ServiceMesh在华为云的实践。</p></content><author><name>Kirin Wang</name></author><category term="微服务" /><category term="LC3,PPT,Workshop" /><summary type="html">LC3大会微服务Workshop-Apaceh ServiceComb(incubating) Day 演讲PPT</summary></entry></feed>
\ No newline at end of file
+<img src="/assets/images/lc3-workshop/16.jpg" alt="16" /></p></content><author><name>Wang Qilin</name><email>wangqilintech@gmail.com</email><uri>https://github.com/wangkirin</uri></author><category term="microservice" /><category term="Meetup" /><category term="report" /><summary type="html">Apache ServiceComb (incubating) Day Report</summary></entry></feed>
\ No newline at end of file
diff --git a/content/sitemap.xml b/content/sitemap.xml
index 57c2775..888a34d 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -205,6 +205,10 @@
<lastmod>2018-08-28T10:00:00+08:00</lastmod>
</url>
<url>
+<loc>/cn/docs/loadtest-saga-with-kubernetes</loc>
+<lastmod>2018-09-11T10:26:28+08:00</lastmod>
+</url>
+<url>
<loc>/docs/Apache-ServiceComb-Meetup-2018-Shanghai/</loc>
<lastmod>2018-09-30T10:26:28+08:00</lastmod>
</url>
diff --git a/content/sitemap/index.html b/content/sitemap/index.html
index afb728f..a86c15a 100644
--- a/content/sitemap/index.html
+++ b/content/sitemap/index.html
@@ -389,13 +389,15 @@
<link rel="alternate" hreflang="cn" href="/cn/docs/crm-part-I/" />
+<link rel="alternate" hreflang="cn" href="/cn/docs/loadtest-saga-with-kubernetes" />
+
<link rel="alternate" hreflang="en" href="/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" />
<link rel="alternate" hreflang="cn" href="/cn/docs/Apache-ServiceComb-Meetup-2018-Shanghai/" />
<link rel="alternate" hreflang="en" href="/docs/osi-microservices/" />
-<link rel="alternate" hreflang="en" href="/cn/docs/osi-microservices/" />
+<link rel="alternate" hreflang="cn" href="/cn/docs/osi-microservices/" />
</div>
diff --git a/content/year-archive/index.html b/content/year-archive/index.html
index 8f6d48e..2afdef9 100644
--- a/content/year-archive/index.html
+++ b/content/year-archive/index.html
@@ -395,37 +395,6 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
-</a>
-
- </h2>
- <p class="archive__item-excerpt" itemprop="description">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
-</p>
-
- <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
-
-
-
-
- less than 1 minute read
-
-</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/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
</a>
@@ -1167,12 +1136,6 @@
<!-- If not equal to previous then it must be unique as sorted -->
-
-
-
-<!-- If not equal to previous then it must be unique as sorted -->
-
-
<!-- Push to group_names -->
@@ -1283,12 +1246,6 @@
<!-- If not equal to previous then it must be unique as sorted -->
-
-
-
-<!-- If not equal to previous then it must be unique as sorted -->
-
-
<!-- Push to group_names -->
@@ -1614,35 +1571,6 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
-</a>
-
- </h2>
- <p class="archive__item-excerpt" itemprop="description">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
-</p>
-
- <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
-
-
-
-
- less than 1 minute read
-
-</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/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
</a>
@@ -2023,35 +1951,6 @@
<h2 class="archive__item-title" itemprop="headline">
- <a href="/cn/docs/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
-</a>
-
- </h2>
- <p class="archive__item-excerpt" itemprop="description">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
-</p>
-
- <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i>
-
-
-
-
- less than 1 minute read
-
-</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/osi-microservices/" rel="permalink">OpenSource India Summit: Hands-on Apache ServiceComb(Incubating) MicroServices Workshop
</a>