Cloudflare 通过 Cloudflare Workers 提供无服务器计算服务,后者是用于构建和部署在 Cloudflare 边缘网络上运行的JavaScript 函数的平台。 在边缘(尽可能靠近最终用户)运行代码有助于减少延迟并提高应用程序性能。 每个 Worker 都可以修改并响应 HTTP 请求。
Blueboat 就是 Cloudflare Workers 的开源替代品,旨在成为无服务器 Web 应用开发者友好的多租户平台。
一个简单的 Blueboat 应用程序如下所示:
Router.get("/", req => new Response("hello world")); Router.get("/example", req => { return fetch("https://example.com"); }); Router.get("/yaml", req => { const res = TextUtil.Yaml.stringify({ hello: "world", }); return new Response(res); });
使用托管服务的快速入门
-
安装
bbcli
对于 Linux:
curl -sSL -o /tmp/bbcli.tar.gz https://github.com/losfair/bbcli/releases/download/v0.1.0-alpha.1/bbcli_linux.tar.gz
tar -xzvf /tmp/bbcli。 tar.gz -C ~
chmod +x ~ /bbcli && rm /tmp/bbcli.tar.gz
对于 macOS:
curl -sSL -o /tmp/bbcli.tar.gz https://github.com/losfair/bbcli/releases/download/v0.1.0-alpha.1/bbcli_macos.tar.gz
tar -xzvf /tmp/bbcli。 tar.gz -C ~
chmod +x ~ /bbcli && rm /tmp/bbcli.tar.gz
- 克隆示例项目
git clone https://github.com/losfair/blueboat-examples
- 部署项目
cd blueboat-examples/hello-world npm i ~/bbcli deploy --vars ./hosted.vars.yaml
部署 Blueboat 实例
先决条件
- Docker
- 用于存储应用程序配置和代码的 S3 兼容 bucket
- 用于存储 bbcp 元数据的 MySQL 服务
- (可选)用于流式传输日志的 Kafka 服务
部署
示例:
version: "3" services: blueboat: image: ghcr.io/losfair/blueboat:latest user: daemon ports: - "127.0.0.1:3000:3000" entrypoint: - /usr/bin/blueboat_server - -l - 0.0.0.0:3000 - --s3-bucket - my-bucket.example.com - --s3-region - us-east-1 # Uncomment this if you use a non-AWS S3-compatible service. # - --s3-endpoint # - https://minio.example.com # Uncomment this to enable logging to Kafka. # - --log-kafka # - net.univalent.blueboat-log.default:0@kafka:9092 # Uncomment this to enable geoip information in the `x-blueboat-client-country`, # `x-blueboat-client-city`, `x-blueboat-client-subdivision-1` and # `x-blueboat-client-subdivision-2` request headers. # - --mmdb-city # - /opt/blueboat/mmdb/GeoLite2-City.mmdb # Uncomment this to enable automatic Wikipedia IP blocklist query in the # `x-blueboat-client-wpbl` request header. # The database is generated with https://github.com/losfair/wpblsync. # - --wpbl-db # - /opt/blueboat/wpbl/wpbl.db environment: RUST_LOG: info AWS_ACCESS_KEY_ID: your_s3_access_key_id AWS_SECRET_ACCESS_KEY: your_s3_secret_access_key # Uncomment this to enable text rendering in canvas. # SMRAPP_BLUEBOAT_FONT_DIR: /opt/blueboat/fonts