Skip to content

Commit

Permalink
Create README_zh.md
Browse files Browse the repository at this point in the history
  • Loading branch information
donnie4w committed Dec 7, 2023
1 parent b531e7d commit 85454de
Showing 1 changed file with 73 additions and 0 deletions.
73 changes: 73 additions & 0 deletions README_zh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
## TIM即时通讯引擎 [[English]](https://github.com/donnie4w/tim/blob/main/README.md "[English]")

> 前言:tim2.x 与 tim1.x
tim2.x与tim1.x没有直接的关系,tim1.x是早期的一套im实现,而tim2.x是重新设计开发的另一套程序。tim1.x的实现有许多根本的设计问题,导致无法在程序的基础上继续扩展和优化。所有只能抛弃tim1.x的所有代码与设计方案,重新设计和实现。
tim2.x实现了预期的效果与功能效率。可以解决目前遇到的所有IM需求。而且具备很强的扩展性,后续该项目将继续进行相应的功能扩展与性能优化。

### [tim官网](https://tlnet.top/tim "tim官网")

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


### tim的特点

tim是一个去中心化的分布式即时通讯引擎。

tim实现完全无中心的集群模式,并实现分布式数据存储,支持百万台数据库分布式存储数据,所以tim可以支持超大规模的集群,支持在线用户量可以达到百亿级别。

tim 构建了基础通讯模式,即1:1,1:N,N:N 模式,实现了底层流数据通讯。开发者根据业务需求灵活组合并使用tim的通讯模式,可以实现各种即时通讯的需求,类似微信,QQ,抖音等等im通讯,都可以用tim实现。类似直播间,实时音视频,多人视频,多人音视频会议等等功能,使用tim,非常简单就可以实现。类似消息撤回,消息阅后即焚等等,tim从底层消息通信类型就支持实现。

tim的使用主要依靠终端通过tim客户端调用服务接口,所有通讯逻辑都在tim服务端完成,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. 支持客户端采用json协议访问。


### tim的数据库

tim的数据库可以使用 TLDB,Mysql,PostgreSQL ,SQL Server,Oracle,Oceanbase等数据库。

TLDB的使用可以参考《TLDB 高性能分布式数据库》

TLDB是tim内置用户系统的默认数据库。通过tim自身的数据分布式存储设计,tldb无需再搭建分布式系统,只需要启动单机模式的服务节点即可。tim通过数据分库配置,可以把数据散列存储到多个单机模式的tldb服务节点中。

TLDB的高性能读写数据与支持大量客户端连接的特点,相对来说更适合作为tim数据库

如果不使用tim内置用户系统,而是需要接入已经存在或自己构建的用户系统时,可以接入Mysql等其他数据库,通过配置SQL的方式来接入外部的业务数据。tim的核心接口支持读取相关的外部数据



### tim的协议

tim自定义的通讯协议,在序列化效率与压缩比例上,相对于常见序列化框架,都具备较大的优势,详细请参考《tim实践系列——tim协议与其他格式协议的比较》

tim除了支持自定义的thrift压缩协议,同时支持也支持json格式协议;json本身的优缺点都比较明显,json最大优势是其通用性,而json的序列化效率与协议包的体积是其劣势。timjs是采用json格式实现的客户端,详细参考timjs实现源码



### tim零依赖

tim的部署与启动不依赖任何第三方组件或服务。tim支持有数据模式与无数据模式。在有数据模式下,运行tim需要先启动数据库服务,在无数据模式下,直接运行即可。



### [TIM开发使用文档](https://tlnet.top/timdoc "TIM开发使用文档")

- tim可以极大降低使用IM的成本,提高im开发效率。

- 相信tim必定可以更加简单快捷的解决im相关问题,有任何疑问请email:[email protected]

0 comments on commit 85454de

Please sign in to comment.