Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Tích hợp Redis với Fastly Compute@Edge để Theo dõi Lượt xem Trang Hiệu quả

Bài viết này sử dụng phiên bản cũ hơn của Fastly CLI. Hãy xem bài viết này để có phiên bản cập nhật.

Động lực

Điện toán Edge (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 ứng dụng trên cơ sở hạ tầng edge 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, phân tán toàn cầu.

Compute@Edge là nền tảng serverless của Fastly. Bạn có thể viết mã bằng Rust, AssemblyScript, JavaScript và chạy trên mạng edge của Fastly. Các hàm Fastly Compute là không trạng thái (stateless). Điều này có nghĩa là các nhà phát triển nên lưu trữ trạng thái ứng dụng ở bộ nhớ lưu trữ bên ngoài. Nhưng Fastly sử dụng WebAssembly làm runtime cho các hàm và nó không cho phép kết nối TCP. Upstash Redis là giải pháp hoàn hảo cho các hàm Fastly Compute với REST API, sao chép toàn cầu và định giá serverless.

Xem mã nguồn và demo.

Thiết lập Dự án

Tạo một cơ sở dữ liệu trong Bảng điều khiển Upstash. Ưu tiên Cơ sở dữ liệu Toàn cầu (Global Database) để có độ trễ thấp từ các vị trí edge.

Cài đặt Fastly CLI:

brew install fastly/tap/fastly

Cấu hình CLI với tài khoản Fastly của bạn:

fastly configure

Tạo một thư mục và khởi tạo dự á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: [enes@upstash.com]
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 upstash-redis và flight-path:

npm install @upstash/redis flight-path

Cập nhật webpack.config.js thêm các plugin này:

plugins: [
  // 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 file fastly.toml:

authors = ["enes@upstash.com"]
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ụ Fastly Compute và dán Fastly Service Id của bạn vào trên.

Tích hợp Redis với Fastly Compute@Edge để Theo dõi Lượt xem Trang Hiệu quả

Bạn cũng cần thêm URL REST Upstash làm backend cho Dịch vụ Fastly Compute của mình. Fastly Compute yêu cầu mọi kết nối mạng bên ngoài phải được đăng ký làm backend. Trên màn hình services, nhấp Edit Configuration > Clone version x to edit > Origins > Create a host.

Sau khi thêm host, nhấp vào biểu tượng chỉnh sửa để thêm tên cho host. Đặt tên là upstash-db sẽ bằng tùy chọn backend khi chúng ta cấu hình client upstash-redis. Loại bỏ phần https:// khỏi url. Cuối cùng nhấp vào nút Activate ở góc trên bên phải để kích hoạt cấu hình với bản triển khai hiện tại.

Tích hợp Redis với Fastly Compute@Edge để Theo dõi Lượt xem Trang Hiệu quả

Local_server.backends.upstash-db là bắt buộc để bạn chạy hàm 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à triển khai của hàm serverless. Chỉnh sửa mã như bên dưới:

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 REST và token từ Bảng điều khiển Upstash.

Chúng ta đơn giản kết nối với Upstash bằng client upstash-redis. Chúng ta tăng một bộ đếm và trả về phản hồi.

Lưu ý rằng bạn không thể sử dụng các Redis client khác vì chúng sử dụng kết nối TCP không được hỗ trợ bởi Fastly Compute.

Khi xác thực với auth(), bạn cần thêm backend: upstash-db làm tùy chọn yêu cầu bổ sung. Điều này được yêu cầu vì Fastly Compute yêu cầu mọi kết nối mạng bên ngoài phải được đăng ký làm backend.

Chạy Cục bộ

Bạn có thể chạy hàm cục bộ bằng:

fastly compute serve

Xây dựng và Triển khai

Xây dựng và triển khai hàm của bạn với:

fastly compute publish

Ứng dụng của bạn sẽ được xây dựng và triển khai bởi Fastly. 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

Kết luận

Trong bài viết này, chúng ta đã tạo một ứng dụng rất đơn giản chạy trên Fastly Compute at Edge sử dụng Upstash. Chúng tôi rất mong 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.

https://developer.fastly.com/learning/compute/

https://developer.fastly.com/learning/compute/javascript/