首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Slack 将数百万个并发的 Websockets 迁移到 Envoy 上经验分享

在这个问答内容中,Slack 是一个流行的团队协作工具,它使用 Websockets 来实现实时通信。Slack 面临的挑战是如何将数百万个并发的 Websockets 迁移到 Envoy 上。

首先,我们需要了解什么是 Envoy。Envoy 是一个开源的边车代理,它可以用于实现微服务的代理、网络控制和负载均衡等功能。在这个场景中,Envoy 可以用作 Slack 的代理,将 Websockets 请求路由到后端服务器。

在迁移到 Envoy 上的过程中,Slack 需要考虑以下几个方面:

  1. 性能:Envoy 需要能够处理数百万个并发 Websockets 连接,并保持高性能。
  2. 可扩展性:Envoy 需要能够根据需要进行扩展,以支持不断增长的 Websockets 连接数。
  3. 安全性:Envoy 需要能够保护 Websockets 连接的安全性,防止恶意攻击和数据泄露。
  4. 可观察性:Envoy 需要提供可观察性功能,以便 Slack 可以监控和分析 Websockets 连接的状态和性能。

为了实现这些目标,Slack 可以使用以下技术和策略:

  1. 使用 Envoy 的插件和过滤器:Envoy 提供了许多插件和过滤器,可以用于实现不同的功能,例如 Websockets 代理、负载均衡、熔断和限流等。
  2. 使用 Envoy 的负载均衡策略:Envoy 提供了多种负载均衡策略,例如轮询、加权轮询、最少连接和哈希等,可以根据需要进行选择。
  3. 使用 Envoy 的监控和指标:Envoy 提供了丰富的监控和指标,可以用于监控 Websockets 连接的状态和性能。
  4. 使用 Envoy 的安全功能:Envoy 提供了多种安全功能,例如 TLS 终止、身份验证和授权等,可以用于保护 Websockets 连接的安全性。

总之,将数百万个并发的 Websockets 迁移到 Envoy 上需要考虑多个方面,包括性能、可扩展性、安全性和可观察性。Envoy 作为一个强大的边车代理,可以帮助 Slack 实现这些目标,并提供可靠的 Websockets 代理服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Envoy v2构建Kubernetes Edge(Ingress)控制平面

在本文中,我们介绍Ambassador设计主要迭代,以及我们如何Ambassador与Kubernetes相结合。...所涉及机制基本很简单,Ambassador配置转换为Envoy配置是可靠Envoy基于文件热重启集成是可靠。 但是,这一版本Ambassador也面临着显着挑战。...唉,我们又遇到了一问题。在Azure Kubernetes服务,不再检测到Ambassador注释更改。...Ambassador迁移到Envoy v2配置和ADS API是一漫长而艰难过程,需要大量架构和设计讨论,以及大量编码,但结果早期反馈是积极。...Ambassador 0.50现已发布,因此你可以使用参加测试,并在我们Slack频道或Twitter与社区分享反馈。

82620

Slack 蜂窝架构迁移:背后技术策略与挑战

为了实现这些目标,在过去一年半里,我们 Slack 最关键面向用户服务从单体架构迁移到了基于蜂窝架构。...从整体看,这种架构效果是:每个服务似乎都有 N 虚拟服务,每个 AZ 中有一。重要是,我们可以通过对某个 AZ 内用户请求进行重定向来有效地 AZ 内所有筒仓服务流量抽走。...在过去几年里,我们进行了大量投入,从 HAProxy 迁移到Envoy/xDS 生态系统,因此我们所有的边缘负载均衡器现在都在运行 Envoy,并从我们内部 xDS 控制平面 Rotor 接收配置...如果 us-east-1 某个 AZ 权重变为零,Envoy 继续处理请求,但会将所有新请求分配给另一 AZ,也就完成了对这个 AZ 引流。...我们来看看这是如何满足我们目标的: 通过控制平面的传播为秒级,Envoy 负载均衡器立即应用新权重。 引流不会丢失请求,负载均衡层不会放弃任何一查询。 权重提供粒度为 1% 增量式引流。

