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

前提条件

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

条件与约束

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

发布Spring Cloud服务

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

    命名服务参数说明:

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

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

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

    接入协议参数说明:

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

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

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

    开放协议参数说明:

    名称 说明
    服务开放类型 服务的开放协议类型。Spring Cloud服务仅支持开放为RESTful协议。
    开放Path 服务发布后的访问Path,格式为/CSB服务版本号/CSB服务名

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

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

订购Spring Cloud服务

订购Spring Cloud服务和其它类型的服务没有差别,订购服务详情请参见订购服务

调用Spring Cloud服务

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

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:Spring Cloud服务要求的path路径。
    • /abc:Spring Cloud服务要求的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值"); // 设置AccessKeyID和AccessKeySecret
    
        // 设置HTTP FORM表单请求参数
        builder.putParamsMap("name", "name1").putParamsMap("value", "123");
        try {
            String ret = HttpCaller.invoke(builder.build());
        } catch (HttpCallerException e) {
            e.printStackTrace();
        }
    }