全部产品
阿里云办公

发布服务(新版)

更新时间:2017-09-22 10:50:57

简介

发布 API 服务就是把一个已有的后端服务在某个 CSB 实例上注册,并以选定的一种或多种协议开放成 API 供消费者使用,同时对服务的消费做一定的访问控制。即包含如下三个关键概念:

  1. 接入服务:提供 API 对应的后端服务信息,让 CSB 能访问到这个已有的服务。
  2. 开放服务:指明 API 开放的协议,以及开放的接口和后端服务接口如何对应。
  3. 访问控制:指明 API 开放的策略,是否限流,对谁可见,访问是否需要授权。

服务发布总体图

CSB 控制台的新版发布功能支持服务路由的发布,所以建议使用新版来发布服务;同时为了保持向前兼容(例如,后端 Broker 不能及时升级),CSB 控制台也提供了以旧版的方式发布和变更服务。

发布方式的说明

控制台提供了新、旧两个版本发布方式的选择:

  • 旧版发布只能发布普通服务
  • 新版发布可以发布普通服务和路由服务,推荐使用新版发布

在发布一个具体的服务时,会根据 用户设置当前实例的服务版本分布 情况自动选择普通发布还是路由发布。

  • 用户设置

    • 如果设置了发布方式,则直接跳转至对应发布方式的页面。
    • 如果没有设置发布方式,则按服务版本分布进行选择。
  • 当前实例的服务版本分布

    • 如果仅有普通服务,跳转至普通发布页面。
    • 如果仅有路由服务,跳转至路由服务发布页面。
    • 其余情况,弹出发布方式选择页面,让用户自行选择。

注意: 如果没有进行发布设置,则在发布服务时候会提示进行如下的方式选择:

新旧版选择

发布设置

  1. 在实例列表页面,单击具体实例名称。

  2. 在实例详情页面左侧的导航栏中,选择 发布者 > 发布设置

  3. 在请设置服务发布方式页面,选择服务发布方式。

    服务发布方式包括:新版、旧版、不设置。

    设置服务发布方式

发布服务

注意:本文档描述新版的发布服务操作步骤,旧版的发布服务请参考 发布服务(旧版)

前提条件

  • 确保要发布的服务所在的服务组已经创建,服务组及创建服务组,请参见 服务组管理
  • 确定发布服务的接入参数信息和将要发布的协议

操作步骤

发布服务分为五个步骤:

  1. 命名服务
  2. 接入协议
  3. 开放协议
  4. 访问限制
  5. 预览发布

1. 命名服务

  1. 在实例详情页面左侧的导航栏中,选择 发布者 > 发布服务

  2. 设置服务命名参数,单击 下一步

    命名参数说明:

    • 服务全名:不可以为中文,只能是数字,字母或“-”。长度为1~128个字符。
    • 服务版本:输入服务版本号。
    • 服务别名:可包含中文,用于标识该服务。
    • 所属服务组:在下拉菜单中选择该服务所属的服务组。在服务数量少时所属服务组可视作简单分类。
    • 归属:服务归属组织名,部门名称或者提供商名。归属是服务的一个附加的分类属性,可以不填。
    • 服务说明:可以填写 API 的详细描述或者其它说明信息。最长128个汉字或字符。

    注意

    • (全名+版本号)在 CSB 实例上是唯一的。服务全名相同但版本号不同的服务,发布时要确保:在该实例下其他的同服务全名的服务都已经处于注销状态。
    • 同一个服务名的两个版本可以视为两个服务,即客户端调用的时候需要指定调用的服务名+版本号

2. 设置接入协议。