24720
  • 多功能翻译工具:全球翻译、润色和摘要生成 | 开源日报 0914

    是一简单、安全且符合标准网络服务器,适用于最苛刻应用。...这允许使用广泛能力快速编写功能强大应用程序脚本 经过验证可靠:自 2016 年以来一直完全符合 Autobahn | Testsuite 规范,并为世界许多庞大加密交易所提供支持。...µWebSockets 处理每天价值数十亿美元交易量。如果您进行加密货币交易,则很可能会通过 µWebSockets 执行此操作。...可以根据用户需求进行筛选,帮助用户更准确地找到自己想学习或感兴趣课程。 为教育机构、老师和学生提供了一交流与分享经验、资源与知识平台。...该项目的核心优势和关键特点包括: 提供完整机器学习课程大纲 以自定进度或固定时间段两种模式进行学习 需要先前编程经验但无需了解机器学习领域知识作为先决条件 使用 Slack 频道进行问题讨论与支持交流

    22820

    Netflix零配置服务网格--ODCD(On-Demand Cluster Discovery)

    这就是服务网格用武之地:我们可以 IPC 功能集中在一实现中,并使每种语言客户端尽可能简单:它们只需要知道如何与本地代理通信。...通过中央控制平面配置代理能力是一杀手级特性:它允许我们动态配置客户端负载均衡,就好像它本身就是中心负载均衡器一样,同时作为服务之间请求路径负载均衡器,避免了单点故障。...所有集群推送到每个应用程序:这个方案很简单,但很快我们就发现,数百万 endpoint 推送到每个代理是不可行。...客户端请求取消暂停 Envoy 正常处理请求:使用负载均衡算法选择一 endpoint 并发出请求 整个流程需要几 ms 完成,但是仅在对集群发出第一次请求时完成。...将我们自适应限流实现移植到 Envoy 是一很好的开始-我们期待着与社区更多合作,我们对社区在增量 EDS 工作特别感兴趣。

    51531

    Vitess毕业回顾:简化迁移路径以替代MySQL将是加速采用关键

    作者:Abhi Vaidyanatha 去年11月,Vitess成为第八毕业CNCF项目,加入了Kubernetes、Prometheus、Envoy、CoreDNS、containerd、Fluentd...为了说明这个里程碑,我从Vitess共同创造者Sugu Sougoumarane大脑中选取了一些花絮,让他分享我们是如何走到今天,我们面临障碍,我们前进方向。...孵化 考虑到直到2018年2月CNCF才同意Vitess作为一孵化项目托管,Vitess已经在成为水平扩展MySQL实际标准方面取得了很大进步。...Vitess采用者和在Kubernetes运行的人数正在上升,我们预测这种相关性保持正值。...随着各大公司致力于完全迁移到Vitess,它已经成为云原生空间中最受信任存储解决方案之一。 如果您要迁移到Kubernetes,请不要忘记您数据。 我们要去哪里?

    74620

    Envoy服务网格在Lyft实践及未来路线图

    通常进行压力测试以确定服务变为过载请求率,然后限制设置在低于该点某处。在某些情况下,业务逻辑决定了速率限制。 在硬币另一面,我们有并发性,即同时使用多少单元。这些单位可以是请求、连接等。...实际,这通常用于保护 HTTP/1 集群,因为 HTTP/2 可以通过单个连接复用请求,因此限制了减速期间连接增长。 最大挂起请求数 :等待池中可用连接时排队最大请求数。...此外,它减少了直接回答问题支持负担(例如,在 Slack ,通过电子邮件,甚至是亲自回答!)。它允许您轻松地某人指向某个链接;这种做法比人们反复回答相同问题要好得多。...在接下来几个月里,Lyft 将与 Netflix 并发限制库背后团队合作,基于其库系统带入 Envoy L7 过滤器。...这意味着在 Lyft 以及使用 Envoy 任何其他公司我们移到自动化系统,我们服务工程师不必静态配置并发限制。

    78040

    Envoy on Windows GA了!

    你现在可以在 Windows 使用 Envoy 来构建原生云应用程序,改善遗留应用程序可观察性,甚至可以 Envoy 部署为边缘代理与 Windows 应用程序一起。...我们在综合测试中观察到,通过切换到合成边缘事件,Envoy 截获事件减少了 3 个数量级。这是一显著改进,允许 Windows Envoy 扩展到多个并发连接。我们计划进一步完善事件机制。...新流访问日志记录器[4]允许操作人员侦听器和管理门户产生访问日志重定向到流程标准输出。Envoy 使用正确本地 API 写入标准输出/错误,这取决于它运行平台。...435 Envoy 测试中有 416 在每次提交时都在 Windows 运行。...由于缺乏平台对特定功能支持,16 测试没有在 Windows 编译,其余 3 测试在新添加 QUIC 支持中失败。

    1.2K30

    云原生计算基金会宣布Envoy毕业

    “随着当今许多规模最大组织用户,以及一些非常聪明开发人员关注,我们很高兴继续培养Envoy社区作为一新毕业项目。”...从CNCF毕业是一重要里程碑,表明Envoy社区很强大,该项目已准备好进行广泛企业采用。”...Lyft工程副总裁Peter Morelli表示,它已成为一至关重要且可靠组件,使Lyft可以扩展到数百种服务,数千名工程师,以及每秒数百万流量请求。...“在Envoy之前,从来没有一集中软件是开放,高性能,可扩展,并且提供网络和安全行为可编程性作为一流概念,”Tetrate首席执行官Varun Talwar说道,这是一关于Envoy和服务网格隐形创业公司...其他资源 CNCF博客 加入SlackCNCF对话 CNCF通讯 CNCF推特 特使Twitter

    54120

    Istio 正式成为 CNCF 孵化项目

    经过近半年尽职调查,9 月 28 日,CNCF 正式宣布技术监督委员会 (TOC) 已投票用过 Istio 作为 CNCF 孵化项目。 Istio 服务网格在逻辑分为数据平面和控制平面。...数据平面由一组智能 Envoy 代理组成,最常部署为 Sidecar。这些代理调解和控制微服务之间所有网络通信。控制平面则管理和配置代理以路由流量。...近期,Istio 宣布引入全新无 sidecar 数据平面模式 Ambient Mesh,通过数据平面功能从 sidecar 容器转移到网络基础设施来解决常见操作挑战。...Istio 也继续支持 sidecar 部署模式,这两种模式无缝互通。 Istio 始于 2016 年,最初由 Google、IBM 以及构建 Envoy 代理 Lyft 团队共同开发。...如果你看好一事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,你一定比现在更好!如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车资本。

    22240

    云原生如何驱动世界最大散户股票投资平台 Zerodha

    大量已有的导出器和自定义导出器带来书写便利,让我们能在短时间内实现大范围覆盖。” 此外,Zerodha 已经开始将其服务从 VM 迁移到容器,并在 2020 年逐步迁移到 Kubernetes。...NATS 解决了我们用其他信息流和 PubSub 系统带来所有问题。” Zerodha 也正在准备采用 CNCF 其他项目,比如作为边缘代理用于应用程序间网络 Envoy。...,打败超大型银行旗下大型股票经纪公司,”Nadh 说,“我们使用自己堆栈,就能实现前所未有的规模,同时处理 100 万并发用户,这些用户通常每秒钟都会收到数千万流媒体市场报价,完成数百万次低时延交易...我们日交易量约占印度所有散户股票市场交易量20%。” Zerodha 团队计划在不远将来,着重大多无状态工作量迁移到 Kubernetes ,实施服务网格,采用更多云原生可观测性工具。...公司已经看到了云原生裨益,继续沿着这条路走下去。 “云原生使公司能够进行更快迭代和部署,并拥有易于管理定义良好移动部分,”Nadh说。

    85410

    开源存储系统Vitess加入CNCF

    它是用于部署,扩展和管理大型MySQL实例集群数据库解决方案,其架构可以像在专用硬件那样有效地在公有云或私有云架构中运行,能够很多重要MySQL特定与NoSQL数据库可扩展性加以结合并实现扩展...◆ 从裸机迁移到私有云或公有云 ◆ 部署和管理大量MySQL实例 ◆ Vitess使用本地查询协议包括兼容JDBC和Go数据库驱动程序,此外,它还实现了几乎与任何其他语言兼容MySQL...通过封装分片路由逻辑,Vitess允许应用程序代码和数据库查询对于数据分布到多个分片保持不变。借助Vitess,组织甚至可以根据需求增长来分割和合并碎片,原子切割步骤只需要几秒钟。...Booking.com,GitHub,HubSpot,Slack和Square在内组织也是该项目的积极贡献者。...,CNI,Envoy,Jaeger,Notary、TUF和Rook。

    1.6K90

    Envoy架构概览(2):HTTP过滤器,HTTP路由,gRPC,WebSocket支持,集群管理器

    HTTP路由 Envoy包含一HTTP路由器过滤器,可以安装它来执行高级路由任务。...这对于处理边缘流量(传统反向代理请求处理)以及构建服务以服务Envoy网格(通常经由主机/权威HTTP头部路由以到达特定上游服务集群)是有用Envoy也有能力配置为正向代理。...在转发代理配置中,网状客户端可以通过将他们http代理适当地配置为Envoy来参与。在高层次,路由器接收一传入HTTP请求,将其与上游集群进行匹配,获取到上游集群中主机连接池,并转发该请求。...通过运行时间值流量从一上游群集转移到另一(请参阅流量转移/分流)。 使用基于权重/百分比路由(请参阅流量转移/拆分)跨多个上游群集进行流量分流。 任意头匹配路由规则。 虚拟集群规范。...连接语义 尽管WebSocket升级是通过HTTP / 1.1连接进行,但是WebSockets代理与普通TCP代理类似,即Envoy不会解释websocket框架。

    2.2K60

    解析envoy处理http请求(下):事件模型和连接管理

    Envoy并发架构 摘自 https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310 Envoy进程由一Main Thread和多个Worker...建立连接时候,因为所有WorkerEventLoop都注册了listening fd,会由内核决定分配给哪个Worker 当一下游client连接到了Envoy,在保持连接不断情况下,会和同一...Envoy里面采用这个函数把同一listening fd注册到所有的Workereventloop中,当新连接来时候,由内核选择应该分发给哪个Worker event_assign 把一fd和一...,用于管理多个WorkerThreadLocalClusterManagerImpl ThreadLocalCusterManagerImpl 每个Worker都拥有一,用于管理上游连接和负载均衡上下文...)移到busy_clients.front(), 并发送请求; -向上游连接connected时,如果 (!

    2.4K40

    Cilium服务网格哪些特性最重要?

    (如果你是生产环境用户,而你组织很高兴分享这个作为公共知识,我们希望看到你拉 PR,把自己添加到Cilium 用户名单[3]!) 哪些特性是最重要?...我们可以扩展 Cilium,以接受和理解已经存在控制平面配置,如 SMI、Istio 或 Linkerd CRD——事实,实现对其中一支持并不排除将来实现其他配置可能性。...在#service-mesh-beta Slack 频道[5]初步讨论表明,SMI 将是一受欢迎选择——你观点是什么?...Helm chart 配置——Cilium CLI 是配置 Cilium 很好方法,但是我们想要给出一些 Helm chart 例子 性能基准测试——Isovalent 团队已经分享了一些移除边车... TLS 终止与自动证书管理集成 要你参与! 我们很乐意在接下来几个月里听到你认为应该添加到 Cilium Service Mesh 内容。最简单参与方式就是回答我们最新调查[10]。

    82630

    波兰在线购物网站Allegro.pl迁移到服务网格经验分享

    让我告诉你一我有幸从事项目的故事。 为什么要迁移到服务网格 我不准备对 Service Mesh 背景知识做过多讨论,因为已经有大量关于此主题文章。...我们刚刚开始服务迁移到 Kubernetes。在合理情况下(并且需要将其与我们技术栈集成),我们也会使用公有云。一些服务打包在 Docker 中。但是我们架构不仅仅有微服务。...我们尝试了 Istio,结果证明仅要求 k8s 容器提供网络隔离。我们需要一定制控制平面所有的东西整合在一起。同时我们使用Envoy作为最稳定、最先进 L7 代理,其可以满足我们需求。...注册使用Envoy 端口,而不是服务端口。使用这项技术,我们实现了迁移第一步-服务入口流量转移到 Envoy。 如果有出口流量,事情就不那么容易了。...这引起了一些意外,例如 Envoy 不支持 HTTP CONNECT 方法1或者 H2 upgrade 机制2 我们发现另一有趣问题是在 Envoy 部署到 PHP 单体应用环境中之后,Envoy

    77320

    【译】Envoy threading model

    这种设计使得大多数代码更易于编写,并且可以非常好地扩展到几乎无限数量工作人员。 然而,一主要问题是,从内存和连接池效率角度来看,调整 -- 并发选项实际非常重要。...线程本地存储 由于Envoy主线程职责与工作线程职责分开,因此需要在主线程完成复杂处理,然后以高度并发方式使每个工作线程可用。 本节介绍了Envoy高级线程本地存储(TLS)系统。...在下一节中,我描述如何使用它来处理集群管理。 ? 如已经描述那样,主线程基本处理Envoy过程中所有管理/控制平面功能。...EnvoyTLS系统工作原理如下: 在主线程运行代码可以分配进程范围TLS槽。 虽然是抽象,但实际,这是一允许O(1)访问向量索引。 主线程可以任意数据设置到其槽中。...正如我在Twitter简要提到那样,该设计也适合在DPDK之类完整用户模式网络堆栈运行,这可能导致商用服务器在执行完整L7处理时每秒处理数百万请求。 看看未来几年建成什么将是非常有趣

    1.2K50

    Istio 正式成为 CNCF 孵化项目

    经过近半年尽职调查,9 月 28 日,CNCF 正式宣布技术监督委员会 (TOC) 已投票用过 Istio 作为 CNCF 孵化项目。 Istio 服务网格在逻辑分为数据平面和控制平面。...数据平面由一组智能 Envoy 代理组成,最常部署为 Sidecar。这些代理调解和控制微服务之间所有网络通信。控制平面则管理和配置代理以路由流量。...近期,Istio 宣布引入全新无 sidecar 数据平面模式 Ambient Mesh,通过数据平面功能从 sidecar 容器转移到网络基础设施来解决常见操作挑战。...Istio 也继续支持 sidecar 部署模式,这两种模式无缝互通。 Istio 始于 2016 年,最初由 Google、IBM 以及构建 Envoy 代理 Lyft 团队共同开发。...CNCF 介绍了 Istio 当前主要成绩: 来自 15 家公司 85 名维护者 8,800 名个人捐款者 40,000 Pull request 20,000 issue 超过 260 版本

    27230

    在Kubernetes上部署Argo Rollouts和Ambassador进行灰度发布

    假设你推出了服务 v1.1 版本,但它有一 bug。不是立即将它暴露给所有的流量,而是通过 v1.1 暴露给流量子集(例如 5%)来开始发布过程。...虽然理论很简单,但在实践中使用灰度发布需要将 CI 流水线与持续部署工作流(如 Argo)集成在一起,并使用 API 网关来管理到服务流量。...AmbassadorAPI 网关 Ambassador 是一基于 Envoy 代理构建开源 kubernetes 原生 API 网关和入口控制器。...这些配置应用到集群启动 echo-canary 服务,该服务将把 20%流量路由到 canary,持续 10 秒,然后在 10 秒内提升到 50%,然后再提升到 100%。...如果你有兴趣跟踪我们将该功能合并到 upstream 进度,你可以查看这个pull 请求[3]。请试一下,并在Twitter[4]或Slack[5]分享使用体验!

    89520

    Netflix 为 Envoy 开发新功能,实现零配置服务网格

    自 Netflix 从 2010 年所有基础设施转移到云端 (AWS),就一直需要使用针对云原生环境工具。其中一些工具是商业版,一些是内部开发。...使用 Eureka IPC 这种架构存在了很长时间,不过 Netflix 因为一些原因需要迁移到 服务网格,主要原因如下: 现在使用了 REST、graphQL 和 gRPC 混合 IPC...根据服务调用图自动生成 Envoy 配置。 所有的集群信息推送给每个应用。 但所有这些方案都存在缺点,因此他们最终解决方案是在运行时按需获取集群信息。...状态信息返回集群端点; 客户端请求继续; Envoy 像往常一样处理请求:使用负载均衡算法选择一端点并发出请求。...Netflix 和 Envoy 社区继续合作改进 Envoy

    18920
    领券