建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

Facebook 为工作场所发布安全检查危机应对工具 - Meta 工程

GG网络技术分享 2025-03-18 16:05 2


在任何紧急情况或危机中,高效、大规模地发送和接收实时警报是关键任务。 Facebook 的安全检查功能成功的原因之一是它能够立即识别可能在受影响地区的人,收集他们的安全状态,并将这些信息实时发送给朋友和家人。

Facebook Enterprise Engineering 通过我们的 Workplace 业务协作工具为公司开发了类似的功能。 工作场所安全检查包含重要的修改,以支持公司指定的安全团队进行管理,并确保即使在多个公司同时受到影响时也能确保准确性,这可能发生在重大危机的情况下。

如何对工作场所功能进行安全检查

在 Workplace 中,指定的安全操作员通过三个步骤创建并向其工作社区发送安全检查通知:

  1. 定位: 确定危机可能影响谁。
  2. 通知:通过 Workplace Chat、News Feed 顶部的帖子、推送通知和电子邮件提醒受影响的员工。 请他们确认他们是否安全或需要帮助。
  3. 迭代:继续尝试与任何尚未确认安全的人联系——通过不同的渠道,直到每个人都被考虑在内。
安全检查A

为了确保组织中的正确人员(即安全或人力资源)管理工作场所的安全检查,公司的系统管理员启用该工具,然后可以指定一个安全团队。

安全检查B

将内部工具大规模发展为外部产品

这个 Workplace 功能的想法始于我们伦敦办公室的一次公司黑客马拉松。 当我们考虑我们的外部客户可能如何使用工作场所安全检查时,我们必须重新评估我们的整个设计,为企业增强规模、速度和准确性。 我们意识到这将需要一些新的设计考虑和 Workplace 平台的整个产品的修订。

从本质上讲,我们的内部工具是建立在一个数据库上的,该数据库对于可能需要支持多家公司的数百万人的产品来说是不可扩展的。 为了解决这个问题,我们将存储移至 TAO,这是 Facebook 的社交图分布式数据存储,Workplace 信息所在的位置。 随着转向外部产品,我们不能再依赖我们标准的内部访问管理和数据安全控制。 因此,我们创建了自己的访问管理和强大的隐私检查模块。 随着我们继续大规模构建生命安全系统的旅程,我们专注于产品工作流程的三个主要部分:定位、通知和迭代。

定位

一旦启动危机响应,安全或人力资源人员必须首先找到受影响的人。 安全和人力资源人员从一系列不同且独特的资源中为他们坐着和出差的员工提供服务。 我们很快意识到,我们希望通过系统的人员定位方式来扩充这些数据。

我们的下一步是选择各个公司填充的 Workplace 个人资料位置作为主要信息来源之一。 我们的主要问题是这个字段是自由格式的文本,每个公司都可以有自己的文本。 因此,我们无法保证有效的位置。 为了解决这个问题,我们创建了一个位置解析器,它可以为给定的公司运行并尝试索引其所有位置。 这些索引位置将与危机位置一起用于定位员工。

鉴于未来可能会在平台上收集更多定位器信息,我们将定位类实现为可扩展的。 对于我们的内部用例,我们可以通过连接其他内部工具(如旅行系统、日历等)来扩展系统定位功能。减少处理时间以确保人员定位并添加到危机中至关重要尽快。 我们创建多个同时运行的异步作业,以根据危机位置定位并将人员添加到危机中。 使用 TAO 作为后端有助于我们使并行写入在多个分片上更快地工作。

通知

为了扩大对受影响人群的影响,我们在许多渠道和表面实施通知:我们跨越通知宝石,在提要、聊天和电子邮件的顶部发布,跨平台,如网络、移动和移动网站。 我们使用标准通知框架,它为所有 Facebook 和 Workplace 通知处理数百万条通知。

安全检查C1

这种针对大量人员的多渠道分发可能会导致大量响应。 每次安全或人力资源管理员发送通知时,它都会进入我们通用的机器工作池,称为“异步层”,它处理创建和执行我们的通知作业。 最初,我们设计了一个作业来处理一些固定数量的通知,但我们很快注意到我们需要对所有故障进行特殊处理。 因此,我们将设计更改为每人一份作业,这样可以在发生故障时通过简单的重试逻辑轻松管理大量作业。 我们还跨不同批次扇出异步作业,同时仍确保在几秒钟内发送所有通知。 对于机器人通知,我们使用基于我们的 Messenger 基础设施构建的 Workplace Chat,它使我们能够可靠地发送通知并远远超出我们的即时需求。

迭代

由于指定的安全操作员使用安全检查来定位、通知和迭代,我们面临着一个额外的技术挑战来解决我们如何处理响应。 一个重要的考虑因素是确保计数与实时响应完全匹配。 为此,我们将人们的状态作为图表上的边存储到安全检查中,以便快速准确地进行查询。 此外,在处理大量请求时,我们通过排队系统汇集所有请求,以确保我们不会丢失任何数字,但我们会立即更新实际状态,以便为安全和人力资源团队提供当前信息。

该系统是使用我们的开源技术构建的,例如 React、Relay、GraphQL 和 Hack。 我们的状态更新利用 GraphQL 订阅,作为页面加载的一部分,它订阅所有状态更改事件,以便它们实时更新。

基于我们对 Facebook 社区的安全检查所做的工作,我们还进行了广泛的模拟,以评估极端通知和响应工作负载的弹性。 这些模拟以编程方式运行,以确保我们不断测试我们所依赖的底层基础设施和服务。 我们通过在一天中不同时间运行的脚本(因为危机可能在任何时间、任何地点发生)在一个测试实例上执行此操作,该测试实例会产生危机、定位大量人员、通知他们并接收随机响应高峰.

借助“工作场所安全检查”,我们拥有了一个工具,该工具始于伦敦的一次黑客马拉松,现已发展成为企业员工安全功能。 我们很高兴在未来几个月内向 Workplace Premium 用户提供它。 有关更多详细信息,请访问 freewp.io/workplace。

标签:

提交需求或反馈

Demand feedback