说明: (“A” 代表新版的发布,”B” 代表旧版的发布)

  1. 选择 路由策略

    接入协议有两种路由策略: 直接路由基于内容的路由

    • 直接路由:实际上是直接接入,不需要路由,只能选择一种接入协议。
    • 基于内容的路由:定义了路由策略,即定义 Groovy 条件规则,把接入的请求根据参数值的不同,路由到多个不同的后端接入协议或者相同的接入协议不同的接入地址。
  2. 单击 编辑(直接路由)或 新增(基于内容的路由)。

  3. 设置路由条件(适用于基于内容的路由)。

    路由条件

  4. 选择接入协议。

    新版支持 4 种协议:

    • Restful-API
    • HSF-API
    • WebService
    • Dubbo

    不同的接入协议支持对应的开放协议, 例如: 接入的 Restful 服务,可以发布成 Restful 和 WebService 协议类型。

  5. 配置接入服务。

    对于每种接入服务的参数,可单击 接入参数设置说明 获得详细信息。

  6. 设置 服务接口

  7. 编辑入/出参数。

    根据根据接入协议,定义入参数和出参数,并设置参数的名称映射和参数顺序和层次。

    参数的名称映射是指 发布入参数名为CSB开放的服务调用时候使用的参数名,发布出参数名为CSB接入后端服务的时候使用的的参数名。参数的命名只能是数字,字母或“_”

    • 参数的顺序要与接入服务要求的参数顺序一致。
    • 对于复杂的参数,需要定义参数的层次,来表示一个复杂的参数对象。

    每个参数都可以单独编辑,设置参数的属性信息:

    • 参数类型: 支持下拉的基本参数类型和复杂的自定类型。
    • 映射方式: 目前只支持 “API参数”
    • 扩展类型: 参数的正常的参数类型,还是数组,列表或Set, 例如: 方法 hello(String arg0, String[] arg1, List&ltString> arg2)。
    • arg0 为正常扩展类型 (它可以是简单类型或者复杂类型)。
    • arg1 为数组扩展类型。
    • arg2 为列表扩展类型。
    • 可选: 如果设置成参数可选,则调用时,发布的服务可以不输入该参数;如果是必选并且没有设置默认值,则调用时会报错。
    • 默认值:如果不开放但又是后端服务必要的入参,需要指定默认值。
    • 示例值:将来生成接口文档时,提供参数的取值参考。

    注意:如果是透传的调用,如:restful2restful, ws2ws, HSF2HSF 可以不定义参数,发布的参数原样透传到后端的接入服务。

    手动的服务参数定义是一件繁琐的工作,CSB 控制台提供了自动的参数加载功能,有两种方式进行参数的加载:

    • 使用命名服务步骤中选择的服务组所定义的接口文件

      选择接口文件方式2

    • 自定义的接口文件(它覆盖服务组中定义的接口文件)

      选择接口文件方式2

    这样就可以在定义参数的时候通过选择接口和对应的方法自动添加接口文件(Java类)中定义的参数。

  8. 单击 下一步

3. 开放协议

  • 对于直接路由,开放协议是由所选择的接入协议决定,这与旧版的服务发布完全相同。
  • 对于基于内容的路由,开放协议目前只支持 Restful 协议类型。

    基于内容的路由开发协议

  1. 选择 服务开放接口类型

  2. 选择 服务发布目标实例

    如上图所示,当”服务发布目标实例”多于一个时,用所选择的非本实例作为发布目标实例时,则代表当前服务要级联发布到该目标实例。即,该服务可以在目标实例被调用,中间经过级联到达当前实例并最终调用到真正的接入服务。

    对于级联服务的要求:

    • 必须由管理员预先定义正确的级联发布规则,才可以在发布服务时候看到多个”服务发布目标实例”。
    • 需要在要发布的目标实例上预先创建一个服务组,该服务组名称必须与当前发布的服务(源服务)所选择的服务组相同。这么做的目的是可以在目标实例上根据这个服务组(及这个组的所属用户)找到这个级联服务。
  3. (可选) 在 编辑错误代码右侧单击 添加错误码。在弹出的错误码编辑对话框中,数据错误代码、处置建议和错误说明,然后单击 保存

  4. (可选)设置模拟返回结果。

  5. 单击 下一步

4. 设置访问限制

  1. 在限制访问页面输入 每秒最大调用量,指定这个服务能接受的访问频度限制,即每秒最多调用次数(设置为0或者为空时代表不限制访问频度)。

  2. 单击 公开访问 右侧滑块,设置访问该服务是否需要授权(订购)。

5. 发布服务

  1. 确认服务基本信息、开发协议、接入协议、限制访问等设置是否无误。

  2. 确认无误后,单击 发布 即可发布服务。