开发者社区 > 云原生 > Serverless > 正文

阿里云Serverless,那想问一下,是不是FC其实不太适合用来实现websocket中,服务器需

阿里云Serverless,那想问一下,是不是FC其实不太适合用来实现websocket中,服务器需要给用户发消息的场景?

展开
收起
Java工程师 2023-07-14 18:20:36 127 0
3 条回答
写回答
取消 提交回答
  • 阿里云的函数计算(Function Compute)主要用于处理短时间、无状态的计算任务。尽管函数计算可以通过 WebSocket 触发器支持 WebSocket 连接,但在服务器需要主动向用户发送消息的场景下,函数计算可能并不是最佳选择。

    以下是一些原因:

    1. 请求-响应模型:函数计算是基于事件驱动的,它通常用于处理接收到的请求并返回相应的响应,而不适合长时间保持连接并持续向客户端发送消息的场景。

    2. 连接管理和持久化:WebSocket 需要建立和管理长期的双向连接,以便服务器可以随时向客户端发送消息。函数计算在每个请求之间是无状态的,没有内置的连接管理和持久化机制,这可能增加了编码复杂性。

    3. 资源限制:函数计算对单次请求的执行时间有限制(例如,5分钟),如果需要长时间保持 WebSocket 连接并实时发送消息,可能会超出函数计算的资源限制。

    对于需要实时推送消息给客户端的场景,一些更适合的解决方案包括:

    • 使用专门针对 WebSocket 的服务或框架,如 Nginx、Socket.io、Netty 等。
    • 考虑使用消息队列和订阅/发布模式,将消息发送到消息队列中,然后由客户端从队列中订阅并接收消息。
    • 结合使用函数计算和其他适合实时通信的云服务,如阿里云实时计算(Realtime Compute)、消息队列、云推送等。

    在选择适合的解决方案时,需根据具体场景和需求综合考虑各种因素,如性能要求、可扩展性、开发复杂度和成本等。

    2023-07-23 09:24:24
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    阿里云函数计算 (Function Compute, FC) 适合处理短时、轻量级的计算任务,通常用于处理 Web 应用程序中的后台任务或者数据处理任务等。由于函数计算的无状态特性和短时执行时间,以及 WebSocket 连接的长连接特性,因此在处理 WebSocket 中,FC 的使用需要谨慎。

    在 WebSocket 连接中,需要确保服务器能够及时地向客户端发送消息,并保持 WebSocket 连接的稳定性和可靠性。由于 FC 的无状态特性,无法像常规服务器一样维护 WebSocket 连接的状态,因此在使用 FC 处理 WebSocket 时,需要考虑一些特殊的情况。

    2023-07-22 17:48:12
    赞同 展开评论 打赏
  • 可以直接使用消息中间件,比如mns,rocketmq

    目前只能通过最大实例数为 1 来保证ws链接都打到一个实例了。不过您的业务逻辑里要大量调用 FC 管控面的 api 来创建函数,不是很方便。

    此答案来自钉钉群“Serverless 开发者技术学习群"

    2023-07-15 10:48:46
    赞同 展开评论 打赏

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    Hologres Serverless之路:揭秘弹性计算组 立即下载
    Serverless开发平台: 让研发效能再提升 立即下载
    Serverless 引领云上研发新范式 立即下载