我刚刚在Jupiter Collaboration System中读完了高延迟,低带宽窗口,我大部分都遵循了所有内容,直到第6部分:全局一致性.本部分描述了如何扩展本文中描述的系统以适应连接到服务器的多个客户端.但是,解释非常简短,并且基本上说如果中央服务器仅将客户端消息转发给所有其他客户端,则系统将起作用.我真的不明白这是如何工作的.在发送给所有其他客户端的消息中将发送什么状态向量?服务器是否为每个客户端维护单独的状态向量?它是否为每个客户端在本地维护单独的小部件副本?
我能想到的一个简单示例就是这样的设置:想象客户端A,服务器和客户端B,客户端A和客户端B都连接到服务器.首先,这三个都有状态对象"ABCD".然后,客户端A在服务器发送消息"在位置0插入字符G"的同时发送消息"在位置0插入字符F".似乎只是将客户端A的消息中继到客户端B,反之亦然,实际上并不处理这种情况.那么服务器究竟做了什么呢?
我有一个名为 backend 的 Docker 容器,它公开一个端口 8200,并在其中的 Gunicorn 后面运行一个 django 服务器。这是我的 Dockerfile:
FROM debian:wheezy
RUN rm /bin/sh && \
ln -s /bin/bash /bin/sh && \
apt-get -y update && \
apt-get install -y -q \
curl \
procps \
python=2.7.3-4+deb7u1 \
git \
python-pip=1.1-3 \
python-dev \
libpq-dev && \
rm -rf /var/lib/{apt,dpkg,cache,log}
RUN pip install virtualenv && \
virtualenv mockingbird && \
/bin/bash -c "source mockingbird/bin/activate"
ADD ./requirements.txt /mockingbird/backend/requirements.txt
RUN /mockingbird/bin/pip install -r /mockingbird/backend/requirements.txt
ADD ./src /mockingbird/backend/src
CMD ["/mockingbird/bin/gunicorn", "--workers", …Run Code Online (Sandbox Code Playgroud)