译者 | 布加迪
审校 | 孙淑娟
迅速增加的用户和活动已考验了许多Mastodon服务器的可扩展性,也给广大管理员带来了压力。据IT外媒TechCrunch采访Mastodon创始人Eugen Rochko的文章介绍,在大批用户离开Twitter之后,Mastodon在8600台不同服务器上的月活跃用户猛增到250万。这些数字来自2022年12月,采用率在继续提高。
这个增长势头有多快?对服务器又有什么影响?下图显示了一个大型实例在一段时间内的作业队列,可以帮助您了解情况。上面那条线是所处理的作业数量,下面那条线是失败的作业数量。
图1. Twitter用户外流对Mastodon作业队列带来的影响
Redis开源(Redis OSS)是Mastodon技术堆栈的一部分。任何想要实施Mastodon服务器或提高其性能的人都应该学习如何最有效地配置Redis元素及其他设置。我们在本文中总结了Mastodon的架构,解释了Redis适合的地方,并指出了潜在的瓶颈。我们将帮助您开始调优自己的实例,并确定解决可扩展性问题所需要采取的操作。
不妨先简单介绍一下技术。
Mastodon自称是“一种基于ActivityPub的免费开源社交网络服务器,用户可以关注好友、发现新朋友。用户可以在Mastodon上发布想要发布的任何内容:链接、图片、文本、视频。所有Mastodon服务器都可以作为一个联合网络实现互操作,即一台服务器上的用户可以与另一台服务器上的用户无缝联系,包括实现ActivityPub的非Mastodon软件。”
ActivityPub是W3C推荐的一种去中心化社交网络协议,基于Activity Streams 2.0数据格式,这种模型用于使用JSON表示潜在和已完成的活动。ActivityPub提供了用于创建、更新和删除内容的客户端到服务器API,以及用于传递通知和内容的联合服务器到服务器API。
用ActivityPub、OStatus、Zot!和diaspora*等协议结合在一起的联合服务器网络称为Fediverse。Fediverse上的服务器(名为“实例”)与其他实例联合起来,这样就获得了如同集成社交网络的用户体验。每个实例管理各自的操作和安全。
Mastodon是实现ActivityPub的20多种服务器之一。据Fediverse Observer声称,截至去年12月,Fediverse中共有21501台服务器。
图2. Fediverse
Mastodon是一种带有React.js前端的Ruby on Rails(RoR)应用软件。它遵循这些框架的标准实践。若要运行Mastodon,您需要Ruby、Node.js、PostgreSQL、Redis和SMTP服务器。Sidekiq是RubyGems。添加另外几项服务,比如NGINX和Cloudflare,就能提升Mastodon的可扩展性和抵御DDoS攻击的能力。
下面的架构图有点过于简化了。PostgreSQL是存储用户和帖子等内容的数据库。Sidekiq是Ruby和Rails的后台作业系统。Redis是内存中数据库,用于充当PostgreSQL(图中省略)的缓存,并保存Sidekiq作业队列(图中附有)。文件存储通常保存在Amazon S3存储桶或同类存储区中;由于多个原因,将外部文件存储在本地磁盘上有问题,将它们存储在NFS上更是一场早晚会降临的灾难。
图3. Mastodon架构概况
Redis是一种NoSQL内存中数据结构存储系统,可以将数据持久地存储在磁盘上。它可以充当数据库、缓存和消息代理。Redis拥有内置复制、Lua脚本、最近最少使用(LRU)清除、事务和不同级别的磁盘持久性。它通过Redis Sentinel提供了高可用性,结合Redis Cluster提供了自动分区。
Redis数据模型是键值,但也支持多种类型的值:字符串、列表、集、有序集合、散列、流、HyperLogLogs和位图。Redis还支持具有半径查询和流的地理空间索引。
Redis OSS功能强大,但除了增加云数据库即服务外,Redis企业版还增加了提升速度、可靠性和灵活性的功能。Redis企业版可线性扩展,以支持每秒数亿次操作,具有本地延迟的双活全球分布,提供了Redis on Flash,以基于磁盘的数据库的基础设施成本支持大型数据集,并基于内置持久性和单位数秒级故障切换机制提供99.99%的正常运行时间。这一切都是在将数据库延迟保持在1毫秒以下的情况下提供的。
只要您有root权限,可以在Debian 11或Ubuntu 20.04系统上从源端安装Mastodon,也可以从云实例安装。这个过程很漫长,但手动操作最终让您对安装的系统会有最大的控制和了解。
还可以从许多云提供商(包括DigitalOcean、Linode和AWS等)的应用软件市场安装Mastodon,可以在Docker或Kubernetes上安装Mastodon,包括云提供商自己的Kubernetes,或者向Mastodon托管提供商(比如Masto.host、Fedi.monster或Cloudplane)租用实例。撰写本文时,许多但并非所有的Mastdon托管提供商对新实例关闭,它们最终可能会再次开放。
许多人已经发帖子介绍安装和运行自己的Mastodon实例方面的感悟和心得。只需搜索“我自己的Mastodon服务器”或“个人Mastodon实例”,就能找到许多这方面的内容。
Nora Tindall的叙述较为清晰。她的结论总结一下就是“默认的Mastodon的配置很糟糕。对于小服务器上的小实例来说没有问题,但一旦您开始发展壮大,就必须扩展Mastodon的规模。”
瓶颈在哪里?据Tindall声称,最大的瓶颈是数据库资源(需要为PostgreSQL分配一半的内存)、Sidekiq队列(分开它们)以及数据库连接(确保有足够的连接来处理Web服务器、Sidekiq队列和流:Nora建议总共200个数据库连接)。
另一组实用的调优技巧来自Hazel Weakly:
正如您所见,我们可以采取很多办法来扩展Mastodon以处理增加的流量。下次我们将探讨如何以及何时进一步扩展Mastodon,使用更大的Redis内存分配量和采用Redis企业版。
与此同时,您可以自己尝试Redis企业版,以便深入了解其强大功能。
分享题目:如何用Redis提升Mastodon服务器的性能?
本文来源:http://www.shufengxianlan.com/qtweb/news38/341988.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联