Tim即时通讯引擎的去中心化分布式架构具有去中心化、分布式数据存储、支持大规模用户、即时通讯、安全性和隐私保护、高可用性和容错性以及可扩展性和灵活性等特点。能够有效地解决大规模分布式系统的设计和实现问题,并提高系统的性能、可用性和扩展性。

tim v2.0.1版本的更新内容

  1. 修复了已知bug
  2. 增加了大字符串协议Big String
  3. 增加了大字节流协议Big Binary
    说明:big string,big binary 是一种无格式的松散数据协议,主要应用场景在一些特殊的场景下,对类似thrift,json等特定格式的协议无法支持的情况下使用。这种两种松散的协议,可以支持一个数据包被终端分包多次发送的情况。

tim实现的开源实践项目 webtim

  1. webtim在线访问地址:https://tim.tlnet.top
  2. webtim项目本地部署:https://github.com/donnie4w/webtim-deploy
    说明:作者已经为windows,linux, macos等操作系统, 写好启动脚本,并打包放置相应的webtim执行文件。只需要执行start脚本,便可以在本地一键启动webtim。启动后,可以在本地通过tim后台管理系统与tldb后台管理系统查看相关的数据。在webtim-deploy项目readme中有介绍。通过数据,可以了解更多tim的实现机制。
  • 在linux或macos上 ,本地部署webtim时,启动可能出现一些错误,如

数据库生成binlog文件的权限问题:可以有两种方法解决

  1. 一是文件增加权限,如:chmod -R 777 tldb/_data/bin ;再重新运行 ./start.sh
  2. sudo运行,如 sudo ./start.sh

成功启动的全过程:

最后出现 webtim start [:6060] 说明本地成功启动webtim

Tim的架构特点

  1. 去中心化:Tim采用去中心化的分布式架构,没有中心节点或控制单元。每个节点都是独立的,具有高度自治的特征。这种架构方式可以降低单点故障的风险,提高系统的可靠性和安全性。
  2. 分布式数据存储:Tim采用分布式存储算法,将数据分散存储在多个数据库节点上。这种存储方式可以提高数据的可靠性和安全性,并且能够更好地抵御数据丢失或损坏的问题。
  3. 支持大规模用户:Tim能够支持大规模用户同时在线,并保证消息的及时送达。通过优化的协议和序列化技术,Tim能够高效地处理海量数据和请求,确保消息的快速传输和可靠交付。
  4. 即时通讯:Tim作为即时通讯IM引擎,强调信息的及时性和可达性。它采用高效的传输协议和序列化技术,优化消息的传递和接收,确保用户能够即时地交流和互动。
  5. 安全性和隐私保护:Tim重视用户信息的隐私和安全。通过加密技术和去中心化身份验证等手段,确保用户数据的安全和隐私不受侵犯。同时,内部开发人员也无法直接查询用户及通讯信息,增加了数据的安全性。
  6. 高可用性和容错性:Tim具有高可用性和容错性。由于采用去中心化分布式架构,即使某个节点出现故障,其他节点仍能继续工作,确保整体服务的连续性。这种设计方式提高了系统的可靠性和稳定性。
  7. 可扩展性和灵活性:Tim的分布式架构使其具有良好的可扩展性和灵活性。随着业务需求的增长,可以增加更多的节点来提高系统的处理能力和存储容量。同时,由于节点间的自由连接和交互,Tim能够快速适应变化的需求和环境。

Tim功能特性

  1. 去中心化分布式架构,支持Nat穿透集群节点,天然分布式架构,无需特殊配置,无最小节点数限制,零依赖,支持大规模集群。
  2. 支持多种数据库:TLDB,Mysql,PostgreSQL ,SQL Server,Oracle,Oceanbase等
  3. 高度归纳IM通讯模式,从底层支持1:1,1:N,N:N 通讯模式
  4. 从底层支持流数据发送,轻松支持直播,实时音视频等功能的开发
  5. 重视数据安全,从账号到通讯数据,都进行换算或加密,保证用户信息安全
  6. 实现分布式存储数据,解决海量数据存储的问题,支持动态扩容数据库节点。
  7. 具备单机高性能特点,协议序列化效率高,体积小。
  8. 从底层支持各种通讯类型,包括普通信息,撤回信息,信息阅后即焚等
  9. 支持各种自定义用户状态,对标QQ等类型APP的状态功能
  10. 支持群组,对标QQ,微信等类型APP群组功能
  11. 支持多人实时流数据发送,对标抖音直播,视频连线,或多人实时视频会议等app的功能
  12. 支持同账号多终端同时登录,并支持通过配置进行限制,对标QQ,微信多终端登录功能
  13. 支持thrift压缩,json,big string,big binary等多种形式的客户端协议


