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


The following commit(s) were added to refs/heads/master by this push:
     new fac020a  [#3432]fix edge service error (#279)
fac020a is described below

commit fac020a8fc39a05db466cf18f68c7b8d5241ef62
Author: liubao68 <[email protected]>
AuthorDate: Sat Oct 29 20:22:47 2022 +0800

    [#3432]fix edge service error (#279)
---
 .../zh_CN/docs/edge/by-servicecomb-sdk.md          | 58 +++++++++++++---------
 1 file changed, 34 insertions(+), 24 deletions(-)

diff --git a/java-chassis-reference/zh_CN/docs/edge/by-servicecomb-sdk.md 
b/java-chassis-reference/zh_CN/docs/edge/by-servicecomb-sdk.md
index d2da1f9..0e0175a 100644
--- a/java-chassis-reference/zh_CN/docs/edge/by-servicecomb-sdk.md
+++ b/java-chassis-reference/zh_CN/docs/edge/by-servicecomb-sdk.md
@@ -1,48 +1,56 @@
 # 使用 Edge Service 做网关
 
-Edge Service 是ServiceComb 提供的JAVA网关服务开发框架。Edge 
Service作为整个微服务系统对外的接口,向最终用户提供服务,接入RESTful请求,转发给内部微服务。Edge 
Service以开发框架的形式提供,开发者可以非常简单的搭建一个Edge Service服务,通过简单的配置就可以定义路由转发规则。同时Edge 
Service支持强大的扩展能力,服务映射、请求解析、加密解密、鉴权等逻辑都可以通过扩展实现。
+Edge Service 是ServiceComb 提供的JAVA网关服务开发框架。Edge 
Service作为整个微服务系统对外的接口,向最终用户提供服务,接入REST请求,转发给内部微服务,Edge 
Service支持REST请求和Highway请求的转发。Edge Service以开发框架的形式提供,开发者可以非常简单的搭建一个Edge 
Service服务,通过简单的配置就可以定义路由转发规则。同时Edge 
Service支持强大的扩展能力,服务映射、请求解析、加密解密、鉴权等逻辑都可以通过扩展实现。
 
 Edge Service 
本身也是一个微服务,需遵守所有微服务开发的规则。其本身可以部署为多实例,前端使用负载均衡装置进行负载分发;也可以部署为主备,直接接入用户请求。开发者可以根据Edge
 Service承载的逻辑和业务访问量、组网情况来规划。
 
 ## 开发 Edge Service 服务
-开发 Edge Service 和开发一个普通的微服务步骤差不多,开发者可以从导入[ServiceComb Edge Service 
Demo](https://github.com/apache/incubator-servicecomb-java-chassis/tree/master/demo/demo-edge)入手。从头搭建项目包含如下几个步骤:
+
+开发 Edge Service 和开发一个普通的微服务步骤差不多,开发者可以从导入[ServiceComb Edge Service 
Samples](https://github.com/apache/servicecomb-samples/tree/master/basic/gateway)入手。从头搭建项目包含如下几个步骤:
 
 * 配置依赖关系
 
-在项目中加入edge-core的依赖,就可以启动Edge Service的功能。Edge 
Service在请求转发的时候,会经过处理链,因此还可以加入相关的处理链的模块的依赖,下面的实例增加的负载均衡的处理链,这个是必须的。
+在项目中加入edge-core的依赖,就可以启动Edge Service的功能。
+
 ```
-<dependency>
-  <groupId>org.apache.servicecomb</groupId>
-  <artifactId>edge-core</artifactId>
-</dependency>
-<dependency>
-  <groupId>org.apache.servicecomb</groupId>
-  <artifactId>handler-loadbalance</artifactId>
-</dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb</groupId>
+      <artifactId>edge-core</artifactId>
+    </dependency>
 ```
 
 * 定义启动类
 
-和开发普通微服务一样,可以通过加载Spring的方式将服务拉起来。
+和开发普通微服务一样,可以通过 `@EnableServiceComb` 的方式将服务拉起来。
+
 ```
-public class EdgeMain {
+@SpringBootApplication
+@EnableServiceComb
+public class GatewayApplication {
   public static void main(String[] args) throws Exception {
-    Log4jUtils.init();
-    BeanUtils.init();
+    try {
+      new 
SpringApplicationBuilder().web(WebApplicationType.NONE).sources(GatewayApplication.class).run(args);
+    } catch (Exception e) {
+      e.printStackTrace();
+    }
   }
 }
 ```
 
-* 增加配置文件microservie.yaml
+* 增加配置文件 microservice.yaml
+
+Edge Service本身也是一个微服务,遵循微服务查找的规则,自己也会进行注册。注意 `application` 
与需要转发的微服务相同。在下面的配置中,指定了Edge 
Service监听的地址,处理链等信息。其中auth处理链是DEMO项目中自定义的处理链,用于实现认证。同时auth服务本身,不经过这个处理链,相当于不鉴权。
 
-Edge 
Service本身也是一个微服务,遵循微服务查找的规则,自己也会进行注册。注意APPLICAIONT_ID与需要转发的微服务相同。在下面的配置中,指定了Edge
 Service监听的地址,处理链等信息。其中auth处理链是DEMO项目中自定义的处理链,用于实现认证。同时auth服务本身,不经过这个处理链,相当于不鉴权。
 ```
-APPLICATION_ID: edge
-service_description:
-  name: edge
-  version: 0.0.1
 servicecomb:
   service:
+    application: edge
+    name: edge
+    version: 0.0.1
     registry:
       address: http://127.0.0.1:30100
   rest:
@@ -127,7 +135,8 @@ servicecomb:
       edge:
         url:
           enabled: true
-          pattern: /(.*) ## 默认值,一般不需要配置
+          ## 默认值,一般不需要配置
+          pattern: "/(.*)"
           mappings:
             businessV1:
               prefixSegmentCount: 1
@@ -141,7 +150,7 @@ servicecomb:
               versionRule: 2.0.0-3.0.0
 ```
 
-businessV1配置项表示的含义是将请求路径为/usr/business/v1/.*的请求,转发到business这个微服务,并且只转发到版本号为1.0.0-2.0.0的实例(不含2.0.0)。转发的时候URL为/business/v1/.*。path使用的是JDK的正则表达式,可以查看Pattern类的说明。prefixSegmentCount表示前缀的URL
 
Segment数量,前缀不包含在转发的URL路径中。有三种形式的versionRule可以指定。2.0.0-3.0.0表示版本范围,含2.0.0,但不含3.0.0;2.0.0+表示大于2.0.0的版本,含2.0.0;2.0.0表示只转发到2.0.0版本。2,2.0等价于2.0.0。
+`businessV1` 配置项表示的含义是将请求路径为 `/url/business/v1/.*` 的请求,转发到`business` 
这个微服务,并且只转发到版本号为1.0.0-2.0.0的实例(不含2.0.0)。转发的时候URL为 `/business/v1/.*` 
。path使用的是JDK的正则表达式,可以查看Pattern类的说明。prefixSegmentCount表示前缀的URL 
Segment数量,前缀不包含在转发的URL路径中。有三种形式的versionRule可以指定。2.0.0-3.0.0表示版本范围,含2.0.0,但不含3.0.0;2.0.0+表示大于2.0.0的版本,含2.0.0;2.0.0表示只转发到2.0.0版本。2,2.0等价于2.0.0。
 
 
从上面的配置可以看出,URLMappedEdgeDispatcher也支持客户端灰度。当然配置项会比DefaultEdgeDispatcher多。URLMappedEdgeDispatcher支持通过配置中心动态的修改配置,调整路由规则。
 
@@ -157,7 +166,8 @@ servicecomb:
       edge:
         http:
           enabled: true
-          pattern: /(.*) ## 默认值,一般不需要配置
+          ## 默认值,一般不需要配置
+          pattern: "/(.*)" 
           mappings:
             businessV2:
               prefixSegmentCount: 1

Reply via email to