我目前正在使用Phoenix框架创建一个应用程序,该框架使用通道进行大量移动设备和后端服务(显然是基于Phoenix)之间的双向通信。
我打算为每个设备创建一个主题,因为设备是按ID定义的,例如device:2149
,device:1234
等。
我有以下套接字:
defmodule Webservice.DeviceSocket do
use Phoenix.Socket
channel "device:*", Webservice.DeviceChannel
transport :websocket, Phoenix.Transports.WebSocket
def connect(_params, socket) do
{:ok, socket}
end
def id(_socket), do: nil
end
以及以下渠道:
defmodule Webservice.DeviceChannel do
use Phoenix.Channel
def join("device:" <> device_id, _params, _socket) do
# do some stuff
{:ok, socket}
end
def handle_in("some_message", %{"data" => data }, socket) do
# Do stuff
{:noreply, socket}
end
end
现在假设有大量设备使用此服务,大约90000,这意味着需要管理90000个主题。
大量主题是否会导致一些会影响应用程序性能的开销?