-
Notifications
You must be signed in to change notification settings - Fork 117
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
73 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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] |