前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决DNS问题|WunderGraph云使用NATS JetStream

解决DNS问题|WunderGraph云使用NATS JetStream

作者头像
CNCF
发布2023-02-12 17:14:51
1.1K0
发布2023-02-12 17:14:51
举报
文章被收录于专栏:CNCFCNCF

作者:Dustin Deus

WunderGraph

在 WunderGraph,我们正在为开发人员构建一个无基础设施的云,这意味着我们将开发人员从处理基础设施中解放出来。我们认为开发人员不需要精通部署和维护基础设施来构建全球 SaaS。

WunderGraph 就是为了让我们的生活变得更简单(我们使用 WunderGraph 来构建WunderGraph 云[1])。它允许你将不同类型的数据源(如 REST、GraphQL 和数据库)集成到一个统一的表示(虚拟图)中,从而使使用 API 依赖项的工作成为一种愉快的体验。

由于这种架构,我们可以为不同的平台和编程语言,自动生成优化的客户端,并且像身份验证、授权和缓存这样的核心功能都是现成的。因此,专注于编写你的业务逻辑,而不是管道设施。

以可伸缩和可靠的方式部署网关,并提供工具来操作它是一项复杂的任务。我们希望让客户,尽可能轻松地完成这项任务。因此,我们正在构建 WunderGraph 云。这是一项托管服务,可让你在几分钟内在全球范围内部署、构建和管理完全可定制的无服务器网关。在这方面,无服务器意味着当你不使用服务时,你不需要付费。WunderGraph 针对冷启动和高性能进行了优化,允许你支付无服务器价格,同时获得完整的服务器体验。

DNS 问题

图 1:之前

如果你需要独立解决这个问题,那么在全球部署 WunderNodes 听起来是一个具有挑战性的问题。幸运的是,我们依靠合适的基础设施合作伙伴,通过几个 HTTP 调用就可以实现这一点。从高层次的角度来看,WunderNode 是一个隔离网络中的虚拟机,它被小心地暴露在互联网上。最初,我们使用 Cloudflare Workers 将用户请求路由到正确的公共 IPv4 地址。所有数据都存储在最终一致的 Cloudflare KV 存储中。使用这种方法,我们经常会遇到 DNS 传播问题,因为每个新的 Ipv4 地址都必须在全球范围内进行分配和分发。此外,IPv4 地址的短缺让我们重新思考我们的架构。

解决方案:JetStream 作为全球分布式键/值存储

引入 Heimdall。Heimdall 是我们部署到所有接入点(point-of-presence,POP)的定制边缘代理。它负责管理主机->IP 路由,并作为我们分析仓库的事实来源。我们也不再依赖公共 IPv4 地址。相反,我们在BGP Anycast[2]网络中使用私有 IPv6 地址。每个应用程序都与其他应用程序隔离,只有 Heimdall 暴露在互联网上。这使我们能够将网络扩展到无限数量的应用,而不会遇到任何 IP 地址限制。

图 2:使用 NATS JetStream 后

当在 WunderGraph 云上提供新的应用程序时,我们需要一种可靠的方法来存储主机->IP 映射,并将更改传播到所有全局 Heimdall 实例。在尝试了不同的解决方案后,我们使用NATS JetStream[3]作为我们的分布式键/值存储。

它非常适合我们的用例。键/值存储是一致的、高度可用的和水平可伸缩的。此外,JetStream 允许我们观察变化,因此 Heimdall 实例可以得到有关变化的通知,并更新其路由表。重启后,它会将 JetStream 的最新状态加载到内存中。实际上,我们在不到一秒钟的时间内将更新发布到全球各地。

除了功能性,我们还喜欢 NATS 生态系统的质量。Golang 客户端维护积极,界面设计精良[4]

因此,JetStream 也非常适合我们架构的其余部分。我们希望 JetStream 不仅仅用于存储路由表。NATS & JetStream 将是我们计划提供的其它几项服务的支柱。

未来,WunderGraph 云将为你提供类型安全的 API,以支持以下用例:

  • 跨请求的持久数据的键/值存储。
  • WunderGraph 函数之间的发布/订阅功能。
  • 可靠实施工作流的类似时间的体验。
  • 还有更多……

总之,我们对 JetStream 及其可能性感到非常兴奋。作为早期采用者,我们很高兴与社区分享我们的经验和知识。如果你有兴趣帮助我们解决未来的一些挑战,请随时联系我们。我们在招人[5]

关于作者

Dustin Deus 是 WunderGraph 的联合创始人兼技术主管。他对 web、分布式系统和基础设施充满热情。他也是一个开源爱好者,喜欢与社区分享他的知识。你可以在Twitter[6]或者GitHub[7]上找到他。

参考资料

[1]

WunderGraph 云: https://wundergraph.com/

[2]

BGP Anycast: https://en.wikipedia.org/wiki/Anycast

[3]

NATS JetStream: https://docs.nats.io/nats-concepts/jetstream

[4]

设计精良: https://twitter.com/dustindeus/status/1613203957857361920

[5]

招人: https://wundergraph.com/jobs

[6]

Twitter: https://twitter.com/dustindeus

[7]

GitHub: https://github.com/StarpTech

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-07,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WunderGraph
  • DNS 问题
  • 解决方案:JetStream 作为全球分布式键/值存储
  • 关于作者
    • 参考资料
    相关产品与服务
    对象存储
    对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com