Skip to content

1.ChatRoom 特性

JianJun edited this page Mar 21, 2023 · 3 revisions

特性

ChatRoom 自动处理了网络配置中需要提供的复杂参数,也解决了许多在网络传输中会遇到的麻烦问题.

  • 高层对象:只有需要通过网络来传输 Python 数据对象的情况使用 ChatRoom 才是合适的;
  • 安全高效:传输层使用 TCP 协议,会话层使用了 RSA + AES 类似 TLS, 密码保存使用了 bcrypt 算法;
  • 全自动化ChatRoom 的优势在于无论客户端主机是局域网机器,公网机器,还是不同内网环境的机器,都会由 Room 自动调度后分配集群的最高效连接方式;
  • 逻辑隔离ChatRoom 让开发者专注于业务逻辑处理,而不用考虑网络交互的实现;
  • 强拓展性:简洁快速的增加或减少集群节点,方便的节点管理,强大的回调函数设计,方便高效的交互功能;
  • 高效运维:简洁易配置的日志系统,开包即用的用户监控,强大的自定义日志管理,方便的管理员邮件通知,全方位监控集群的运行;

会话层加密可选关闭, 提升的传输性能主要由AES加密带来的损失, 关闭加密后提升性能不明显, 加密的一端可以自动兼容未加密的一端.

建议Room开启加密, 可靠内网环境不开启加密, 公网User开启加密.

连接方式

  1. 局域网内互相连接:只要两个 User 处于同一局域网内,那么他们会直接局域网内连接;
  2. 具有公网IP的 User:在不满足 1 的情况下,其他机器都会使用公网IP进行连接;
  3. 中继连接:12 都不满足的情况下,相当于 User 被网络隔绝了,那么会通过 Room 进行数据转发;

中继连接的取消是因为系统功能的逐步完善后中继连接无法向下兼容新功能,所以取消了中继连接,在实际使用中,尽量让所有的用户节点保持在同一可以互相访问的网络空间里,如果无法保证可以使用VPN或者端口映射或者其他一些方法来处理网络隔离的问题.

ChatRoom架构图

ChatRoom 的优势是所有关于 User 的连接信息都由 Room 进行统一管理, 每个 User 只需管理自身的连接信息, 而不必存储其他可能的 User 的信息. 每次 User 的离线, 上线, 物理机的更改或增加新节点等行为都会由 Room 进行调度处理.

ChatRoom 的弱势是在网络复杂或者用户过多的情况下, Room 调度能力和服务端 User 的负载情况会被糟糕的网络和过多的用户所拖累, 所以不适合传统的运行于公网上的多用户的服务, 而适合用于内网多台机器交互运算的分布式计算任务上.

Clone this wiki locally