Docker 容器的主要应用之一是负载均衡。例如,在 Web 应用程序的情况下,我们不是只有一个实例处理所有请求,而是有许多容器做完全相同的事情,但是请求被拆分到所有这些实例。
但它可以用来做同样的服务,但使用不同的“参数”吗?
例如,假设我想创建一个平台来存储来自不同交易平台(Bitfinex、Bittrex 等)的加密货币数据。
许多这些平台都在处理 Web 套接字。所以为了为每个平台创建一个套接字,我会在“代码层”做一些事情,比如(与语言无关):
foreach (platform in platforms)
client = createClient(platform)
socket = client.createSocket()
socket.GetData()
现在当然,这个循环会卡在第一次迭代中,因为 websocket 正在等待(尽管我可以使用异步,无论如何)。为了避免这种情况,我可以使用多处理,例如:
foreach (platform in platforms)
client = createClient(platform)
socket = client.createSocket()
process = new ProcessWhichGetData(socket)
process.Launch()
有没有办法在“Docker 层”做到这一点,我的意思是使用 Docker 使不同的容器处理不同的平台?我会有一个用于 Bittrex 的 Docker 容器,一个用于 Bitfinex 的 Docker 容器,等等。
我知道这意味着不同的容器将相互通信(谁负责 Bitfinex?谁负责 Bittrex?),或者容器编排器(Docker Swarm / Kubernete)将自己处理这个“重新分区”。
这是我们可以做的事情,最重要的是,这是我们想要的吗?