18、提升 Rails 应用性能:抽象层与服务提取的实践指南

提升 Rails 应用性能:抽象层与服务提取的实践指南

1. 实现无关的监测系统

在代码中,可通过如下逻辑利用 Yabeda 进行监测数据收集:

if _1.payload[:exception]
  Yabeda.gh_stars_call_failed_total.increment({})
else
  Yabeda.gh_stars_call_duration.measure({}, _1.duration)
end

最后,你需要为监测系统安装 Yabeda 导出器插件,这样就拥有了一个实现无关的监测系统。值得注意的是,尽管 Yabeda 提供了收集监测数据的抽象方法,但我们并不直接在代码中使用它,而是通过 Active Support Notifications。这种方式将通用监测与特定指标更新分离,同时让应用代码仅依赖于 Rails,更符合 Rails 开发方式。

2. 服务提取的优势

将底层实现通过中间抽象与应用层接口分离,有一个有趣的积极效果:当抽象距离足够高时,不仅可以在 Ruby 应用中从一个实现库切换到另一个,还能将实现甚至一些基础设施抽象迁移到单独的服务中,而不影响应用的其他代码库。拆分大型单体 Rails 应用为多个服务的主要动机是性能,在某些负载场景下,Rails 和 Ruby 并非最佳性能表现者。将底层无逻辑功能提取到经过高度优化的服务中,可显著提高应用的可扩展性,而合理的抽象能使迁移过程透明化。

3. 分离 WebSockets 与 Action Cable

AnyCable(https

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值