tim实践系列文章 (文章持续更新中...)

  1. 《tim实践系列——tim协议与其他格式协议的比较》
  2. 《tim实践系列——tim设计来源与设计模式》
  3. 《tim实践系列——如何使用TimMessage自定义各种消息》
  4. 《tim实践系列——如何使用TimPrecence自定义各种用户状态》
  5. 《tim实践系列——虚拟房间的作用和如何使用》
  6. 《tim实践系列——用户如何实现 隐身,在线,忙碌等状态》
  7. 《tim实践系列——消息特点和如何在实际业务中使用》
  8. 《tim实践系列——tim如何限制一个账号多个终端登录》
  9. 《tim实践系列——tim信息安全与账号系统》
  10. 《tim实践系列——内置的好友关系和群组》
  11. 《tim实践系列——消息撤回,阅后即焚 等功能如何开发》
  12. 《tim实践系列——去中心化分布式架构特点》
  13. 《tim实践系列——分布式数据存储与动态数据库扩容》
  14. 《tim实践系列——如何架构支持百亿级别在线用户的即时消息系统》
  15. 《tim实践系列——接入外部账号系统,配置关系型数据库》
  16. 《tim实践系列——tim的限流,报文长度,连接数,请求频率》
  17. 《tim实践系列——后台管理员接口的使用》
  18. 《tim实践系列——账号安全措施》
  19. 《tim实践系列——用户之间如何实现文件传输》
  20. 《tim实践系列——微信实时音视频开发》
  21. 《tim实践系列——抖音直播间的开发》
  22. 《tim实践系列——多人实时视频会议,抖音直播间在线多人视频连线》
  23. 《tim实践系列——如何实现对公众号订阅号等系统栏目的实时订阅》
  24. 《tim实践系列——tim产生的数据统计与建议》
  25. 《tim实践系列——tim配置系统参数要注意的地方》
  26. 《tim实践系列——使用tim无数据库模式实现web IM》

tim 相关工程项目

  1. go客户端 timgo: https://github.com/donnie4w/timgo
  2. java客户端 atim: https://github.com/donnie4w/atim
  3. js客户端 timjs:https://github.com/donnie4w/timjs
  4. 后台接口示例 admintim: https://github.com/donnie4w/admintim
  5. webtim项目 https://github.com/donnie4w/webtim 访问地址: https://tim.tlnet.top
  6. tim客户端协议 tim-protocol
  7. 《tim实践系列文章》

tim带来多方面的优势和作用

  1. 提高开发效率:TIM提供了丰富的功能模块和接口,简化了即时通讯应用的开发过程,减少了重复造轮子和从头开始摸索的时间。
  2. 保障安全性能:TIM具备强大的安全机制,能够保障用户数据和通信内容的安全性,防止数据泄露和恶意攻击。
  3. 提供稳定服务:TIM能够提供稳定可靠的即时通讯服务,确保用户沟通的连续性和可靠性。
  4. 支持多种平台:TIM可以跨平台、跨设备使用,支持多种操作系统和终端设备,满足不同用户的需求。
  5. 丰富的扩展性:去中心化分布式的TIM具备超强扩展性,能够根据项目的需求进行水平扩展,方便进行二次开发和功能升级。
  6. 降低维护成本:TIM可以降低大量运维成本,TIM集群,与分布式数据存储都依赖TIM本身算法完成,无需人为部署。

donnie4w
6 声望0 粉丝

Github:[链接]