• messageflow 的集群架构设计 手稿


    多个server的问题。

    假设citibox.com / cosmosd.com 各有一个server。

    他们的客户端要互联。

    方法:

    1. 在citibox.com / cosmosd.com 之间建立桥,实现互联。
    结论:建立服务器的桥。

    2. 客户端同时面对citibox.com / cosmosd.com
    结论:否决。


    3. 仅开一个服务器,例如Pixysoft.net 其他的链接到这个服务器。
    结论:否决。实在不方便。而且不容易负载平衡

    ------------------

    服务器集群的思路:

    1. citibox.com = 服务器A
       cosmosd.com = 服务器B
       pixysoft.net = 服务器C

    他们各自负责对应的网站的comet、格子有IM的帐号。

    现在, 我是一个客户端:rebornzhang@gmail.com。需要同时能够和三台服务器的内部节点、外部节点对话。

    ------------------

    1. 使用直接转接。
    转接者不负责处理,仅仅把数据交给一个中心机。例如pixysoft.net是核心系统,拥有所有信息。其他的仅仅是转接。

    例如转接者是:citibox.com,他拥有客户a/b/c,以及pixysoft.net。
    那么当a/b/c和citibox.com交流的时候,他会直接把信息转移到pixysoft.net。由pixysoft.net负责。
    这个时候citibox.com本身不需要建立任何的对话缓存,而是只要收到信息就转发。

    设计简单,但是增加了节点之间的通讯;例如本来的设计中:

    a -- citibox.com -- admin

    现在

    a -- citibox.com -- pixysoft.net -- admin


    ------------------------

    2. 各自为政,当本节点无法处理的时候,才交给转接节点。

    citibox.com = A
    cosmosd.com = B

    client C in A
    client D in B

    C ---(bind D)--- A

    A 发现没有,则建立一个connectioncache,同时发送一个转接指令

    a ---(redirect D) --- B

    如果B发现存在,则
    1. B - redirectpass - A
    2. B - bind D - D
    3. A - succeed - C

    如B不存在
    1. B - redirectfail - A
    2. A - 取消connectioncache
    3. A - fail - C

    以上都会在A建立了D的缓存,这样下次A再访问可以直接读取缓存。

  • 相关阅读:
    jquery特效(2)—选项卡
    CSS3学习笔记(3)—左右飞入的文字
    jquery特效(1)—点击展示与隐藏全文
    javascript学习的思维导图
    CSS3学习笔记(2)—左右跳动的红心
    CSS3学习笔记(1)—淡入的文字
    关于加入博客园的感想
    小程序json字符串转为对象
    小程序页面传值e.currentTarget
    原生js获取元素的子元素
  • 原文地址:https://www.cnblogs.com/zc22/p/1741273.html
Copyright © 2020-2023  润新知