简介:人们关注Wolai的独特功能和舒适的用户体验,并更多地关注这些功能背后的技术架构。在一个阳光明媚的下午,我们邀请Wolai.com的创始人与我们讨论Wolai背后的无服务器架构。
作者:Mirira |wolai.com创始人
我们的日常工作场景几乎与“云文件”几乎是不可分割的。目前,人们对文件的需求不再只是一个简单的记录,而是扩展到办公室协作,信息组织,知识共享等。,Wolai由于新功能,快速迭代,平稳,平稳的位置,有效的信息组织方法和“信息阻止”信息集成而进入人们的注意力,成为独特的存在。People请注意Wolai的独特功能和舒适的用户用户的用户经验,并更多地关注这些背后的技术架构。在一个阳光明媚的下午,我们邀请Wolai.com的创始人与我们讨论Wolai背后的无服务器架构。
在产品“ Wolai”的开头,我们希望将结构完全放在无服务器上。因此,在技术选择阶段,对中国的几种家用产品进行了详细的研究,我们发现我们决定选择无服务器体系结构可全面使用阿里巴巴云功能计算(FC)。
作为Office协作应用程序,Wolai在同一时间具有多个人编辑文档功能。要实现此功能,一个非常稳定的Web服务界面和具有扩展能力,高频率写入和阅读分离的分布式数据库非常重要。,当我们发现无服务器产品可以与分布式数据库匹配时,我们最初确认了Wolai的主要体系结构。
接下来,我们开始验证在阿里巴巴云上使用阿里巴巴云功能(FC)的可行性。通过验证阿里巴巴云功能计算(FC)不仅可以帮助我们解决上述问题,而且还可以帮助我们大力节省投资人工成本和使用成本用于云资源。
接下来,我想聊天,为什么在公司开头,我坚持选择无服务的体系结构。我在一家付款公司工作,所以我使用了一家更典型的付款公司来解释。
不可避免的流动流动流
假设您已经成立了一家付款公司,并且需要得到其背后200多个系统的支持。如果这些系统中的大多数基于Java,则意味着付款业务背后的机器是一个集群。您需要对这些集群进行分组,然后一一进行上网,这需要巨大的人工成本。
除聚类外,研发人员还需要注意缓存和日志系统中间的系统是否具有瓶颈。发生问题时,有必要在整个操作和维护系统上花费巨大的能量在公司的开发中解决了它,贵公司的服务水平终于上升了。目前,您会发现成本也大大增加了。例如,您需要部署新机器,并且需要花费大量时间来进行计算的扩展和收缩。工作(恰恰是“拉伸”,根本没有办法“缩小”,对吗?)流量扩展将是您遇到的第一个问题,这也是不可避免的问题。
交通高峰谷的问题
接下来,您将遇到交通高峰问题。因为付款请求在晚上,白天或促销或尖峰期间相对较小,付费请求的数量可能特别较高。同时,您需要快速拨打计算资源,这需要大量操作和维护。
对于刚刚成立的公司,您很难在操作和维护服务器上投入大量能量。这次您可以选择无服务器,这可以帮助您解决这些问题。维护服务器“投放”到无服务器,而您真正需要注意的是您自己的业务逻辑。
过去,我们做了Web服务。开发的重点是在Web服务器上进行各种优化。实际上,这些任务解决了一个问题:在数量级之后,服务器性能是否可以抵抗?如果您无法优化?开发人员是否会呢?,消耗很多时间。当我们使用功能计算时,删除大部分Web服务器的工作是相同的。这大大节省了人工成本并提高效率。使用功能计算,从开发到启动过程,R&D可以放置商业代码上的大多数能量,也无需关心服务本身如何稳定。
自2020年6月15日开展业务以来,我们从未遇到服务下降或需要在线维护的问题,而这些问题是常见的问题,然后使用功能来计算。过去,我们需要花很长时间才能找到问题的原因。我们可能需要升级Web服务,添加一些机器,甚至进行反向代理和负载。该服务仍将得到维护,并且我们仍然很难在线继续服务。因此,一个功能点,该功能该功能计算对我来说非常重要,是连续服务的能力。通过使用功能计算,我的业务可以稳定而连续地增加发行版。
当我在上一个家庭工作时,我每两周发布一次版本。每次我发布非常详细的发行列表列表时,发行版中涉及许多条件和依赖项。有了一些错误,整个版本可能会变成一个小事故,甚至是一次大事故。无服务器上的整个架构并拆分了所有功能,事故的可能性大大降低了。即使存在问题,我可以通过快速回滚来解决问题。现在,我们的研究和开发习惯每天至少发布一个版本,当天解决的所有问题将发布。与传统软件公司相比,将我们的迭代部署在无服务器体系结构上的速度要快得多。
快照保存系统,以解决协作编辑算法的问题
对于诸如Wolai之类的合作办公产品,协调编辑器是产品的重中之重。此功能对算法有很高的要求。通过使用功能,我们还可以很好地解决此问题。
Wolai Cloud Note函数具有信息块(块)的概念,该功能是减少用户可以从“文件”联系到“信息块”的最小信息单元。可以简单地进行编辑和移动,并在实时演示后写入页面。因此,我将使用“块”来参考信息块。
红色底部的底部上方都是独立的块
每个密钥运行后,我们的前端将具有类似的快照保存机制。如果用户的键非常快,他的多个键可能会在特定时间部分中形成交易,并将其发送回此功能计算。这些操作。当第二个用户同时执行按钮时,如果他对同一块进行相同的密钥操作,他也会触发相同的操作。
我们将计算这些操作用户对该块在功能中的实际影响的顺序。最后,应该将其变成一个,然后该函数计算也将发送队列请求。在属于页面的更改事件后,它将其扔入此redis中。一旦有一个块或页面在5分钟内更新,我们将调整功能,然后将整个页面和整个块转到整个块上。加拿大一个快照。因此,我们将功能和队列调用组合到一个自动化系统中。
一旦用户在页面或块上具有编辑器后,我们将在固定的时间内生成快照。现在,我们将快照保存为一个块(等于单个细分文本或图片的图片)。相当于在1分钟内,只要用户更新,我们就会将其变成一个整个快照,然后将其放在OSS上。如果每个块经常更新,则将有一个特定的一个 - 分钟快照对于这个块。目前,我们的OSS上有将近10亿个文件。如果是一个页面级编辑器Wolai,可以在5分钟内保存快照,则频率将较低。通过功能计算和队列的组合,我们建立了快照保存系统。
Wolai的无服务器架构图
通过研究Wolai的用户行为,我们会发现我们的用户通常每天早上在工作中每天早上打开Wolai文件,然后他/她将在白天继续使用,直到下班关闭。我们的用户不需要要像小程序用户一样快速打开应用程序,然后使用它。相反,他们对应用程序的初始加载速度没有特别高的要求,因此我们注意的重点不是服务器端的渲染通过研究用户习惯,我们更关心用户在打开应用程序后是否可以快速响应,这涉及两点:
1.用户是否将数据发送到我的服务器,服务器可以快速,稳定地接收数据吗?
2.当有大量并发时,响应速度会放慢吗?
函数脱致
通过使用函数计算,Wolai's的前端工程师可以负责从前到后的完整开发过程,并且我们的研发速度非常快。
为了实现快速迭代和节省人力,我们将应用程序的每个小功能点分散得非常分散。在功能计算上已部署了许多服务。同时,每个服务下都会有多个功能。要发布此功能,并且不需要整体发布。独立的业务逻辑。这可以维持研发的速度。
目前,我们的团队中有10名研发工程师。八位是前端工程师,这大大提高了团队的效力。
如果小型企业使用功能,则成本将节省50%
选择类型时,我们曾经对使用该功能计算的成本问题进行了粗略的计算。我们计算的结果是,功能的使用可以节省一半以上的计算成本,而不是使用传统框架以及人力的投资可以节省一半或更多。
我们可以计算一个帐户。如果我们选择传统的体系结构,并且具有当前系统的复杂性,我们的应用程序至少需要两次操作和维护工程师。现在,前端工程师可以从头到尾开发和维护系统。基于30,000元的人工成本一个月,计算场地和硬件的成本。对于小型公司,它每年可以节省至少700,000-800,000个运营和维护成本。同时说,如果您使用传统框架每年花费100万美元,则可以使用功能来计算至少500,000。
自2020年6月推出以来,使用功能计算的Wolai过程非常流畅。从选择到项目的完成花了很短的时间。我非常感谢阿里巴巴云制造这种产品。直到今天,人们的劳动和云计算的分工变得越来越清楚。我相信,在这个级别上,尤其是资源调度级别具有无服务器技术的祝福。如何为客户提供更好的服务。向前看,未来的Wolai可以计算出具有阿里巴巴云功能的更好的产品。
原始链接
本文是阿里巴巴云的原始内容,未经许可就无法重印。
原始:https://juejin.cn/post/7102244230650658824