前言: tim是一个完全去中心化的分布式系统。完全去中心化,是实现tim设计理念的一个较好的方案,使得tim的集群限制主要在操作系统层面,如系统能发出的连接数。所以tim的大规模集群可以支持百亿级别的在线用户量。海量数据的处理问题,也是tim去中心化解决的问题之一,以下分别介绍
来源《tim实践系列》

TIM的设计模式:

tim通讯设计模式是邮箱模式,消息体就类似一封封信件,上面写了寄信人和收信人,无论投递到哪个邮箱,信件都可以正常寄出去,这样实现了理论上的节点无限集群:只要新建邮箱,就可以承担更多的寄信任务,用户量增加,只要增加邮箱(即tim节点服务)就可以解决压力问题,这也是借鉴XMPP协议的设计理念,XMPP以TCP传递XML数据流,没有中央主服务器,任何人都可以运行自己的XMPP服务器来转发数据流。XMPP协议本身也存在一些问题,一是没有二进制流,二是消息体臃肿,重复无用数据过多。当然xmpp只是通讯协议,xmpp服务器能否做到去中心化设计还依赖开发者的设计与实现。

tim解决了XMPP一些问题 一是tim主要协议是二进制流. 二tim协议采用thrift压缩格式.消息体非常小.没有重复数据。但是tim协议与xmpp协议是不能互通的,只是借鉴了它的设计思路。

tim是去中心化的分布式架构,并且支持使用NAT穿透的方式进行节点集群通讯,即支持不同节点在局域网与公网进行集群连接。这种集群方式有点类似区块链,不过原理是不同的,tim是即时通讯,对信息送达的及时性要求高,im要求信息即时到达;区块链可以通过共识机制如pow,通过KAD算法寻找目标节点,消息层层转发到目标节点,可想而知,效率高并非区块链业务核心要求;与之不同的是,tim要求必须能马上定位节点,一次将信息送达目标节点,不做多余数据转发,所以技术原理完全不同,高效率是IM的业务核心要求之一。

TIM的存储模式:

对于TIM来说,去中心化分布式,就是不依赖任何有中心的服务来架设tim系统,其中就包括tim服务分布式架构与tim数据分布式存储。实际上许多分布式系统的数据存储依旧依赖集中存储,或者说数据存储依赖数据库的存储模式,在海量数据的情况下,这就要求开发者不仅要维护分布式系统本身,也必须同时维护数据库分布式系统,因为数据存储服务可能成为整个系统的短板。

tim解决了存储依赖的问题。tim支持配置多tldb数据库服务,在多个数据库的情况下,通过各个数据库对 1048576的区间划分,tim会把系统的所有数据散列存储的对应区间的数据库中,同时支持动态修改区间的划分来增加数据库服务。所以,理论上1048576可以划分出1048576个区间,便支持1048576个数据库节点。当然,实际部署时,一个tim节点不能连接100万台tldb数据库,但是千台级别甚至万台级别的tldb数据库是可以支持的。

所以tim可以支持超大规模的集群,支持用户量可以达到百亿级别在线用户,而这种规模的情况下,数据存储也不会成为系统的局限。

tim默认数据库是tldb,tldb介绍见《TLDB 高性能分布式数据库》 tldb支持大量的客户端连接和高效的数据读写。所以,tldb也比较适合作为tim的存储服务。

TIM的通讯模式:

tim是基础通讯引擎,支持基础通信模式 即1:1通讯,1:n通讯,n:n通讯,通讯内容包括基础信息,状态信息,流数据。这样的模式是目前所有常见IM通讯模式的高度归纳.

目前主流的各类IM软件的核心通信功能,包括微信,QQ,抖音,阅后即焚,vr虚拟现实直播 等等app的通讯模式,都在基础im通讯模式之中,具体的im核心业务数据操作模式,如消息通信,用户状态,流数据,实时音视频,多人实时音视频,现场直播,直播间多人视频互动等,都是通讯数据的发生,通讯数据的传输,发信人删除通讯数据,收信人删除通讯数据等等,这些模式是构成整个通讯系统的基础模式。

tim通过构建基础通讯模式,支持开发者灵活组合这些基础通讯模式便可以完成各种业务需求。


有任何问题或建议请Email:donnie4w@gmail.comhttps://tlnet.top/contact 发信给我,谢谢!


donnie4w
6 声望0 粉丝

Github:[链接]