当您的SpringCloud服务注册到注册中心后,可以将该服务在CSB发布,供消费方调用。您也可以订购并调用在CSB中开放的其它SpringCloud服务。

前提条件

  • 已创建注册中心。
  • SpringCloud服务已注册到注册中心。

条件与约束

  • 目前仅支持Nacos、Eureka和EDAS注册中心三种注册中心。
  • 由于注册中心可能在VPC内部,csbConsole无法直接访问,故CSB控制台上无法直接展示注册中心内已有的SpringCloud服务列表。
  • 目前仅支持将SpringCloud服务开放为RESTFul,不支持开放为WebService。

发布SpringCloud服务

  1. 登录CSB控制台
  2. 在顶部菜单栏选择地域。
  3. 在左侧导航栏单击实例列表
  4. 实例列表页面单击具体实例名称。
    注意 如果您使用共享实例,请参见表 1使用CSB指定的共享实例,否则会导致发布失败。共享实例仅用于体验试用,不建议正式生产使用。
  5. 实例概览页面左侧导航栏选择发布者 > 发布服务
  6. 路由服务发布命名服务页签中设置参数,单击下一步
    路由服务发布-命名服务

    命名服务参数说明如下:

    参数 描述
    服务全名 要发布的服务全名。
    服务版本 服务版本。
    所属服务组 在下拉列表中选择已创建的服务组。
    业务日志 根据您的需要选择是否开启日志开关。

    开启日志开关后,会记录业务请求和响应的内容,您可在CSB Broker的/home/admin/cloud-gateway/logstrace.log内查看日志详情。

  7. 路由服务发布接入协议页签中填写后端接入服务信息,然后单击下一步
    接入协议-Spring Cloud-Nacos

    接入协议参数说明如下:

    参数 描述
    路由策略 服务发布后,访问该服务的路由策略,包含直接路由内容路由两种策略。
    • 直接路由:实际上是直接接入,不需要路由,只能选择一种接入协议。
    • 内容路由:单击新增,在编辑参数设置路由条件,即定义Groovy条件规则,把接入的请求根据参数值的不同,路由到多个不同的后端接入协议或者相同的接入协议不同的接入地址。
    选择一个接入协议 服务的接入协议,选择SpringCloud
    配置接入服务
    注册中心类型 要发布的服务所注册的注册中心类型。根据实际情况选择NacosEureka或者EDAS注册中心
    注册中心地址(适用于Nacos和Eureka注册中心) 注册中心的访问地址。
    EDAS命名空间TID(适用于EDAS注册中心) EDAS命名空间对应的TID。可以在EDAS控制台的命名空间页面查看。
    Spring Cloud服务名 在所选注册中心注册的SpringCloud服务。
    说明 由于注册中心可能在VPC内部,csbConsole无法直接访问,故CSB控制台上无法直接展示注册中心内已有的Spring Cloud服务列表。
    Spring Cloud开放path 根据实际情况设置服务开放路径。

    开放路径设置为空表示匹配所有路径;支持星号(*)通配符;支持设置多个开放路径,路径之间需要换行分隔。

    Spring Cloud服务访问协议 根据实际情况选择服务访问协议,支持HTTPHTTPS
    超时访问 服务的超时时间。如果需要为服务设置熔断和降级机制,则需要配置该参数。

    其它参数可根据实际需求配置,请参见设置接入协议

  8. 路由服务发布开放协议页签中设置参数,单击下一步
    开放协议-Spring Cloud

    开放协议参数说明如下:

    参数 描述
    服务开放类型 服务的开放协议类型。SpringCloud服务仅支持开放为RESTful协议。
    开放Path 服务发布后的访问Path,格式为/CSB服务版本号/CSB服务名

    其它参数可根据实际需求配置,请参见设置开放协议

  9. 路由服务发布限制访问页签中设置参数,单击下一步
    限制访问的参数根据实际需求配置,请参见设置访问限制
  10. 路由服务发布发布服务页签中查看服务的基本信息、开发协议、接入协议和限制访问设置,确认无误后,单击完成发布

订购SpringCloud服务

订购SpringCloud服务和订购其它类型的服务没有差异,请参见订购服务

调用SpringCloud服务

服务消费方可以通过RESTful和CSB SDK两种方式调用SpringCloud服务。

Spring Cloud服务使用场景
  • 使用标准RESTful方式调用
    说明 使用标准RESTful方式调用的Spring Cloud服务必须打开公开访问开关。

    可以使用Postman发起调用请求,示例如下。

    Postman 调用示例

    实例参数说明:

    • http://xx.xxx.xxx.xxx:8086/1.0.0/http2sc1:URL格式为http://<CSB 服务访问IP>:<端口>/<CSB服务版本号>/<CSB服务名>
    • /postFoo:SpringCloud服务要求的path路径。
    • /abc:SpringCloud服务要求的path参数。
  • 使用CSB SDK方式调用

    与普通RESTful服务调用方法基本一致,请参见调用服务。包含以下区别:

    • CSB服务访问地址为http://<csbBroker的负载均衡地址>:8086/<CSB服务版本号>/<CSB服务名> + <springCloud本身要求的path和query参数>
    • 可以省略HttpParameters.Builderapi()version()设置。

    使用标准RESTful方式调用的实例如下。

    public void testHttp2SpringCloud() {
        HttpParameters.Builder builder = new HttpParameters.Builder();
        builder.requestURL("http://xx.xxx.xxx.xxx:8086/1.0.0/http2sc1/postFoo/abc") 
                .api("http2sc1") // 实例名称。
                .version("1.0.0") // 服务版本。
                .method("post") // 设置调用方式, get或post。
                .accessKey("AK值").secretKey("SK值"); // 设置AccessKey ID和AccessKey Secret。
    
        // 设置HTTP FORM表单请求参数。
        builder.putParamsMap("name", "name1").putParamsMap("value", "123");
        try {
            String ret = HttpCaller.invoke(builder.build());
        } catch (HttpCallerException e) {
            e.printStackTrace();
        }
    }