嘿!大家好!我是你们今天的边缘计算和无服务器应用导游。今天咱们聊聊 Cloudflare Workers 和 Deno Deploy 这俩神器,看看它们怎么帮我们把代码部署到离用户最近的地方,让速度飞起来!
第一站:边缘计算是个啥?
想象一下,你打开一个网站,如果服务器远在天边,数据要绕地球好几圈才能回来,这速度能快吗?肯定慢啊!边缘计算就是把计算搬到离用户更近的地方,比如离你家小区最近的服务器上。这样数据传输距离大大缩短,响应速度自然嗖嗖的。
打个比方,你点外卖,如果商家在隔壁小区,那肯定比从几条街外送来快多了,对吧?边缘计算就是这个“隔壁小区”的概念。
第二站:Cloudflare Workers – 边缘的瑞士军刀
Cloudflare Workers 是 Cloudflare 提供的边缘计算平台,它可以让你在 Cloudflare 的全球网络上运行 JavaScript、TypeScript 和 WebAssembly 代码。这意味着你的代码可以在全球几百个数据中心同时运行,离用户超级近!
Cloudflare Workers 的优势:
- 超快速度: 代码部署在边缘,延迟低到你想不到。
- 全球覆盖: Cloudflare 的网络遍布全球,你的应用也能全球加速。
- 无服务器: 不需要管理服务器,专注写代码就行。
- 按需付费: 用多少付多少,省钱!
- 安全可靠: Cloudflare 的安全防护能力杠杠的。
来点代码!
咱们先来写一个最简单的 Cloudflare Worker,返回 "Hello, Cloudflare Workers!"。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
return new Response('Hello, Cloudflare Workers!', {
headers: { 'content-type': 'text/plain' },
});
}
这段代码做了啥?
addEventListener('fetch', ...)
:监听fetch
事件,也就是浏览器发起请求的时候。event.respondWith(handleRequest(event.request))
:告诉浏览器,用handleRequest
函数来处理请求,并返回响应。handleRequest(request)
:这个函数负责生成响应,这里简单地返回了一段文字 "Hello, Cloudflare Workers!"。
部署你的第一个 Worker:
- 注册 Cloudflare 账号(如果还没有)。
- 安装
wrangler
CLI 工具:npm install -g @cloudflare/wrangler
- 登录 Cloudflare:
wrangler login
- 创建一个新的 Worker 项目:
wrangler init my-worker
(选择 "Hello World" 模板) - 修改
src/index.js
文件,把上面的代码复制进去。 - 部署:
wrangler publish
几秒钟后,你的 Worker 就部署到 Cloudflare 的边缘网络了!访问你的 Worker 的 URL,就能看到 "Hello, Cloudflare Workers!" 了。
更高级的用法:
Cloudflare Workers 还可以做更多事情,比如:
- 路由: 根据不同的 URL 路径,执行不同的代码。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
const pathname = url.pathname;
if (pathname === '/hello') {
return new Response('Hello from /hello!', {
headers: { 'content-type': 'text/plain' },
});
} else if (pathname === '/goodbye') {
return new Response('Goodbye from /goodbye!', {
headers: { 'content-type': 'text/plain' },
});
} else {
return new Response('Not Found', { status: 404 });
}
}
- 缓存: 缓存静态资源,减少服务器压力,加快访问速度。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const cache = caches.default;
let response = await cache.match(request);
if (!response) {
response = await fetch(request);
event.waitUntil(cache.put(request, response.clone()));
}
return response;
}
- 访问 Cloudflare KV 存储: Cloudflare KV 是一个全球分布的键值存储,可以用来存储配置信息、用户数据等等。
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const value = await MY_KV_NAMESPACE.get('my-key');
if (value) {
return new Response(`Value from KV: ${value}`, {
headers: { 'content-type': 'text/plain' },
});
} else {
return new Response('Key not found in KV', { status: 404 });
}
}
(别忘了在 wrangler.toml
文件里配置你的 KV 命名空间!)
第三站:Deno Deploy – 现代化的边缘部署平台
Deno Deploy 是 Deno 团队推出的边缘部署平台,它基于 Deno 运行时,支持 JavaScript、TypeScript 和 WebAssembly。Deno Deploy 的目标是提供一个简单、安全、快速的部署体验。
Deno Deploy 的优势:
- 简单易用: 部署过程非常简单,只需要一个 URL。
- 安全可靠: Deno 本身就注重安全性,Deno Deploy 也继承了这一特性。
- 全球分布: Deno Deploy 的服务器遍布全球,你的应用也能全球加速。
- 免费额度: 提供慷慨的免费额度,让你轻松上手。
- 与 Deno 生态系统无缝集成: 使用 Deno 编写的代码可以直接部署到 Deno Deploy。
来点代码!
咱们也来写一个最简单的 Deno Deploy 应用,返回 "Hello, Deno Deploy!"。
addEventListener("fetch", (event) => {
event.respondWith(
new Response("Hello, Deno Deploy!", {
headers: { "content-type": "text/plain" },
}),
);
});
这段代码和 Cloudflare Worker 的例子很像,只不过是用 TypeScript 写的。
部署你的第一个 Deno Deploy 应用:
- 注册 Deno Deploy 账号(如果还没有)。
- 把上面的代码保存到一个文件,比如
main.ts
。 - 把
main.ts
文件上传到一个公开的 Git 仓库(比如 GitHub)。 - 在 Deno Deploy 网站上创建一个新的项目,选择 "Deploy from Git"。
- 填写 Git 仓库的 URL,点击 "Deploy"。
几秒钟后,你的 Deno Deploy 应用就部署到边缘网络了!访问你的应用的 URL,就能看到 "Hello, Deno Deploy!" 了。
更高级的用法:
Deno Deploy 也可以做更多事情,比如:
- 数据库集成: Deno Deploy 可以直接连接到 PostgreSQL 数据库。
import { serve } from "https://deno.land/[email protected]/http/server.ts";
import { Client } from "https://deno.land/x/[email protected]/mod.ts";
const DATABASE_URL = Deno.env.get("DATABASE_URL")!;
const client = new Client(DATABASE_URL);
await client.connect();
console.log("Connected to database");
serve(async (req) => {
const url = new URL(req.url);
const pathname = url.pathname;
if (pathname === "/users") {
const result = await client.queryObject("SELECT * FROM users");
return new Response(JSON.stringify(result.rows), {
headers: { "content-type": "application/json" },
});
} else {
return new Response("Not Found", { status: 404 });
}
});
(别忘了设置 DATABASE_URL
环境变量!)
- WebSockets: Deno Deploy 支持 WebSockets,可以用来构建实时应用。
import { serve } from "https://deno.land/[email protected]/http/server.ts";
const sockets = new Set<WebSocket>();
serve((req) => {
if (req.headers.get("upgrade") === "websocket") {
const { socket, response } = Deno.upgradeWebSocket(req);
sockets.add(socket);
socket.onopen = () => console.log("socket opened");
socket.onmessage = (event) => {
console.log("socket message:", event.data);
for (const s of sockets) {
s.send(event.data);
}
};
socket.onerror = (event) => console.error("socket error:", event);
socket.onclose = () => {
console.log("socket closed");
sockets.delete(socket);
};
return response;
}
return new Response("Not Found", { status: 404 });
});
第四站:Cloudflare Workers vs. Deno Deploy – 选哪个?
Cloudflare Workers 和 Deno Deploy 都是强大的边缘计算平台,选择哪个取决于你的具体需求。
特性 | Cloudflare Workers | Deno Deploy |
---|---|---|
编程语言 | JavaScript, TypeScript, WebAssembly | JavaScript, TypeScript, WebAssembly |
部署方式 | wrangler CLI 工具 |
Git 仓库 |
数据库集成 | Cloudflare KV, Durable Objects | PostgreSQL (需要手动连接) |
安全性 | Cloudflare 的安全防护 | Deno 的安全模型 |
生态系统 | 庞大, Cloudflare 提供的服务和工具链完善 | 逐渐完善,与 Deno 生态系统紧密集成 |
适用场景 | API 网关,请求转发,A/B 测试,安全防护,静态资源缓存等 | 全栈 Web 应用,API 服务,实时应用等 |
学习曲线 | 相对陡峭,需要学习 wrangler 和 Cloudflare 的相关概念 |
相对平缓,如果熟悉 Git 和 Deno,上手很快 |
价格 | 按需付费,有免费额度 | 按需付费,有慷慨的免费额度 |
总结:
- 如果你需要强大的安全防护、广泛的全球覆盖、以及完善的工具链,Cloudflare Workers 是个不错的选择。
- 如果你喜欢简单易用的部署方式、现代化的开发体验、以及与 Deno 生态系统的无缝集成,Deno Deploy 更适合你。
第五站:边缘计算的未来
边缘计算正在快速发展,未来会有更多的应用场景涌现出来。 比如:
- 物联网 (IoT): 边缘计算可以用来处理来自 IoT 设备的大量数据,减少延迟,提高响应速度。
- 人工智能 (AI): 边缘计算可以用来在边缘设备上运行 AI 模型,实现智能化的本地处理。
- 游戏: 边缘计算可以用来降低游戏延迟,提供更好的游戏体验。
- 视频流: 边缘计算可以用来优化视频流的传输,提高视频质量。
边缘计算的未来充满想象,期待我们一起创造更多的可能性!
好了,今天的讲座就到这里。 希望大家对 Cloudflare Workers 和 Deno Deploy 有了更深入的了解。 记住,边缘计算的核心是把计算搬到离用户更近的地方,让速度飞起来! 如果大家还有什么问题,欢迎随时提问! 拜拜!