- Ví dụ này sử dụng phiên bản Fastly CLI cũ hơn. Kiểm tra bài viết này để biết phiên bản cập nhật.
Trong bài đăng này, chúng tôi sẽ viết một ứng dụng đơn giản sẽ chạy trên Fastly Compute @ Edge. Ứng dụng sẽ truy cập Upstash Redis để theo dõi lượt xem trang.
Động lực
Edge Computing là một trong những xu hướng thú vị nhất trong những năm gần đây. Các dịch vụ CDN như Cloudflare và Fastly bắt đầu cho phép người dùng chạy các ứng dụng của họ trên cơ sở hạ tầng cạnh của họ. Điều này giúp các nhà phát triển xây dựng các ứng dụng hiệu suất cao, được phân phối trên toàn cầu.
Compute @ Edge là nền tảng không máy chủ của Fastly. Bạn có thể viết mã của mình bằng Rust, AssemblyScript, Javascript và chạy trong mạng biên của Fastly. Các chức năng Fastly Compute không có trạng thái. Điều này có nghĩa là các nhà phát triển nên giữ trạng thái ứng dụng của họ ở bộ nhớ ngoài. Nhưng Fastly sử dụng WebAssembly làm thời gian chạy cho các chức năng và nó không cho phép kết nối TCP. Upstash Redis là một giải pháp hoàn hảo cho các chức năng Tính toán nhanh với API REST, nhân rộng toàn cầu và định giá không cần máy chủ.
Xem mã và bản trình diễn
Thiết lập dự án
Tạo cơ sở dữ liệu trong Upstash Console. Thích Cơ sở dữ liệu toàn cầu vì độ trễ thấp từ các vị trí cạnh.
Cài đặt nhanh, bấm:
brew install fastly/tap/fastly
Định cấu hình CLI của bạn với tài khoản Fastly của bạn:
fastly configure
Tạo một thư mục và cài đặt dự án của bạn bằng cách chạy fastly compute init
bên trong thư mục:
➜ using-fastly-compute git:(master) ✗ fastly compute init
Creating a new Compute@Edge project.
Press ^C at any time to quit.
Name: [using-fastly-compute]
Description:
Author: [[email protected]]
Language:
[1] Rust
[2] AssemblyScript (beta)
[3] JavaScript (beta)
[4] Other ('bring your own' Wasm binary)
Choose option: [1] 3
Starter kit:
[1] Default starter for JavaScript
A basic starter kit that demonstrates routing, simple synthetic responses and
overriding caching rules.
https://github.com/fastly/compute-starter-kit-javascript-default
Choose option or paste git URL: [1]
✓ Initializing...
✓ Fetching package template...
✓ Updating package manifest...
✓ Initializing package...
Initialized package using-fastly-compute to:
/Users/enes/dev/examples/using-fastly-compute
To publish the package (build and deploy), run:
fastly compute publish
To learn about deploying Compute@Edge projects using third-party orchestration tools, visit:
https://developer.fastly.com/learning/integrations/orchestration/
SUCCESS: Initialized package using-fastly-compute
Cài đặt bổ sung hướng dẫn và đường dẫn bay:
npm install @upstash/redis flight-path
Cập nhật webpack.config.js của bạn bằng cách thêm các plugin này:
Các pluginplugins: [
// Polyfills go here.
// Used for, e.g., any cross-platform WHATWG,
// or core nodejs modules needed for your application.
new webpack.ProvidePlugin({
URL: "core-js/web/url",
}),
],
Cập nhật tệp fastly.toml của bạn:
authors = ["[email protected]"]
description = "Example of using Upstash with Fastly Compute@Edge"
language = "javascript"
manifest_version = 2
name = "fastly-upstash"
service_id = "PASTE_YOUR_SERVICE_ID"
[local_server.backends.upstash-db]
url = "https://eu1-liberal-cat-30162.upstash.io"
Bạn cần tạo một Dịch vụ tính toán nhanh và dán Id dịch vụ nhanh chóng của mình ở trên.
Ngoài ra, bạn cần thêm URL Upstash REST làm phụ trợ cho Dịch vụ tính toán nhanh của mình. Fastly Compute yêu cầu bất kỳ kết nối mạng bên ngoài nào phải được đăng ký làm phụ trợ. Trên màn hình dịch vụ, nhấp vào Edit Configuration
> Clone version x to edit
> Origins
> Create a host
Sau khi thêm máy chủ, bấm vào biểu tượng chỉnh sửa để thêm tên cho máy chủ. Đặt tên là upstash-db
sẽ bằng với backend
trong khi chúng tôi đang định cấu hình ứng dụng khách Upash-redis. Xóa https://
một phần từ url. Cuối cùng nhấp vào Activate
ở góc trên cùng bên phải để kích hoạt cấu hình với việc triển khai hiện tại.
Local_server.backends.upstash-db
là bắt buộc để bạn chạy chức năng của mình cục bộ. Thay thế url bằng url REST của Cơ sở dữ liệu Upstash của bạn.
Triển khai
src / index.js là việc triển khai chức năng serverless. Chỉnh sửa mã như sau:
import { Router } from "flight-path";
import { Redis } from "@upstash/redis/fastly";
const router = new Router();
const redis = new Redis({
url: "PASTE_YOUR_UPSTASH_REST_URL",
token: "PASTE_YOUR_UPSTASH_TOKEN",
backend: "upstash-db",
});
router.get("/", async (req, res) => {
const count = await redis.incr("count");
res.send(`Fastly with Upstash! Count: ${count}`);
});
router.listen();
Bạn cần sao chép và dán URL và mã thông báo REST từ bảng điều khiển Upstash
Chúng tôi chỉ đơn giản là kết nối với Upstash bằng ứng dụng khách Upstash. Chúng tôi tăng một bộ đếm và trả lại phản hồi.
Lưu ý rằng bạn không thể sử dụng các ứng dụng Redis khác vì chúng sử dụng kết nối TCP không được Fastly Compute hỗ trợ.
Trong khi xác thực bằng auth()
, bạn cần thêm backend: upstash-db
như một tùy chọn yêu cầu bổ sung. Điều này là bắt buộc vì Tính toán nhanh yêu cầu bất kỳ kết nối mạng bên ngoài nào phải được đăng ký làm chương trình phụ trợ.
Chạy cục bộ
Bạn có thể chạy hàm cục bộ bằng cách:
fastly compute serve
Xây dựng và Triển khai
Xây dựng và triển khai chức năng của bạn với:
fastly compute publish
Ứng dụng của bạn sẽ được Fastly xây dựng và triển khai. Lệnh sẽ ghi lại url để bạn có thể kiểm tra xem nó có hoạt động không:
https://horribly-organic-spider.edgecompute.app
Các từ đóng
Trong bài viết này, chúng tôi đã tạo một ứng dụng rất đơn giản chạy trên Fastly Compute tại Edge bằng cách sử dụng Upstash. Chúng tôi muốn cải thiện Upstash và nội dung của chúng tôi bằng phản hồi của bạn. Hãy cho chúng tôi biết suy nghĩ của bạn trên Twitter hoặc Discord.
Liên kết Bên ngoài
https://developer.fastly.com/learning/compute/
https://developer.fastly.com/learning/compute/javascript/