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 2017/12/12 09:18:20 UTC
[23/57] [partial] incubator-servicecomb-website git commit: Generated
the static pages for asf-site
http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/08e1b43f/content/cn/users/use-servicecomb-in-spring-boot/index.html
----------------------------------------------------------------------
diff --git a/content/cn/users/use-servicecomb-in-spring-boot/index.html b/content/cn/users/use-servicecomb-in-spring-boot/index.html
new file mode 100644
index 0000000..c1c8f39
--- /dev/null
+++ b/content/cn/users/use-servicecomb-in-spring-boot/index.html
@@ -0,0 +1,941 @@
+<!doctype html>
+<!--
+ Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
+ Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
+ Free for personal and commercial use under the MIT license
+ https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
+-->
+<html lang="cn" class="no-js">
+ <head>
+ <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>在Spring Boot中使用ServiceComb - Apache incubator ServiceComb</title>
+
+
+
+
+<meta name="description" content="在Spring Boot中使用ServiceComb">
+
+
+
+
+<meta name="author" content="">
+
+<meta property="og:locale" content="cn">
+<meta property="og:site_name" content="Apache incubator ServiceComb">
+<meta property="og:title" content="在Spring Boot中使用ServiceComb">
+
+
+ <link rel="canonical" href="http://github.com/pages/ServiceComb/servicesomb.github.io/cn/users/use-servicecomb-in-spring-boot/">
+ <meta property="og:url" content="http://github.com/pages/ServiceComb/servicesomb.github.io/cn/users/use-servicecomb-in-spring-boot/">
+
+
+
+ <meta property="og:description" content="在Spring Boot中使用ServiceComb">
+
+
+
+ <meta name="twitter:site" content="@ServiceComb">
+ <meta name="twitter:title" content="在Spring Boot中使用ServiceComb">
+ <meta name="twitter:description" content="在Spring Boot中使用ServiceComb">
+ <meta name="twitter:url" content="">
+
+
+ <meta name="twitter:card" content="summary">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <script type="application/ld+json">
+ {
+ "@context" : "http://schema.org",
+ "@type" : "Person",
+ "name" : "Apache incubator ServiceComb",
+ "url" : "http://github.com/pages/ServiceComb/servicesomb.github.io",
+ "sameAs" : null
+ }
+ </script>
+
+
+
+ <meta name="google-site-verification" content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache incubator ServiceComb 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>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
+<script src="/assets/js/prism.js"></script>
+
+<script type="text/javascript" async
+ src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
+</script>
+
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
+
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+<link rel="stylesheet" href="/assets/css/prism.css">
+
+<!--[if lte IE 9]>
+ <style>
+ /* old IE unsupported flexbox fixes */
+ .greedy-nav .site-title {
+ padding-right: 3em;
+ }
+ .greedy-nav button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 100%;
+ }
+ </style>
+<![endif]-->
+
+<meta http-equiv="cleartype" content="on">
+
+ <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+<link href="https://fonts.cat.net/css?family=Roboto:400,500,700|Source+Code+Pro" rel="stylesheet">
+<script src="/assets/js/custom.js"></script>
+<!-- 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">
+
+ <a class="site-title active" href="/cn"><img src="//assets/images/ServiceComb-logo-1.png"></a>
+
+ <ul class="visible-links">
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/docs/quick-start/">快速入门</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a class="active" href="/cn/users/">用户手册</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/developers/">开发者手册</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/year-archive/">博文</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/faqs/">常见问题</a>
+
+ </li>
+
+ </ul>
+ <button><div class="navicon"></div></button>
+ <ul class="hidden-links hidden"></ul>
+ <div class="nav-lang">
+
+
+
+ <a href=/users/use-servicecomb-in-spring-boot/>English</a>
+
+ </div>
+ </nav>
+ </div>
+ </div>
+</div>
+
+
+
+
+
+
+<div id="main" role="main">
+
+ <div class="sidebar sticky">
+
+ <div class="back-to-home">首页 > <a href="/cn/">ServiceComb</a></div>
+
+
+
+
+
+
+
+
+
+
+
+<nav class="nav__list">
+
+ <input id="ac-toc" name="accordion-toc" type="checkbox" />
+ <label for="ac-toc">切换菜单</label>
+ <ul class="nav__items">
+
+ <li>
+
+ <span class="nav__sub-title">用户手册</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/" class="">Java Chassis系统架构</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/setup-environment/" class="">环境配置</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">开发服务提供者</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-definition/" class="">服务定义</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-contract/" class="">服务契约</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-springmvc/" class="">用SpringMVC开发微服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-jax-rs/" class="">用JAX-RS开发微服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-transparent-rpc/" class="">用透明RPC开发微服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-interface-constraints/" class="">服务接口约束</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-configurations/" class="">服务配置</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/communicate-protocol/" class="">通信协议</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/application-boot-process/" class="">程序启动逻辑</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-heartbeat/" class="">服务心跳</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">开发服务消费者</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-rest-template/" class="">使用Rest Template方式开发</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-rpc/" class="">使用RPC方式开发</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/use-service-contract/" class="">使用服务契约</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/invoke-control/" class="">调用控制</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">通用开发</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/local-develop-test/" class="">本地开发与测试</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/use-servicecomb-in-spring-boot/" class="active">在Spring Boot中使用ServiceComb</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/distributed-tracing/" class="">分布式调用链追踪</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/customized-tracing/" class="">自定义调用链打点</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">服务能力开放</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/edging-service/nginx/" class="">使用confd和Nginx做边缘服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/edging-service/zuul/" class="">使用Zuul做边缘服务</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+
+
+
+ <a href="/cn/users/metrics/"><span class="nav__sub-title nav__sub-title-with-url">监控</span></a>
+
+
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">部署</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/run-mode/" class="">运行模式</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">微服务安全</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/use-tls/" class="">使用TLS通信</a></li>
+
+ </ul>
+
+ </li>
+
+ </ul>
+</nav>
+
+
+
+ </div>
+
+
+
+ <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
+ <meta itemprop="headline" content="在Spring Boot中使用ServiceComb">
+ <meta itemprop="description" content="在Spring Boot中使用ServiceComb">
+
+ <meta itemprop="dateModified" content="August 15, 2017">
+
+ <div class="page__inner-wrap">
+
+
+ <header>
+ <h1 class="page__title" itemprop="headline">在Spring Boot中使用ServiceComb
+</h1>
+
+ </header>
+
+
+
+ <section class="page__content" itemprop="text">
+ <aside class="sidebar__right">
+<nav class="toc">
+ <!-- <header><h4 class="nav__title"><i class="fa fa-file-text"></i> 在本页上</h4></header> -->
+<ul class="toc__menu" id="markdown-toc">
+ <li><a href="#使用service-center和治理中心管理spring-cloud应用" id="markdown-toc-使用service-center和治理中心管理spring-cloud应用">使用Service Center和治理中心管理Spring Cloud应用</a> <ul>
+ <li><a href="#概念阐述" id="markdown-toc-概念阐述">概念阐述</a></li>
+ <li><a href="#场景描述" id="markdown-toc-场景描述">场景描述</a></li>
+ <li><a href="#配置说明" id="markdown-toc-配置说明">配置说明</a></li>
+ </ul>
+ </li>
+ <li><a href="#在servicecomb框架中集成spring-boot框架" id="markdown-toc-在servicecomb框架中集成spring-boot框架">在ServiceComb框架中集成Spring Boot框架</a> <ul>
+ <li><a href="#概念阐述-1" id="markdown-toc-概念阐述-1">概念阐述</a></li>
+ <li><a href="#场景描述-1" id="markdown-toc-场景描述-1">场景描述</a></li>
+ <li><a href="#servicecomb集成springboot" id="markdown-toc-servicecomb集成springboot">ServiceComb集成SpringBoot</a></li>
+ </ul>
+ </li>
+</ul>
+
+ </nav>
+</aside>
+
+<h2 id="使用service-center和治理中心管理spring-cloud应用">使用Service Center和治理中心管理Spring Cloud应用</h2>
+<h3 id="概念阐述">概念阐述</h3>
+
+<p>本小节介绍在SpringCloud原生应用中,通过改变相关配置,让SpringCloud应用使用ServiceComb微服务框架中的Service Center和治理中心。</p>
+
+<h3 id="场景描述">场景描述</h3>
+
+<ul>
+ <li>
+ <p>SpringCloud应用默认情况下由Spring Cloud Eureka提供在分布式环境下的服务发现和服务注册的功能。</p>
+
+ <p><img src="/assets/images/manage_springcloud_application_using_sc_and_gs.png" alt="" /></p>
+ </li>
+ <li>
+ <p>ServiceComb微服务框架中的Service Center用于服务元数据以及服务实例元数据的管理和处理注册、发现,同时还支持以下功能:</p>
+ </li>
+</ul>
+
+<blockquote>
+ <ul>
+ <li>
+ <p>支持pull/push两种模式监控实例变化</p>
+ </li>
+ <li>
+ <p>实例动态扩容,海量的长连接或者短连接</p>
+ </li>
+ <li>
+ <p>支持灰度发布、服务分组等高级管理特性</p>
+ </li>
+ </ul>
+</blockquote>
+
+<p>使用SpringBoot/Cloud开发应用,并让服务运行于ServiceComb微服务SDK容器中,使用其高性能通信、服务治理、分布式事务管理等功能。</p>
+
+<h3 id="配置说明">配置说明</h3>
+
+<p>使用SpringBoot/Cloud开发应用,在原有应用的基础上按照以下步骤进行操作,即可对接ServiceComb的SDK各组件:</p>
+
+<ul>
+ <li>
+ <p><strong>步骤 1</strong> 在pom中添加依赖管理dependencyManagement:</p>
+
+ <div class="language-xml highlighter-rouge"><pre class="highlight"><code> <span class="nt"><dependencyManagement></span>
+ <span class="nt"><dependencies></span>
+ <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>io.servicecomb<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>java-chassis-dependencies<span class="nt"></artifactId></span>
+ <span class="nt"><version></span>0.1.0<span class="nt"></version></span>
+ <span class="nt"><type></span>pom<span class="nt"></type></span>
+ <span class="nt"><scope></span>import<span class="nt"></scope></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"></dependencies></span>
+ <span class="nt"></dependencyManagement></span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 2</strong> 在pom中添加依赖:</p>
+
+ <div class="language-xml highlighter-rouge"><pre class="highlight"><code> <span class="nt"><dependency></span>
+ <span class="c"><!--让服务运行于微服务sdk容器中--></span>
+ <span class="nt"><group></span>io.servicecomb<span class="nt"></group></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-provider<span class="nt"></artifactId></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"><dependency></span>
+ <span class="c"><!--使用服务中心--></span>
+ <span class="nt"><group></span>io.servicecomb<span class="nt"></group></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-discovery<span class="nt"></artifactId></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"><dependency></span>
+ <span class="c"><!--让服务运行于Spring boot embeded tomat中--></span>
+ <span class="nt"><group></span>io.servicecomb<span class="nt"></group></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-transport<span class="nt"></artifactId></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>org.springframework.boot<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-web<span class="nt"></artifactId></span>
+ <span class="nt"></dependency><dependency></span>
+ <span class="nt"><groupId></span>org.springframework.boot<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-actuator<span class="nt"></artifactId></span>
+ <span class="nt"></dependency></span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 3</strong> 配置处理链和协议:</p>
+
+ <p>在resources目录下新建microservice.yaml文件,对服务进行定义,详细定义规则请参考<a href="/cn/users/service-definition/">服务定义章节</a>,示例如下:</p>
+
+ <div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">APPLICATION_ID</span><span class="pi">:</span> <span class="s">discoverytest</span>
+ <span class="s">service_description</span><span class="pi">:</span>
+ <span class="s">name</span><span class="pi">:</span> <span class="s">discoveryServer</span>
+ <span class="s">version</span><span class="pi">:</span> <span class="s">0.0.2</span>
+ <span class="s">cse</span><span class="pi">:</span>
+ <span class="s">service</span><span class="pi">:</span>
+ <span class="s">registry</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">http://127.0.0.1:30100</span> <span class="c1">#服务注册中心地址</span>
+ <span class="err"> </span><span class="s">rest</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">0.0.0.0:8080</span> <span class="c1">#服务发布的端口</span>
+ <span class="s">handler</span><span class="pi">:</span>
+ <span class="s">chain</span><span class="pi">:</span>
+ <span class="s">Provider</span><span class="pi">:</span>
+ <span class="s">default</span><span class="pi">:</span> <span class="s">bizkeeper-provider</span> <span class="c1">#调用的处理链</span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤4</strong> 若要使用ServiceComb的服务中心:</p>
+
+ <p>在pom中添加依赖:</p>
+
+ <div class="language-java highlighter-rouge"><pre class="highlight"><code> <span class="o"><</span><span class="n">dependency</span><span class="o">></span>
+ <span class="o"><!--</span><span class="err">使用服务中心</span><span class="o">--></span>
+ <span class="o"><</span><span class="n">group</span><span class="o">></span><span class="n">io</span><span class="o">.</span><span class="na">servicecomb</span><span class="o"></</span><span class="n">group</span><span class="o">></span>
+ <span class="o"><</span><span class="n">artifactId</span><span class="o">></span><span class="n">spring</span><span class="o">-</span><span class="n">boot</span><span class="o">-</span><span class="n">starter</span><span class="o">-</span><span class="n">discovery</span><span class="o"></</span><span class="n">artifactId</span><span class="o">></span>
+ <span class="o"></</span><span class="n">dependency</span><span class="o">></span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 5</strong> 在启动类添加注解@EnableServiceComb:</p>
+
+ <div class="language-java highlighter-rouge"><pre class="highlight"><code> <span class="nd">@EnableDiscoveryClient</span>
+ <span class="nd">@SpringBootApplication</span>
+ <span class="nd">@EnableServiceComb</span> <span class="c1">//新增注解</span>
+ <span class="kd">public</span> <span class="kd">class</span> <span class="nc">xxxServer</span> <span class="o">{</span>
+ <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">SpringApplication</span><span class="o">.</span><span class="na">run</span><span class="o">(</span><span class="n">xxxServer</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">args</span><span class="o">);</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 6</strong> 定义服务契约,具体请参考<a href="/cn/users/service-contract/">服务契约</a>,示例如下:</p>
+
+ <div class="language-java highlighter-rouge"><pre class="highlight"><code> <span class="c1">// ControllerImpl.class:</span>
+ <span class="nd">@RestSchema</span><span class="o">(</span><span class="n">schemaId</span> <span class="o">=</span> <span class="s">"test"</span><span class="o">)</span>
+ <span class="nd">@RequestMapping</span><span class="o">(</span><span class="n">path</span> <span class="o">=</span> <span class="s">"/compute"</span><span class="o">,</span> <span class="n">produces</span> <span class="o">=</span> <span class="n">MediaType</span><span class="o">.</span><span class="na">TEXT_PLAIN</span><span class="o">)</span>
+ <span class="kd">public</span> <span class="kd">class</span> <span class="nc">ControllerImpl</span> <span class="o">{</span>
+ <span class="nd">@ResponseBody</span>
+ <span class="nd">@RequestMapping</span><span class="o">(</span><span class="n">path</span> <span class="o">=</span> <span class="s">"/hello/{name}"</span><span class="o">,</span> <span class="n">method</span> <span class="o">=</span> <span class="n">RequestMethod</span><span class="o">.</span><span class="na">GET</span><span class="o">)</span>
+ <span class="kd">public</span> <span class="n">String</span> <span class="nf">add</span><span class="o">(</span><span class="nd">@PathVariable</span> <span class="n">String</span> <span class="n">name</span><span class="o">)</span> <span class="o">{</span>
+ <span class="k">return</span> <span class="s">"hello"</span> <span class="o">+</span> <span class="n">name</span><span class="o">;</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 7</strong> 启动xxxServer,该服务便可注册到ServieComb的Service Center。</p>
+ </li>
+</ul>
+
+<h2 id="在servicecomb框架中集成spring-boot框架">在ServiceComb框架中集成Spring Boot框架</h2>
+<h3 id="概念阐述-1">概念阐述</h3>
+
+<p>本小节介绍了在ServiceComb框架中集成SpringBoot框架的好处和操作步骤。</p>
+
+<h3 id="场景描述-1">场景描述</h3>
+
+<h4 id="springboot框架"><strong>SpringBoot框架</strong></h4>
+
+<p> Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。Boot的功能是模块化的,通过导入Boot所谓的”starter”模块,可以将许多的依赖添加到工程中。</p>
+
+<h4 id="在servicecomb中集成springboot"><strong>在ServiceComb中集成SpringBoot</strong></h4>
+
+<p> 使用原生的ServiceComb框架开发微服务应用,如若需要使用ServiceComb框架提供的各项功能服务,需要在微服务项目工程pom文件中添加相应的依赖包,例如需要使用ServiceComb框架提供的负载均衡服务,需要添加handler-loadbalance包依赖。这样可以把ServiceComb提供的能力以starter的方式插入Spring Boot中,同时使用Spring Boot中提供的其他开箱即用的starter(例如SpringCloud)一起构建微服务。</p>
+
+<h3 id="servicecomb集成springboot">ServiceComb集成SpringBoot</h3>
+
+<p> 首先使用ServiceComb框架开发微服务应用,详细步骤请参考<a href="/cn/users/service-definition/">开发服务提供者</a>与<a href="/cn/users/develop-with-rest-template/">开发服务消费者</a>。然后在这个基础上集成SpringBoot框架。</p>
+
+<p> 在对应用进行SpringBoot框架适配前,请确保应用能够正常运行,并且能够从中央的maven库下载依赖的资源。</p>
+
+<ul>
+ <li>
+ <p><strong>步骤 1</strong> 在工程pom文件添加<dependencyManagement>节点:</p>
+
+ <div class="language-xml highlighter-rouge"><pre class="highlight"><code> <span class="nt"><dependencyManagement></span>
+ <span class="nt"><dependencies></span>
+ <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>io.servicecomb<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>java-chassis-dependencies<span class="nt"></artifactId></span>
+ <span class="nt"><version></span>0.1.0<span class="nt"></version></span>
+ <span class="nt"><type></span>pom<span class="nt"></type></span>
+ <span class="nt"><scope></span>import<span class="nt"></scope></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"></dependencies></span>
+ <span class="nt"></dependencyManagement></span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 2</strong> 添加如下依赖:</p>
+
+ <p>引入ServiceComb提供的Spring Boot依赖</p>
+
+ <div class="language-xml highlighter-rouge"><pre class="highlight"><code> <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>io.servicecomb<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-provider<span class="nt"></artifactId></span>
+ <span class="nt"></dependency></span>
+</code></pre>
+ </div>
+
+ <p>引入Spring Boot依赖</p>
+
+ <div class="language-xml highlighter-rouge"><pre class="highlight"><code> <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>org.springframework.boot<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-web<span class="nt"></artifactId></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>org.springframework.boot<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>spring-boot-starter-actuator<span class="nt"></artifactId></span>
+ <span class="nt"></dependency></span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 3</strong> 在resources目录下新建application.yml文件,文件内容如下:</p>
+
+ <div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">server</span><span class="pi">:</span>
+ <span class="s">port</span><span class="pi">:</span> <span class="s">7999</span> <span class="c1">#此处的端口为springboot服务端口</span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 4</strong> 为微服务启动类添加注解:</p>
+
+ <div class="language-java highlighter-rouge"><pre class="highlight"><code> <span class="kn">package</span> <span class="n">xxx</span>
+ <span class="kn">import</span> <span class="nn">xxx</span>
+ <span class="nd">@SpringBootApplication</span> <span class="c1">//新增注解</span>
+ <span class="nd">@EnableServiceComb</span> <span class="c1">//新增注解</span>
+ <span class="kd">public</span> <span class="kd">class</span> <span class="nc">xxxServer</span><span class="o">/</span><span class="n">Client</span> <span class="o">{</span>
+ <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="kd">final</span> <span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
+ <span class="err"> </span> <span class="n">Log4jUtils</span><span class="o">.</span><span class="na">init</span><span class="o">();</span>
+ <span class="err"> </span><span class="c1">//BeanUtils.init();</span>
+ <span class="err"> </span><span class="n">SpringApplication</span><span class="o">.</span><span class="na">run</span><span class="o">(</span><span class="n">xxxServerOrClient</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="n">args</span><span class="o">)</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p><strong>步骤 5</strong> 运行/调试应用。</p>
+ </li>
+</ul>
+
+
+ </section>
+
+ <footer class="page__meta">
+
+
+
+
+
+ </footer>
+
+
+
+
+
+ </div>
+
+
+ </article>
+
+
+
+</div>
+
+
+ <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+ <div align="center" style="margin: 0 0;">
+ <ins class="adsbygoogle"
+ style="display:block; border-bottom: initial;"
+ data-ad-client="ca-pub-7328585512091257"
+ data-ad-slot="3049671934"
+ data-ad-format="auto"></ins>
+ </div>
+
+ <div class="page__footer">
+ <footer>
+ <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+ <div class="container">
+ <div class="row justify-content-md-center">
+
+ <div class="col">
+ <ul>
+ <p class="header">资源</p>
+ <li><a href="/cn/docs/quick-start/">快速入门</a></li>
+ <li><a href="/cn/users/user-guide/">用户指南</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">贡献</p>
+ <li><a href="https://github.com/ServiceComb/ServiceComb.github.io/issues/new?title=Issue with _users/cn/use-servicecomb-in-spring-boot.md">报告本网页问题</a></li>
+ <li><a href="https://github.com/ServiceComb/ServiceComb.github.io/edit/master/_users/cn/use-servicecomb-in-spring-boot.md">在Github上编辑此页</a></li>
+ <li><a href="/cn/developers/submit-codes/">代码提交指南</a></li>
+ </ul>
+ </div>
+ <div class="col">
+ <ul class="social-icons">
+ <p class="header">社区</p>
+ <li>
+ <a href="https://groups.google.com/forum/#!forum/servicecomb-developers" target="_blank"><span class="group">开发者</span></a> |
+ <a href="https://groups.google.com/forum/#!forum/servicecomb-users" target="_blank">用户</span></a>
+ </li>
+ <li>
+ <a href="http://github.com/ServiceComb" target="_blank"><span class="github">Github</span></a>
+ </li>
+ <li>
+ <a href="https://twitter.com/ServiceComb" target="_blank"><span class="twitter">Twitter</span></a>
+ </li>
+ <li>
+ <a href="/feed.xml" target="_blank"><span class="rss">Feed</span></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+</div>
+<div class="page__footer-bottom">
+ <div>© 2017 Apache incubator 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>
+
+ </footer>
+ </div>
+
+ <script src="/assets/js/main.min.js"></script>
+
+
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-101622733-1', 'auto');
+ ga('send', 'pageview');
+</script>
+
+
+
+
+
+
+
+ </body>
+</html>
http://git-wip-us.apache.org/repos/asf/incubator-servicecomb-website/blob/08e1b43f/content/cn/users/use-tls/index.html
----------------------------------------------------------------------
diff --git a/content/cn/users/use-tls/index.html b/content/cn/users/use-tls/index.html
new file mode 100644
index 0000000..d0493fe
--- /dev/null
+++ b/content/cn/users/use-tls/index.html
@@ -0,0 +1,1048 @@
+<!doctype html>
+<!--
+ Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
+ Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
+ Free for personal and commercial use under the MIT license
+ https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
+-->
+<html lang="cn" class="no-js">
+ <head>
+ <meta charset="utf-8">
+
+<!-- begin SEO -->
+
+
+
+
+
+
+
+
+
+<title>使用TLS通信 - Apache incubator ServiceComb</title>
+
+
+
+
+<meta name="description" content="使用TLS通信">
+
+
+
+
+<meta name="author" content="">
+
+<meta property="og:locale" content="cn">
+<meta property="og:site_name" content="Apache incubator ServiceComb">
+<meta property="og:title" content="使用TLS通信">
+
+
+ <link rel="canonical" href="http://github.com/pages/ServiceComb/servicesomb.github.io/cn/users/use-tls/">
+ <meta property="og:url" content="http://github.com/pages/ServiceComb/servicesomb.github.io/cn/users/use-tls/">
+
+
+
+ <meta property="og:description" content="使用TLS通信">
+
+
+
+ <meta name="twitter:site" content="@ServiceComb">
+ <meta name="twitter:title" content="使用TLS通信">
+ <meta name="twitter:description" content="使用TLS通信">
+ <meta name="twitter:url" content="">
+
+
+ <meta name="twitter:card" content="summary">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <script type="application/ld+json">
+ {
+ "@context" : "http://schema.org",
+ "@type" : "Person",
+ "name" : "Apache incubator ServiceComb",
+ "url" : "http://github.com/pages/ServiceComb/servicesomb.github.io",
+ "sameAs" : null
+ }
+ </script>
+
+
+
+ <meta name="google-site-verification" content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />
+
+
+
+
+<!-- end SEO -->
+
+
+<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache incubator ServiceComb 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>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
+<script src="/assets/js/prism.js"></script>
+
+<script type="text/javascript" async
+ src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
+</script>
+
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
+
+<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
+<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
+<!-- For all browsers -->
+<link rel="stylesheet" href="/assets/css/main.css">
+<link rel="stylesheet" href="/assets/css/prism.css">
+
+<!--[if lte IE 9]>
+ <style>
+ /* old IE unsupported flexbox fixes */
+ .greedy-nav .site-title {
+ padding-right: 3em;
+ }
+ .greedy-nav button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 100%;
+ }
+ </style>
+<![endif]-->
+
+<meta http-equiv="cleartype" content="on">
+
+ <!-- start custom head snippets -->
+
+<!-- insert favicons. use http://realfavicongenerator.net/ -->
+<link href="https://fonts.cat.net/css?family=Roboto:400,500,700|Source+Code+Pro" rel="stylesheet">
+<script src="/assets/js/custom.js"></script>
+<!-- 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">
+
+ <a class="site-title active" href="/cn"><img src="//assets/images/ServiceComb-logo-1.png"></a>
+
+ <ul class="visible-links">
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/docs/quick-start/">快速入门</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a class="active" href="/cn/users/">用户手册</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/developers/">开发者手册</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/year-archive/">博文</a>
+
+ </li>
+
+
+ <li class="masthead__menu-item">
+
+
+
+ <a href="/cn/faqs/">常见问题</a>
+
+ </li>
+
+ </ul>
+ <button><div class="navicon"></div></button>
+ <ul class="hidden-links hidden"></ul>
+ <div class="nav-lang">
+
+
+
+ <a href=/users/use-tls/>English</a>
+
+ </div>
+ </nav>
+ </div>
+ </div>
+</div>
+
+
+
+
+
+
+<div id="main" role="main">
+
+ <div class="sidebar sticky">
+
+ <div class="back-to-home">首页 > <a href="/cn/">ServiceComb</a></div>
+
+
+
+
+
+
+
+
+
+
+
+<nav class="nav__list">
+
+ <input id="ac-toc" name="accordion-toc" type="checkbox" />
+ <label for="ac-toc">切换菜单</label>
+ <ul class="nav__items">
+
+ <li>
+
+ <span class="nav__sub-title">用户手册</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/" class="">Java Chassis系统架构</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/setup-environment/" class="">环境配置</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">开发服务提供者</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-definition/" class="">服务定义</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-contract/" class="">服务契约</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-springmvc/" class="">用SpringMVC开发微服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-jax-rs/" class="">用JAX-RS开发微服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-transparent-rpc/" class="">用透明RPC开发微服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-interface-constraints/" class="">服务接口约束</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-configurations/" class="">服务配置</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/communicate-protocol/" class="">通信协议</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/application-boot-process/" class="">程序启动逻辑</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/service-heartbeat/" class="">服务心跳</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">开发服务消费者</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-rest-template/" class="">使用Rest Template方式开发</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/develop-with-rpc/" class="">使用RPC方式开发</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/use-service-contract/" class="">使用服务契约</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/invoke-control/" class="">调用控制</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">通用开发</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/local-develop-test/" class="">本地开发与测试</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/use-servicecomb-in-spring-boot/" class="">在Spring Boot中使用ServiceComb</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/distributed-tracing/" class="">分布式调用链追踪</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/customized-tracing/" class="">自定义调用链打点</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">服务能力开放</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/edging-service/nginx/" class="">使用confd和Nginx做边缘服务</a></li>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/edging-service/zuul/" class="">使用Zuul做边缘服务</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+
+
+
+ <a href="/cn/users/metrics/"><span class="nav__sub-title nav__sub-title-with-url">监控</span></a>
+
+
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">部署</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/run-mode/" class="">运行模式</a></li>
+
+ </ul>
+
+ </li>
+
+ <li>
+
+ <span class="nav__sub-title">微服务安全</span>
+
+
+
+ <ul>
+
+
+
+
+
+
+
+ <li><a href="/cn/users/use-tls/" class="active">使用TLS通信</a></li>
+
+ </ul>
+
+ </li>
+
+ </ul>
+</nav>
+
+
+
+ </div>
+
+
+
+ <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
+ <meta itemprop="headline" content="使用TLS通信">
+ <meta itemprop="description" content="使用TLS通信">
+
+ <meta itemprop="dateModified" content="August 15, 2017">
+
+ <div class="page__inner-wrap">
+
+
+ <header>
+ <h1 class="page__title" itemprop="headline">使用TLS通信
+</h1>
+
+ </header>
+
+
+
+ <section class="page__content" itemprop="text">
+ <h2 id="场景描述">场景描述</h2>
+
+<p>用户通过简单的配置即可启用TLS通信,以保障数据的传输安全。</p>
+
+<h2 id="外部服务通信配置">外部服务通信配置</h2>
+
+<p>与外部服务通信相关的配置写在microservice.yaml文件中。</p>
+
+<ul>
+ <li>
+ <p>服务中心TLS通信配置
+ 微服务与服务中心的连接可以通过将http改为https启用TLS通信,配置示例如下:</p>
+
+ <div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">cse</span><span class="pi">:</span>
+ <span class="s">service</span><span class="pi">:</span>
+ <span class="s">registry</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">https://127.0.0.1:30100</span>
+</code></pre>
+ </div>
+ </li>
+ <li>
+ <p>服务提供者启用TLS通信
+ 服务提供者在配置服务监听地址时,可以通过在地址后面追加<code class="highlighter-rouge">?sslEnabled=true</code>开启TLS通信,示例如下:</p>
+
+ <div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">cse</span><span class="pi">:</span>
+ <span class="s">rest</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">0.0.0.0:8080?sslEnabled=true</span>
+ <span class="s">highway</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">0.0.0.0:7070?sslEnabled=true</span>
+</code></pre>
+ </div>
+ </li>
+</ul>
+
+<h2 id="证书配置">证书配置</h2>
+
+<p>证书配置项写在microservice.yaml文件中,支持统一制定证书,也可以添加tag进行更细粒度的配置,有tag的配置会覆盖全局配置,配置格式如下:</p>
+
+<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">ssl.[tag].[property]</span>
+</code></pre>
+</div>
+
+<p>证书配置项见下表证书配置项说明表。</p>
+
+<p><strong>表1 证书配置项说明表</strong></p>
+
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: left">配置项</th>
+ <th style="text-align: left">默认值</th>
+ <th style="text-align: left">取值范围</th>
+ <th style="text-align: left">是否必选</th>
+ <th style="text-align: left">含义</th>
+ <th style="text-align: left">注意</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left">ssl.protocols</td>
+ <td style="text-align: left">TLSv1.2</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">协议列表</td>
+ <td style="text-align: left">使用逗号分隔</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.ciphers</td>
+ <td style="text-align: left">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,<br />TLS_RSA_WITH_AES_256_GCM_SHA384,<br />TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,<br />TLS_RSA_WITH_AES_128_GCM_SHA256</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">算法列表</td>
+ <td style="text-align: left">使用逗号分隔</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.authPeer</td>
+ <td style="text-align: left">true</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">是否认证对端</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.checkCN.host</td>
+ <td style="text-align: left">true</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">是否对证书的CN进行检查</td>
+ <td style="text-align: left">该配置项只对Consumer端,并且使用http协议有效,即Consumser端使用rest通道有效。对于Provider端、highway通道等无效。检查CN的目的是防止服务器被钓鱼,参考标准定义:<a href="https://tools.ietf.org/html/rfc2818。">https://tools.ietf.org/html/rfc2818。</a></td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.trustStore</td>
+ <td style="text-align: left">trust.jks</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">信任证书文件</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.trustStoreType</td>
+ <td style="text-align: left">JKS</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">信任证书类型</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.trustStoreValue</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">信任证书密码</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.keyStore</td>
+ <td style="text-align: left">server.p12</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">身份证书文件</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.keyStoreType</td>
+ <td style="text-align: left">PKCS12</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">身份证书类型</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.keyStoreValue</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">身份证书密码</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.crl</td>
+ <td style="text-align: left">revoke.crl</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">吊销证书文件</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl.sslCustomClass</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">io.servicecomb.foundation.ssl.SSLCustom的实现类</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">SSLCustom类的实现,用于开发者转换密码、文件路径等。</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ </tbody>
+</table>
+
+<blockquote>
+ <p><strong>说明</strong>:</p>
+
+ <ul>
+ <li>默认的协议算法是高强度加密算法,JDK需要安装对应的策略文件,参考:<a href="http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html">http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html</a>。 您可以在配置文件配置使用非高强度算法。</li>
+ <li>微服务消费者,可以针对不同的提供者指定证书(当前证书是按照HOST签发的,不同的提供者都使用一份证书存储介质,这份介质同时给微服务访问服务中心和配置中心使用)。</li>
+ </ul>
+</blockquote>
+
+<h2 id="服务中心的证书配置">服务中心的证书配置</h2>
+
+<p>目前支持使用环境变量来配置服务中心的TLS认证方式,默认开启TLS通信,双向认证模式,认证对端时同时校验对端是否匹配证书(CommonName)字段。服务管理中心的证书配置项说明见下表服务中心TLS证书配置项说明。</p>
+
+<p><strong>表2 服务中心TLS证书配置项说明</strong></p>
+
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: left">配置项</th>
+ <th style="text-align: left">默认值</th>
+ <th style="text-align: left">取值范围</th>
+ <th style="text-align: left">是否必选</th>
+ <th style="text-align: left">含义</th>
+ <th style="text-align: left">注意</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left">CSE_SSL_MODE</td>
+ <td style="text-align: left">1</td>
+ <td style="text-align: left">1/0<br />0:HTTPS<br />1:HTTP</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">设置协议模式</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">CSE_SSL_VERIFY_CLIENT</td>
+ <td style="text-align: left">1</td>
+ <td style="text-align: left">1/0<br />0:HTTPS<br />1:HTTP</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">设置HTTPS模式下是否认证对端</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">CSE_SSL_PASSPHASE</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">设置HTTPS模式下的证书密钥访问密码</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>服务管理中心配置文件为$APP_ROOT/conf/app.conf,配置项见,该配置暂不支持环境变量方式设置。</p>
+
+<p>表3 服务中心配置文件</p>
+
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: left">配置项</th>
+ <th style="text-align: left">默认值</th>
+ <th style="text-align: left">取值范围</th>
+ <th style="text-align: left">是否必选</th>
+ <th style="text-align: left">含义</th>
+ <th style="text-align: left">注意</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left">ssl_protocols</td>
+ <td style="text-align: left">TLSv1.2</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">通信使用的SSL版本</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">ssl_ciphers</td>
+ <td style="text-align: left">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,<br />TLS_RSA_WITH_AES_256_GCM_SHA384,<br />TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,<br />TLS_RSA_WITH_AES_128_GCM_SHA256,<br />TLS_RSA_WITH_AES_128_CBC_SHA</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">否</td>
+ <td style="text-align: left">配置使用算法列表</td>
+ <td style="text-align: left">由于服务中心支持HTTP/2协议,所以ssl_ciphers必须配置有TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256算法。TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA被列为HTTP/2协议的不安全算法黑名单,但为了客户端算法兼容性,存在时必须配置到最后一位。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="密钥物料及证书存放路径">密钥物料及证书存放路径</h2>
+
+<p><strong>表4 密钥物料及证书存放路径</strong></p>
+
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: left">配置项</th>
+ <th style="text-align: left">含义</th>
+ <th style="text-align: left">对应环境变量</th>
+ <th style="text-align: left">注意</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: left">/</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">INSTALL_ROOT</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/etc</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/etc/cipher</td>
+ <td style="text-align: left">密钥物料存放目录</td>
+ <td style="text-align: left">CIPHER_ROOT</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/etc/ssl</td>
+ <td style="text-align: left">证书存放目录</td>
+ <td style="text-align: left">SSL_ROOT</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/etc/ssl/trust.cer</td>
+ <td style="text-align: left">授信CA</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/etc/ssl/server_key.pem</td>
+ <td style="text-align: left">已加密服务端私钥文件</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/etc/ssl/server.cer</td>
+ <td style="text-align: left">服务器证书</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/etc/ssl/cert_pwd</td>
+ <td style="text-align: left">用于存放解密私钥的对称加密密文文件</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/apps</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/apps/ServiceCenter</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">APP_ROOT</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/apps/ServiceCenter/conf</td>
+ <td style="text-align: left">服务管理中心配置文件目录</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ <tr>
+ <td style="text-align: left">/opt/CSE/apps/ServiceCenter/conf/app.conf</td>
+ <td style="text-align: left">应用配置文件</td>
+ <td style="text-align: left">-</td>
+ <td style="text-align: left">-</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="示例代码">示例代码</h2>
+
+<p>microservice.yaml文件中启用TLS通信的配置示例如下:</p>
+<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">cse</span><span class="pi">:</span>
+ <span class="s">service</span><span class="pi">:</span>
+ <span class="s">registry</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">https://127.0.0.1:30100</span>
+ <span class="s">rest</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">0.0.0.0:8080?sslEnabled=true</span>
+ <span class="s">highway</span><span class="pi">:</span>
+ <span class="s">address</span><span class="pi">:</span> <span class="s">0.0.0.0:7070?sslEnabled=true</span>
+
+<span class="c1">#########SSL options</span>
+<span class="s">ssl.protocols</span><span class="pi">:</span> <span class="s">TLSv1.2</span>
+<span class="s">ssl.authPeer</span><span class="pi">:</span> <span class="s">true</span>
+<span class="s">ssl.checkCN.host</span><span class="pi">:</span> <span class="s">true</span>
+
+<span class="c1">#########certificates config</span>
+<span class="s">ssl.trustStore</span><span class="pi">:</span> <span class="s">trust.jks</span>
+<span class="s">ssl.trustStoreType</span><span class="pi">:</span> <span class="s">JKS</span>
+<span class="s">ssl.trustStoreValue</span><span class="pi">:</span> <span class="s">Changeme_123</span>
+<span class="s">ssl.keyStore</span><span class="pi">:</span> <span class="s">server.p12</span>
+<span class="s">ssl.keyStoreType</span><span class="pi">:</span> <span class="s">PKCS12</span>
+<span class="s">ssl.keyStoreValue</span><span class="pi">:</span> <span class="s">Changeme_123</span>
+<span class="s">ssl.crl</span><span class="pi">:</span> <span class="s">revoke.crl</span>
+<span class="s">ssl.sslCustomClass</span><span class="pi">:</span> <span class="s">io.servicecomb.demo.DemoSSLCustom</span>
+</code></pre>
+</div>
+
+
+ </section>
+
+ <footer class="page__meta">
+
+
+
+
+
+ </footer>
+
+
+
+
+
+ </div>
+
+
+ </article>
+
+
+
+</div>
+
+
+ <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
+ <div align="center" style="margin: 0 0;">
+ <ins class="adsbygoogle"
+ style="display:block; border-bottom: initial;"
+ data-ad-client="ca-pub-7328585512091257"
+ data-ad-slot="3049671934"
+ data-ad-format="auto"></ins>
+ </div>
+
+ <div class="page__footer">
+ <footer>
+ <!-- start custom footer snippets -->
+
+<!-- end custom footer snippets -->
+ <div class="container">
+ <div class="row justify-content-md-center">
+
+ <div class="col">
+ <ul>
+ <p class="header">资源</p>
+ <li><a href="/cn/docs/quick-start/">快速入门</a></li>
+ <li><a href="/cn/users/user-guide/">用户指南</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">贡献</p>
+ <li><a href="https://github.com/ServiceComb/ServiceComb.github.io/issues/new?title=Issue with _users/cn/use-tls.md">报告本网页问题</a></li>
+ <li><a href="https://github.com/ServiceComb/ServiceComb.github.io/edit/master/_users/cn/use-tls.md">在Github上编辑此页</a></li>
+ <li><a href="/cn/developers/submit-codes/">代码提交指南</a></li>
+ </ul>
+ </div>
+ <div class="col">
+ <ul class="social-icons">
+ <p class="header">社区</p>
+ <li>
+ <a href="https://groups.google.com/forum/#!forum/servicecomb-developers" target="_blank"><span class="group">开发者</span></a> |
+ <a href="https://groups.google.com/forum/#!forum/servicecomb-users" target="_blank">用户</span></a>
+ </li>
+ <li>
+ <a href="http://github.com/ServiceComb" target="_blank"><span class="github">Github</span></a>
+ </li>
+ <li>
+ <a href="https://twitter.com/ServiceComb" target="_blank"><span class="twitter">Twitter</span></a>
+ </li>
+ <li>
+ <a href="/feed.xml" target="_blank"><span class="rss">Feed</span></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+</div>
+<div class="page__footer-bottom">
+ <div>© 2017 Apache incubator 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>
+
+ </footer>
+ </div>
+
+ <script src="/assets/js/main.min.js"></script>
+
+
+
+
+ <script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-101622733-1', 'auto');
+ ga('send', 'pageview');
+</script>
+
+
+
+
+
+
+
+ </body>
+</html>