如何在多地域部署Firebase Functions及Firestore等服务?
Firebase目前没法做全局部署,官方仅提供eur3(覆盖欧洲)和nam5(覆盖美国)两个多地域节点。如果要同时覆盖欧美地区,结合你用到的Functions和Firestore,圈里常用的解决思路有两种:
拆成两个Firebase项目分别部署
搭建两个独立的Firebase项目,一个对应欧洲区域,配置eur3节点的Firestore和Functions;另一个对应美国区域,使用nam5节点资源。这种方式的优势是用户访问本地域服务,延迟能压到最低;但缺点也很明显,两个项目需要分开维护,数据同步、权限配置都要做双份,适合对延迟零容忍的场景。单项目下多地域部署Functions,Firestore固定位置
让Firestore使用默认的GCP资源位置(或者选一个你认为合适的核心区域),同时分别在eur3和nam5两个地域部署Cloud Functions。通过路由规则引导欧洲用户访问eur3节点的函数、美国用户访问nam5节点的函数,数据统一存储在同一个Firestore实例中。这种方式不用处理多项目的维护成本,数据一致性更容易保障;但Firestore的访问延迟会受用户与存储位置的距离影响,适合对数据一致性要求高、延迟容忍度适中的场景。
不少做跨欧美业务的开发者都实践过这两种方案:
大部分人优先选择第二种方案,部署时通过指定地域的命令分别发布函数即可:firebase deploy --only functions --region eur3firebase deploy --only functions --region nam5
再配合CDN缓存静态资源,用户体验不会太差。如果是对数据延迟要求极高的业务(比如实时协作类),就会采用第一种方案,同时用Cloud Functions编写同步脚本,实现两个项目Firestore的数据双向同步,保证业务数据一致。
内容的提问来源于stack exchange,提问作者z3r0

