You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/03/20 10:37:21 UTC
[servicecomb-docs] 01/02: fix some code indention problems
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-docs.git
commit e78192a2b21bbde119cbf53d5ebeb644c8a897c5
Author: liubao <bi...@qq.com>
AuthorDate: Fri Mar 20 16:54:41 2020 +0800
fix some code indention problems
---
java-chassis-reference/zh_CN/docs/edge/nginx.md | 62 ++---
.../zh_CN/docs/transports/http2.md | 17 +-
.../zh_CN/docs/transports/rest-over-servlet.md | 295 +++++++++++----------
3 files changed, 184 insertions(+), 190 deletions(-)
diff --git a/java-chassis-reference/zh_CN/docs/edge/nginx.md b/java-chassis-reference/zh_CN/docs/edge/nginx.md
index 2f0d633..f76eb9c 100644
--- a/java-chassis-reference/zh_CN/docs/edge/nginx.md
+++ b/java-chassis-reference/zh_CN/docs/edge/nginx.md
@@ -26,43 +26,38 @@ Nginx \(engine x\)是一个高性能的HTTP和反向代理服务器,具有负
* 检查服务中心健康状态
- ```
- GET 127.0.0.1:30100/health
- ```
+```
+GET 127.0.0.1:30100/health
+```
* 获取所有微服务信息
- ```
- GET 127.0.0.1:30100/registry/v3/microservices
- ```
+```
+GET 127.0.0.1:30100/registry/v3/microservices
+```
* 获取指定id的微服务信息
-> 1. 首先根据微服务信息获取serviceId
->
-> ```
-> GET 127.0.0.1:30100/registry/v3/existence?type=microservice&appId={appId}&serviceName={serviceName}&version={version}
-> ```
->
-> 2. 根据上述接口返回的serviceId获取微服务完整信息
->
-> GET 127.0.0.1:30100/registry/v3/microservices/{serviceId}
+ * 首先根据微服务信息获取serviceId
-* 获取指定微服务的所有实例信息
+ GET 127.0.0.1:30100/registry/v3/existence?type=microservice&appId={appId}&serviceName={serviceName}&version={version}
+
+ * 根据上述接口返回的serviceId获取微服务完整信息
- ```
- GET 127.0.0.1:30100/registry/v3/microservices/{serviceId}/instances
+ GET 127.0.0.1:30100/registry/v3/microservices/{serviceId}
+
+* 获取指定微服务的所有实例信息
+ GET 127.0.0.1:30100/registry/v3/microservices/{serviceId}/instances
+
需要在header中添加:"X-ConsumerId:{serviceId}"。
- ```
* 查找微服务实例信息
- ```
- GET 127.0.0.1:30100/registry/v3/instances?appId={appId}&serviceName={serviceName}&version={version}
-
+ GET 127.0.0.1:30100/registry/v3/instances?appId={appId}&serviceName={serviceName}&version={version}
+
需要在header中添加: "X-ConsumerId:{serviceId}"。
- ```
+
#### 注意:在实际开发中请访问实际的service-center访问地址,并将上述url中{}的变量替换成具体值,http返回的数据均为json格式
@@ -73,33 +68,24 @@ Nginx \(engine x\)是一个高性能的HTTP和反向代理服务器,具有负
* 获取所有微服务信息
- ```java
- List<Microservice> getAllMicroservices();
- ```
+ List<Microservice> getAllMicroservices();
* 获取微服务唯一标识
- ```java
- String getMicroserviceId(String appId, String microserviceName, String versionRule);
- ```
+ String getMicroserviceId(String appId, String microserviceName, String versionRule);
* 根据微服务唯一标识查询微服务静态信息
- ```java
- Microservice getMicroservice(String microserviceId);
- ```
+ Microservice getMicroservice(String microserviceId);
* 根据多个微服务唯一标识查询所有微服务实例信息
- ```java
- List<MicroserviceInstance> getMicroserviceInstance(String consumerId, String providerId);
- ```
+ List<MicroserviceInstance> getMicroserviceInstance(String consumerId, String providerId);
* 按照app+interface+version查询实例endpoints信息
- ```java
- List<MicroserviceInstance> findServiceInstance(String consumerId, String appId, String serviceName,String versionRule);
- ```
+ List<MicroserviceInstance> findServiceInstance(String consumerId, String appId, String serviceName,String versionRule);
+
通过上述http接口可获取到服务中心的微服务和其实例的信息,从而通过confd动态更新nginx配置。
diff --git a/java-chassis-reference/zh_CN/docs/transports/http2.md b/java-chassis-reference/zh_CN/docs/transports/http2.md
index aa69706..cc3e109 100644
--- a/java-chassis-reference/zh_CN/docs/transports/http2.md
+++ b/java-chassis-reference/zh_CN/docs/transports/http2.md
@@ -11,24 +11,19 @@
* 启用h2\(Http2 + TLS\)进行通信
服务端在配置服务监听地址时,可以通过在地址后面追加`sslEnabled=true`开启TLS通信,具体介绍见[使用TLS通信](../security/tls.md)章节。然后再追加`protocol=http2`启用h2通信。示例如下:
- ```yaml
- servicecomb:
- rest:
- address: 0.0.0.0:8080?sslEnabled=true&protocol=http2
- ```
+ servicecomb:
+ rest:
+ address: 0.0.0.0:8080?sslEnabled=true&protocol=http2
* 启用h2c\(Http2 without TLS\)进行通信
服务端在配置服务监听地址时,可以通过在地址后面追加`protocol=http2`启用h2c通信。示例如下:
- ```yaml
- servicecomb:
- rest:
- address: 0.0.0.0:8080?protocol=http2
- ```
+ servicecomb:
+ rest:
+ address: 0.0.0.0:8080?protocol=http2
* 客户端会通过从服务中心读取服务端地址中的配置来使用http2进行通信。
-具体实例可以参考 [http2-it-tests](https://github.com/apache/servicecomb-java-chassis/blob/master/integration-tests/it-consumer/src/main/java/org/apache/servicecomb/it/ConsumerMain.java)
## http2 server 端配置项
diff --git a/java-chassis-reference/zh_CN/docs/transports/rest-over-servlet.md b/java-chassis-reference/zh_CN/docs/transports/rest-over-servlet.md
index 3dcb026..f83d9bc 100644
--- a/java-chassis-reference/zh_CN/docs/transports/rest-over-servlet.md
+++ b/java-chassis-reference/zh_CN/docs/transports/rest-over-servlet.md
@@ -8,6 +8,7 @@ REST over Servlet对应使用web容器部署运行,需要新建一个servlet
建议使用ServiceComb的部署解耦特性,无论是consumer,还是producer,在代码中都不要感知web root以及url pattern,这样ServiceComb在运行时,会自动适配producer实例的web root以及url pattern。
对于一些遗留系统改造,用户期望继续使用restTemplate.getForObject("cse://serviceName/mywebapp/rest/application"...),这个时候,用户必须将接口定义的path定位为: /mywebapp/rest/application,例如:
+
```
@RestSchema(schemaId = "test")
@RequestMapping(path = "/mywebapp/rest/application")
@@ -15,6 +16,7 @@ REST over Servlet对应使用web容器部署运行,需要新建一个servlet
尽管如此,仍然推荐使用部署形态无关的方式来编码,可以减少后续由于部署形态变化,带来的修改代码问题。
## maven依赖
+
```xml
<dependency>
<groupId>org.apache.servicecomb</groupId>
@@ -24,162 +26,173 @@ REST over Servlet对应使用web容器部署运行,需要新建一个servlet
## 配置说明
与servlet机制配合,涉及到以下几个概念:
+
* 启动spring context
注意以下几种启动方式,是N选1的关系,不要同时使用。
- * 不使用springMVC的UI或RestController
- ```xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:META-INF/spring/*.bean.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.apache.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
- </listener>
- </web-app>
- ```
- 其中`classpath*:META-INF/spring/*.bean.xml`,无论任何情况,都可以不在contextConfigLocation中配置,因为ServiceComb机制会确保加载路径中包含它。
- 这里仅仅是个示例,表示如果使用者需要定制contextConfigLocation,可以使用这个方法。
+
+ * 不使用springMVC的UI或RestController
+
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>classpath*:META-INF/spring/*.bean.xml</param-value>
+ </context-param>
+ <listener>
+ <listener-class>org.apache.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
+ </listener>
+ </web-app>
+
+ 其中`classpath*:META-INF/spring/*.bean.xml`可以不在contextConfigLocation中配置,因为ServiceComb机制会确保加载路径中包含它。
+ 这里仅仅是个示例,表示如果使用者需要定制contextConfigLocation,可以使用这个方法。
- * 使用springMVC的UI或RestController,且存在org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet
- ```xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <servlet>
- <servlet-name>SpringMVCServlet</servlet-name>
- <servlet-class>org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>SpringMVCServlet</servlet-name>
- <url-pattern>yourUrlPattern</url-pattern>
- </servlet-mapping>
- </web-app>
- ```
- **注意:**
- 该servlet不是ServiceComb的处理入口,仅仅是UI或RestController的处理入口
- * 使用springMVC的UI或RestController,且不存在org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet
- 需要继承springMVC的DispatcherServlet,再按CseDispatcherServlet的方式,配置自己的实现类
- ```
- @Override
- protected WebApplicationContext createWebApplicationContext(ApplicationContext parent){
- setContextClass(CseXmlWebApplicationContext.class);
- return super.createWebApplicationContext(parent);
- }
- ```
+ * 使用springMVC的UI或RestController,且存在org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet
+
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <servlet>
+ <servlet-name>SpringMVCServlet</servlet-name>
+ <servlet-class>org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>SpringMVCServlet</servlet-name>
+ <url-pattern>yourUrlPattern</url-pattern>
+ </servlet-mapping>
+ </web-app>
+
+
+ **注意:**
+ 该servlet不是ServiceComb的处理入口,仅仅是UI或RestController的处理入口
+
+ * 使用springMVC的UI或RestController,且不存在org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet
+ 需要继承springMVC的DispatcherServlet,再按CseDispatcherServlet的方式,配置自己的实现类
+
+ @Override
+ protected WebApplicationContext createWebApplicationContext(ApplicationContext parent){
+ setContextClass(CseXmlWebApplicationContext.class);
+ return super.createWebApplicationContext(parent);
+ }
+
+
* ServiceComb servlet
url pattern根据业务自身规划设置即可,下面的`/rest/*`仅仅是示例,不是固定值。
url pattern必须以`/*`结尾
以下两种声明方式也是多选一的关系,不要同时使用
- * 标准声明
- ```xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <servlet>
- <servlet-name>RestServlet</servlet-name>
- <servlet-class>org.apache.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- <async-supported>true</async-supported>
- </servlet>
- <servlet-mapping>
- <servlet-name>RestServlet</servlet-name>
- <url-pattern>/rest/*</url-pattern>
- </servlet-mapping>
- </web-app>
- ```
- * 快捷声明
- 在microservice.yaml文件中指定urlPattern,ServiceComb启动时会自动创建RestServlet,并设置相应的urlPattern:
- ```yaml
- servicecomb.rest.servlet.urlPattern: /rest/*
- ```
+
+ * 标准声明
+
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <servlet>
+ <servlet-name>RestServlet</servlet-name>
+ <servlet-class>org.apache.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ <async-supported>true</async-supported>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>RestServlet</servlet-name>
+ <url-pattern>/rest/*</url-pattern>
+ </servlet-mapping>
+ </web-app>
+
+
+ * 快捷声明
+
+ 在microservice.yaml文件中指定urlPattern,ServiceComb启动时会自动创建RestServlet,并设置相应的urlPattern:
+
+ servicecomb.rest.servlet.urlPattern: /rest/*
## 典型场景配置示例
+
* 纯ServiceComb,标准声明
- web.xml
- ```xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <listener>
- <listener-class>org.apache.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>RestServlet</servlet-name>
- <servlet-class>org.apache.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- <async-supported>true</async-supported>
- </servlet>
- <servlet-mapping>
- <servlet-name>RestServlet</servlet-name>
- <url-pattern>/rest/*</url-pattern>
- </servlet-mapping>
- </web-app>
- ```
+ web.xml
+
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <listener>
+ <listener-class>org.apache.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
+ </listener>
+ <servlet>
+ <servlet-name>RestServlet</servlet-name>
+ <servlet-class>org.apache.servicecomb.transport.rest.servlet.RestServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ <async-supported>true</async-supported>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>RestServlet</servlet-name>
+ <url-pattern>/rest/*</url-pattern>
+ </servlet-mapping>
+ </web-app>
+
* 纯ServiceComb,快捷声明
- web.xml:
- ```xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <listener>
- <listener-class>org.apache.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
- </listener>
- </web-app>
- ```
- microservice.yaml:
- ```yaml
- servicecomb.rest.servlet.urlPattern: /rest/*
- ```
+ web.xml
+
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <listener>
+ <listener-class>org.apache.servicecomb.transport.rest.servlet.RestServletContextListener</listener-class>
+ </listener>
+ </web-app>
+
+
+ microservice.yaml:
+
+ servicecomb.rest.servlet.urlPattern: /rest/*
+
* springMVC UI或RestController接入请求,通过ServiceComb作为consumer发送到内部微服务
- web.xml:
- ```xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <servlet>
- <servlet-name>SpringMVCServlet</servlet-name>
- <servlet-class>org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>SpringMVCServlet</servlet-name>
- <url-pattern>yourUrlPattern</url-pattern>
- </servlet-mapping>
- </web-app>
- ```
- microservice.yaml:
- 不配置servicecomb.rest.address以及servicecomb.rest.servlet.urlPattern
+ web.xml:
+
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <servlet>
+ <servlet-name>SpringMVCServlet</servlet-name>
+ <servlet-class>org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>SpringMVCServlet</servlet-name>
+ <url-pattern>yourUrlPattern</url-pattern>
+ </servlet-mapping>
+ </web-app>
+
+ microservice.yaml:不配置servicecomb.rest.address以及servicecomb.rest.servlet.urlPattern
+
* springMVC UI或RestController接入一些请求,同时通过ServiceComb接入另一些请求
- web.xml:
- ```xml
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <servlet>
- <servlet-name>SpringMVCServlet</servlet-name>
- <servlet-class>org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>SpringMVCServlet</servlet-name>
- <url-pattern>yourUrlPattern</url-pattern>
- </servlet-mapping>
- </web-app>
- ```
- microservice.yaml:
- ```yaml
- servicecomb:
- rest:
- servlet:
- urlPattern: /rest/*
- address: 0.0.0.0:8080
- ```
+ web.xml:
+
+ <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+ version="3.0">
+ <servlet>
+ <servlet-name>SpringMVCServlet</servlet-name>
+ <servlet-class>org.apache.servicecomb.transport.rest.servlet.CseDispatcherServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>SpringMVCServlet</servlet-name>
+ <url-pattern>yourUrlPattern</url-pattern>
+ </servlet-mapping>
+ </web-app>
+
+ microservice.yaml:
+
+ servicecomb:
+ rest:
+ servlet:
+ urlPattern: /rest/*
+ address: 0.0.0.0:8080
+
## 使用servlet filter注意事项
+
RestServlet工作于异步模式,根据servlet 3.0的标准,整条工作链都必须是异步模式,所以,如果业务在这个流程上增加了servlet filter,也必须将它配置为异步:
+
```xml
<filter>
......