GOTO Berlin:使用自己的公共API的问题

Soundcloud在重构过程中面临诸多挑战,包括使用自身公共API构建大型Rails应用程序的问题。在新设计阶段,团队遭遇基础设施难题,如高可用性代理及memcached问题等。最终,他们通过将大型Rails应用程序分解为更小的服务来解决这些问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Soundcloud的工程总监Phil Calcado 在最近的GOTO Berlin大会上分享自己管理和构建大型Rails应用程序的经验时提到:使用自己的公共API可能是一种挑战。

\

Soundcloud发展非常迅速,在他的演讲中Phil着重介绍了他们在创建一个新的网站时(已于1年前发布)所遇到的一些问题。

\

Soundcloud开始是一个 Ruby on Rails应用程序,6年间它不断的扩展变得非常混乱。很多问题归咎于基础设施,一个使用MySQLMemcached的大型Rails程序

\

2010年他们开始考虑一个新的平台。其中的一个想法来源于Twitter,在他们发布自己重新设计的架构的时候,该架构让Soundcloud团队确信他们要构建一个相似的应用程序;一个单独的页面JavaScript应用程序,使用一个公共的API与后端通信。最终他们开始构建一个新的网站,很多JavaScript技能娴熟但是缺少一些后端经验的前端开发者基于现在的公共API用了6、7个月的时间构建了一个新的Web网站。

\

他们最后构建了一个非常稳定的应用程序,但是在即将发布之前他们与Twitter进行了一次谈话,并且提到他们要发布一个新的网站,新网站受到了新的Twitter架构的启发,使用了和Twitter完全相同的想法。对于这个问题来自于Twitter的人员回答说,他们已经发现新的设计并不是一个好想法。实际上,之后Twitter已经决定将大部分实现退回到服务器端渲染。

\

Twitter人员的回答将团队放到了一个非常有趣的位置,这是一个重要的集成,因此他们应该怎么做,继续还是取消?最后他们决定继续。因为了解Rails,所以他们确信第一件要出问题的事情会是Rails,所以他们预分配了很多节点。但是在新设计中一个页面的请求从3增长到了超过100,第一件出问题的事情是他们的高可用性代理。在解决了这个问题之后,memcached又出问题了,之后是Rails和MySQL。他们现在认识到他们的基础架构有问题。

\

他们很早就意识到的一个问题是不能重写整个应用。要保留Rails,因此他们需要一个快速API,一个能够尽快处理大量请求的API。他们将大型Rails应用程序分割成了更小的部分,并且引入了服务的思想。但是有一个惊喜是,他们依然拥有同样的整体性能,只是从数据库转移到HTTP上有性能瓶颈。结论便是他们需要更加快速的Rails。

\

仔细看看代码他们发现了很多并发的空间。Rails不喜欢并行或者并发,因此他们尽量使用Finagle 这样的工具保持同步并设法获得并行和并发性。他们大大降低了负载,并且让结果的返回更加快速。

\

他们现在能够更快地服务请求。但是每一个页面依然会产生很多请求,为了查找减少请求数量的方法,他们决定尽力实现一个自定义API,通过一个请求返回几个页面的数据。为了实现这个目的,他们最终使用了三个专用的API,分别用于移动、桌面和合作伙伴。

\

他们现在面对的最有趣的设计挑战是如何建模它们的API。目前开发者喜欢将一个更加粗粒度的API用于移动,将一个更加有体验的API用于桌面,目前有两个分离的后端。

\

2013年的GOTO Berlin大会是GOTO大会首次在Berlin举行,本次大会有超过400位参会者和大约80位讲师。

\

查看英文原文:GOTO Berlin: Problems Using Your Own Public API

OPCUA(OPC统一架构)是一种开放标准通信协议,用于工业自动化和其他领域的设备和系统之间的数据交换。它建立在 OPC Foundation 的基础之上,旨在替代早期的 OPC DA(OPC 数据访问),提供更安全、更高效且平台无关的通信方式。本压缩包“OPCUA与OPCServer通讯测试客户端程序.zip”包含了实现OPCUA客户端与OPCServer服务端通讯测试的相关资源。 1. OPCUA协议:OPCUA的核心特性在于它的服务导向架构,包括了数据访问、历史数据访问、报警和事件、方法调用等服务。它使用TCP/IP作为传输层,并支持SSL/TLS加密,确保数据传输的安全性。OPCUA还引入了发布/订阅模型,允许实时数据流的高效传输。 2. OPCServer:OPCServer是OPCUA架构中的一个组件,通常由设备制造商或软件供应商提供,它将特定设备或系统的数据暴露给OPCUA客户端,使得多个应用程序可以共享这些数据。例如,KepServer是OPCServer的一种,它可以连接到各种PLC(可编程逻辑控制器)、SCADA系统和其他工业设备。 3. OPCUA客户端:客户端是使用OPCUA协议来访问OPCServer服务的应用程序。在这个压缩包中,提供的客户端程序应该能够发现OPCServer,建立安全连接,浏览OPCServer提供的节点结构,读取和写入数据,以及订阅变化。 4. OPCUA访问KepServer:KepServer是OPC基金会认证的服务器,支持OPCUA协议。通过OPCUA客户端,你可以与KepServer进行交互,获取或控制连接到KepServer的设备或系统的数据。这在设备监控、数据采集和自动化应用中非常常见。 5. 测试过程:通讯测试通常涉及以下步骤: - 安装和配置OPCServer(如KepServer)。 - 运行客户端程序,配置OPCServer的连接参数,包括地址、端口、认证信息等。 - 使用客户端发现OPCServer上的可用服务和数据节点。 - 测试读写操作,验证数据传输的正确性和实时性。 - 可能还包括性能测试,检查数据刷新速率和网络负载。 6. 遵循OPCUA标准:OPCUA提供了丰富的API和SDK,允许开发者创建符合标准的客户端和服务器应用。在实现OPCUA通讯时,必须遵循OPCUA的信息模型和接口定义,确保与其他OPCUA兼容设备的互操作性。 7. 安全性考虑:OPCUA内置了安全机制,如身份验证、授权和加密。客户端和服务器间的通信应配置适当的安全策略,以防止未授权访问和数据泄露。 通过这个压缩包,用户可以学习和实践如何建立和测试OPCUA客户端与OPCServer之间的通讯,这对于理解和开发基于OPCUA的工业自动化解决方案至关重要。同时,对于那些需要集成不同设备或系统的项目,了解并掌握OPCUA技术是非常有价值的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值