Projects STRLCPY SeaMoon Files
🤬
169 lines | UTF-8 | 3 KB

serverless-devs

你也可以通过serverless-devs,快速部署到各个云平台。

安装 serverless-devs 工具

$ npm install @serverless-devs/s -g

国内加速:

$ cnpm install @serverless-devs/s -g

如果不存在npm包管理器,请先通过node安装npm/cnpm

安装后运行

$ s -v

将可以看到serverless-devs版本,表示安装成功。

@serverless-devs/s3: 0.1.0, s-home: /Users/DVK/.s, darwin-arm64, node-v20.9.0

然后通过如下命令开始配置云厂商认证

$ s config add 

按提示即可选择即可,本次我们以 Alibaba Cloud 为例,输入对应的账户AccessKeyIDAccessKeySecret

最后一步填写alias时,请确保值为default(一般初次安装与认证该字段都默认为default,回车即可)。

如果AK/SK无误,那么你将会看到认证成功的提示。

部署

$ git clone https://github.com/DVKunion/SeaMoon.git

进入到项目目录

$ cd SeaMoon
$ s deploy

如果你不是第一次部署,那么将会提示你选择冲突的配置:remote/local,一般选择local即可。

稍等片刻,你将会得到部署好的两个地址:

SeaMoon-WST-Node:
  region: cn-hongkong
  service:
    name: SeaMoon-Service
  function:
    name: ws-node
    runtime: custom
    handler: main
    memorySize: 128
    timeout: 300
    cpu: 0.05
    diskSize: 512
  url:
    system_url: https://ws-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run
    system_intranet_url: https://ws-node-seamoon-service-xxxxxxxx.cn-hongkong-vpc.fcapp.run
  triggers:
    - type: http
      name: httpTrigger
SeaMoon-GRT-Node:
  region: cn-hongkong
  service:
    name: SeaMoon-Service
  function:
    name: grpc-node
    runtime: custom
    handler: main
    memorySize: 128
    timeout: 300
    cpu: 0.05
    diskSize: 512
  url:
    system_url: https://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong.fcapp.run
    system_intranet_url: https://grpc-node-seamoon-service-xxxxxxxx.cn-hongkong-vpc.fcapp.run
  triggers:
    - type: http
      name: httpTrigger

服务端部署完成。

高级选项

地域

如果你想要修改部署的地域,请修改 s.yaml 中的 region 字段。

目前支持的 region :

cn-hangzhou, 
cn-beijing, 
cn-shanghai, 
cn-qingdao, 
cn-zhangjiakou, 
cn-huhehaote, 
cn-shenzhen, 
cn-chengdu, 
cn-hongkong, 
ap-southeast-1, 
ap-southeast-2, 
ap-southeast-3, 
ap-southeast-5, 
ap-northeast-1, 
eu-central-1, 
eu-west-1, 
us-west-1, 
us-east-1, 
ap-south-1

花费 vs 更多的IP

阿里云的 FC 计费模式与实例数、vCPU消耗息息相关。

由于我们的流量中转单例,cpu 消耗并不会打满,而仍然会依照 0.33 计费。

因此,控制多个请求到一个实例,即可控制消费;对应的能够获取到的IP也会随之减少。

10线程、每个线程 100 个用例打满ip查询测试的结果为:

  • 实例数目不设限、最高超时时间为600s、每个实例只处理一个请求: 70 IP
  • 实例数目不设限、最高超时时间为300s、每个实例处理10请求: 45IP (目前默认配置)

如果你需要自行调整,可修改s.yaml中的:

services:
  SeaMoon-WST-Node:
    component: fc
    props:
  ......
instanceConcurrency: 10 #一个实例最多请求处理数
  ......
timeout: 300 #超时时间,数值越大,可维持的不中断连接时间就会越长

随着修改,改方案可能导致的花费也会随之不同。

可能遇到的坑

  • 需要能够访问的到 github, 在 pre-load 脚本中会从 github 上拉取最新版本的 release 用于部署。
  • 需要系统有 wget 命令。(windows 用户可以暂时放弃这个方式,不打算支持 windows 通过此类方式部署)
Please wait...
Page is in error, reload to recover