ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

GeoLibre Cloudflare Workers架构全解析:viewer、tiles、collab与AI代理的四大边缘服务

GeoLibre Cloudflare Workers架构全解析:viewer、tiles、collab与AI代理的四大边缘服务 GeoLibre Cloudflare Workers架构全解析viewer、tiles、collab与AI代理的四大边缘服务【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibreGeoLibre是一款轻量级云原生 GIS地理信息系统平台可以在浏览器、桌面端、移动端和 Jupyter 笔记本中可视化、探索和分析地理空间数据。它的云端体验并非只靠一个单体服务器而是由部署在Cloudflare Workers上的四个边缘服务共同支撑viewer网页查看器代理、tiles全球行星瓦片服务、collab实时协作中继与 AI 代理安全的大模型网关。 本文带你从零理解这四块拼图各自解决什么问题、如何协作让你既看得懂架构也能自己动手部署。一、为什么用 Cloudflare Workers简单来说GeoLibre 的前端是一个纯浏览器应用但它需要访问很多浏览器够不着的外部资源——比如不开放跨域CORS的行星影像、需要密钥保护的大模型接口、多人实时协作的会话状态。如果把这些逻辑写进浏览器密钥会泄露、跨域会被拦截、状态也没处保存。GeoLibre 的解法是把它们拆成 4 个小型 Cloudflare Workers 服务源码集中在 workers/ 目录每个服务只干一件事且全部带严格的白名单防护保证它们永远不会变成可被滥用的开放代理。二、viewer给网页版一个干净的域名 源码位置workers/viewer/src/index.ts、workers/viewer/src/proxy.tsviewer 是历史最久、也最低调的一个 Worker负责旧域名viewer.geolibre.app配置见 workers/viewer/wrangler.toml的访问。它本质上是一个反向代理把请求转发到真正托管静态构建文件的源站。为什么不直接让 Cloudflare 托管静态文件因为 GeoLibre 内置了一个约 32 MiB 的 DuckDB WASM 资源用于在浏览器里跑 SQL 分析超过了 Cloudflare 单文件 25 MiB 的限制。所以源站继续由免费静态托管承担Worker 只负责搬砖。它的安全设计值得一提只允许GET/HEAD请求拒绝其他方法路径先做清洗拦截路径穿越和编码变体保证不会跳出允许的目录服务端跟随重定向时只跟随留在同一前缀内的跳转最多 5 跳主动剥离 Cookie、鉴权头和上游返回的 Set-Cookie防止借这个域名种下别的站点的 Cookie。 对新手而言它示范了一个标准套路公开代理 白名单 方法限制 响应清洗。三、tiles把火星、水星装进你的浏览器 源码位置workers/tiles/src/index.ts这是四个 Worker 里最有趣的一个一个加 CORS 头 边缘缓存的瓦片服务让 GeoLibre 的行星底图火星、月球、水星、金星、木星的卫星、土卫六、冥王星等能在任何环境里正常渲染。它解决两个痛点CORS 拦截行星影像源站OpenPlanetaryMap 等不返回跨域头浏览器用fetch()拉瓦片时会被直接拦截地图显示全黑。Worker 在服务端代取服务端之间没有 CORS 限制再补上跨域头返回坐标系不匹配USGS 天文地质 WMS 只提供等距圆柱投影EPSG:4326而地图引擎需要 Web 墨卡托EPSG:3857。Worker 的/wms/路由会在边缘实时重投影每一块瓦片见 workers/tiles/src/reproject.ts。关键性能技巧每一块瓦片只计算一次之后全部命中 Cloudflare 边缘缓存。所以你在全球任何角落打开火星地图都是毫秒级的响应同时大幅减轻上游源站压力。此外它还挂了几个命名代理小路由OAM 影像搜索、CKAN 目录搜索、Source Cooperative 元数据、PMTiles 分块读取等全部限定固定上游、白名单参数、边缘短缓存——例如 PMTiles 路由只接受有界字节范围请求单次最多 32 MiB防止有人借道下载上百 GB 的全星球数据。四、collab多人实时协作的信标 源码位置workers/collab/src/index.ts、workers/collab/wrangler.toml当你在 GeoLibre 里点协作系统会生成一个8 位会话码采用去掉易混淆字符 0/1/O/I 的 base32 字母表方便口口相传。这个会话码就是整个架构的信标每个会话对应一个Durable ObjectCloudflare 的有状态边缘单例所有参与者的 WebSocket 都落在同一个 actor 上改动被实时广播给所有人采用 SQLite 支撑的 Durable Object WebSocket 休眠 API空闲会话不占内存成本极低前端配有来源白名单和速率限制例如每分钟最多 10 次创建请求防止被恶意刷会话。如果你更喜欢自托管项目还提供了 workers/collab-node/ —— 一个 Docker 友好的 Node 版中继用同样的协作协议、SQLite 持久化会话状态一条命令即可跑起来并附带冒烟测试脚本验证进程活着、HTTP 通、WebSocket 握手成功。五、AI 代理把模型密钥锁在服务端 源码位置workers/ai-proxy/src/index.ts、workers/ai-proxy/README.md这是安全设计最重的一个服务。它给 GeoLibre 提供一个 OpenAI 兼容的/v1/chat/completions接口背后走 Cloudflare AI Gateway 统一 API——同一套请求格式可切换 OpenAI、Anthropic、Google Gemini 乃至 Workers AI模型白名单见 workers/ai-proxy/wrangler.jsonc。它做对了几件关键的事密钥绝不出现在浏览器调用方必须携带服务端签发的实例令牌X-GeoLibre-Instance-TokenWorker 用先哈希再恒定时间比较的方式校验连令牌长度都防探测多重限额模型白名单、请求体大小上限、输出 token 上限、每客户端速率限制默认 10 次/分钟chat 与搜索共享同一预算流式响应打字机效果丝滑呈现可选的/search与/tavily搜索路由未配置密钥时返回明确的 503而不是默默失败。自托管时nginx 会在转发/ai请求时自动注入令牌浏览器只需要账号密码即可完成整条链路——细节可参考官方 workers/ai-proxy/README.md 与 docs/self-hosting.md。六、一张表看懂四大服务服务域名核心能力关键技术viewerviewer.geolibre.app网页版静态资源代理安全反代、路径清洗、重定向白名单tilestiles.geolibre.app行星底图瓦片与元数据代理边缘缓存、实时 WMS 重投影、有界分块读取collabcollab.geolibre.app实时多人协作Durable Object、WebSocket 休眠、会话码ai-proxyai.geolibre.app大模型推理与搜索网关实例令牌、模型白名单、限速、流式输出七、对新手与自托管用户的启示 这套 Workers 架构给普通用户的直接收益是功能开箱即用、速度飞快、密钥绝对安全。而如果你想自托管 GeoLibre可以学到三个可复用的工程范式小而专每个 Worker 只做一件事出问题时定位和替换都很便宜白名单优于黑名单上游、路径、参数、来源全部只放行已知默认拒绝边缘缓存换体验把昂贵计算重投影、推理前置校验变成一次性成本靠缓存摊平。想继续深挖部署细节推荐阅读 docs/architecture.md、docs/deployment-capabilities.md 以及 docs/server-api.md。GeoLibre 的这套边缘服务架构正是云原生 GIS口号落地的缩影把重活交给边缘把轻快留给用户。✨【免费下载链接】GeoLibreA lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs in the web browser, on the desktop, on mobile, and inside Jupyter notebooks.项目地址: https://gitcode.com/GitHub_Trending/ge/GeoLibre创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表