更新时间:2025-03-04 gmt 08:00

通过vpc高速访问通道的方式访问在线服务-九游平台

背景说明

访问在线服务的实际业务中,用户可能会存在如下需求:

  • 高吞吐量、低时延
  • tcp或者rpc请求

因此,modelarts提供了vpc直连的高速访问通道功能以满足用户的需求。

使用vpc直连的高速访问通道,用户的业务请求不需要经过推理平台,而是直接经vpc对等连接发送到实例处理,访问速度更快。

由于请求不经过推理平台,所以会丢失以下功能:

  • 认证鉴权
  • 流量按配置分发
  • 负载均衡
  • 告警、监控和统计
图1 vpc直连的高速访问通道示意图

约束限制

调用api访问在线服务时,对预测请求体大小和预测时间有限制:
  • 请求体的大小不超过12mb,超过后请求会被拦截。
  • 因apig(api网关)限制,平台每次请求预测的时间不超过40秒。

准备工作

使用专属资源池部署在线服务,服务状态为“运行中”。

  • 只有专属资源池部署的服务才支持vpc直连的高速访问通道。
  • vpc直连的高速访问通道,目前只支持访问在线服务。
  • 因流量限控,获取在线服务的ip和端口号次数有限制,每个主账号租户调用次数不超过2000次/分钟,每个子账号租户不超过20次/分钟。
  • 目前仅支持自定义镜像导入模型,部署的九游平台的服务支持高速访问通道。

操作步骤

使用vpc直连的高速访问通道访问在线服务,基本操作步骤如下:

  1. 将专属资源池的网络打通vpc
  2. vpc下创建弹性云服务器
  3. 获取在线服务的ip和端口号
  4. 通过ip和端口号直连应用
  1. 将专属资源池的网络打通vpc

    登录modelarts控制台,进入“ai专属资源池 > 弹性集群cluster”找到服务部署使用的专属资源池,单击“名称/id”,进入资源池详情页面,查看网络配置信息。返回专属资源池列表,选择“网络”页签,找到专属资源池关联的网络,打通vpc。打通vpc网络后,网络列表和资源池详情页面将显示vpc名称,单击后可以跳转至vpc详情页面。

    图2 查看网络配置
    图3 打通vpc
  2. vpc下创建弹性云服务器

    登录弹性云服务器ecs控制台,单击右上角“购买弹性云服务器”,进入购买弹性云服务器页面,完成基本配置后单击“下一步:网络配置”,进入网络配置页面,选择1中打通的vpc,完成其他参数配置,完成高级配置并确认配置,下发购买弹性云服务器的任务。等待服务器的状态变为“运行中”时,弹性云服务器创建成功。单击“名称/id”,进入服务器详情页面,查看虚拟私有云配置信息。

    图4 购买弹性云服务器时选择vpc
    图5 查看虚拟私有云配置信息
  3. 获取在线服务的ip和端口号

    可以通过使用图形界面的软件(以postman为例)获取服务的ip和端口号,也可以登录弹性云服务器(ecs),创建python环境运行代码,获取服务ip和端口号。

    api接口:

    get /v1/{project_id}/services/{service_id}/predict/endpoints?type=host_endpoints
    • 方式一:图形界面的软件获取服务的ip和端口号
      图6 接口返回示例
    • 方式二:python语言获取ip和端口号

      python代码如下,下述代码中以下参数需要手动修改:

      • project_id:用户项目id,获取方法请参见获取项目id和名称
      • service_id:服务id,在服务详情页可查看。
      • region_endpoint:服务的终端节点,查询请参见终端节点
      def get_app_info(project_id, service_id):
          list_host_endpoints_url = "{}/v1/{}/services/{}/predict/endpoints?type=host_endpoints"
          url = list_host_endpoints_url.format(region_endpoint, project_id, service_id)
          headers = {'x-auth-token': x_auth_token}
          response = requests.get(url, headers=headers)
          print(response.content)
  4. 通过ip和端口号直连应用
    登录弹性云服务器(ecs),可以通过linux命令行访问在线服务,也可以创建python环境运行python代码访问在线服务。schema、 ip、port参数值从3获取。
    • 执行命令示例如下,直接访问在线服务。
      curl --location --request post 'http://192.168.205.58:31997' \
      --header 'content-type:  application/json' \
      --data-raw '{"a":"a"}'
      图7 访问在线服务
    • 创建python环境,运行python代码访问在线服务。
      def vpc_infer(schema, ip, port, body):
          infer_url = "{}://{}:{}"
          url = infer_url.format(schema, ip, port)
          response = requests.post(url, data=body)
          print(response.content)

    由于高速通道特性会缺失负载均衡的能力,因此在多实例时需要自主制定负载均衡策略。

相关文档

网站地图