- 博客(47)
- 资源 (4)
- 收藏
- 关注
原创 如何开发一个分布式日志系统
本文将基于这些需求,利用 raftx 协议,为分布式日志系统提供一个基础的框架,使用raftx作为一致性协议的实现来确保跨节点的日志数据一致性和顺序性。
2025-01-15 10:56:37
1156
原创 如何开发一个支持海量分布式锁的应用库
1.:在多个节点并发执行的情况下,分布式锁可以防止同时修改同一份数据,从而避免数据不一致的问题。2.:确保特定的任务不会被重复执行,特别是在需要幂等性(idempotent)保证的时候。•:在电商系统中,当用户下单时需要扣减库存,为了避免超卖现象,必须确保每次扣减操作都是原子性的。•:在分布式环境中,确保同一个定时任务只在一个节点上运行,防止重复执行。•:当多个服务实例试图更新同一个缓存项时,使用分布式锁可以确保更新过程的线程安全。•。
2025-01-10 11:48:09
821
原创 Rust日志库tklog0.2.9—支持混合时间文件大小备份模式
tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数设置
2024-12-30 10:19:32
649
原创 tklog0.2.8—Rust高性能日志库
在linux环境中,tklog比同类型的日志库性能高10倍以上,在windows环境中,性能则为同类型日志库2倍左右。Tklog 有极高的性能,特别是在linux环境中,具体测试参考文章。设置控制台日志时,控制台与文件将分别输出设置的日志格式。
2024-12-13 09:39:33
855
原创 go-logger v0.27.0 - 并发性能为官方库 10 倍
如果应用场景为高并发场景,非常建议适用go-logger作为日志库工具,特别是在高并发场景中,需要记录大量日志,或需要调试的情况下,go-logger的并发高效性,使得开启日志记录时,即使大量记录日志数据,也不会影响项目整体性能,项目的正常服务功能可以正常运作。注意:在实际部署前,还是建议进行充分的测试,确保其满足特定应用的需求。性能优化是该版本最重要的更新内容。可以对日志的各个属性标识进行自定义格式化设置。说明:修改了 LEVEL的标识 与时间的格式。由于压测数据篇幅过长,可以通过。
2024-10-31 10:03:39
626
原创 tklog0.2.4—Rust高性能日志库,性能显著提高
tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置,支持日志level独立参数设置
2024-10-22 10:48:41
1196
原创 WFS v1.0.7—海量小文件存储系统
wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD,solaris等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等
2024-09-29 11:32:29
926
原创 Gdao v1.2.0:Go语言高效ORM框架
gdao是一个全面的go持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用gdao,可以在持久层设计上,减少30%甚至50%以上的编程量,同时形成持久层的统一编程规范,减少持久层错误,同时易于维护和扩展。 gdao对于go语言,相当于hibernate+myBatis对于java语言gdao完整地在go语言中实现myBatis的核心功能,实现SQL与程序分离,实现强大的动态SQL功能。
2024-09-27 11:48:33
878
原创 Jdao v2.1.0: 如何构建更高效灵活的动态SQL
Jdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。灵活运用Jdao,可以在持久层设计上,减少30%甚至50%以上的编程量,同时形成持久层的统一编程规范,减少持久层错误,同时易于维护和扩展。Jdao的映射模块实现了SQL与程序分离的特性,映射模块与myBatis的核心功能相同。
2024-09-09 09:39:43
1988
原创 tklog v0.0.9 :Rust灵活高效日志管理
tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置
2024-08-08 11:31:57
829
原创 Gdao v1.1.0:Go语言高效ORM框架全面解析
简介:gdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用gdao,可以在持久层设计上,减少30%甚至50%以上的编程量,同时形成持久层的统一编程规范,减少持久层错误,同时易于维护和扩展。gdao对于go语言,相当于hibernate+mybatis 对于java语言,gdao框架融合了Hibernate的抽象性和MyBatis的灵活性,并解决了它们各自在ORM框架上长久以来使用上的痛点。
2024-08-06 09:45:18
1350
2
原创 Jdao v2.0.1:革新持久层编程,提升开发效率
Jdao是一种创新的持久层解决方案。主要目的在于 减少编程量,提高生产力,提高性能,支持多数据源整合操作,支持数据读写分离,制定持久层编程规范。 灵活运用Jdao,可以在持久层设计上,减少30%甚至50%以上的编程量,同时形成持久层的统一编程规范,减少持久层错误,同时易于维护和扩展
2024-07-31 10:57:14
927
1
原创 Rust高性能日志库tklog0.0.8—支持mod设置参数
tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数设置
2024-06-21 11:44:55
1181
1
原创 Rust高性能日志库tklog0.0.3—支持标准log库API
tklog 0.0.3版本主要更新1. tklog实现了官方Log接口,支持官方标准化日志API的调用2. 实现了官方log库API的异步场景调用。
2024-05-31 09:54:56
688
原创 Rust的高效易用日志库—tklog
tklog提供用法上,非常类似python等Logger的日志库用法,用法简洁;基于rust的高效性和一些优化策略,tklog的性能非常好,在压测中,可以达到 3-4 µs/op (微妙/次),这个效率比go最高的性能时候都高一些;
2024-05-28 09:47:32
1497
3
原创 高性能日志库go-logger2.0.4—支持slog日志文件切割
log/slog 库是 Go 语言用于结构化日志记录的一个强大工具,它旨在提升日志的管理和分析能力,同时保证代码的简洁性和执行效率。log/slog 专注于提供结构化日志的生成与处理逻辑,包括日志级别控制、键值对数据的记录等,但它并不直接内置文件处理功能,如日志文件的分割、压缩等。go-logger 已经实现了较为完善的日志文件管理功能,可以直接与 slog 配合使用,作为log/slog库的日志文件管理支持库。该版本主要支持go原生日志库 log/slog 的日志文件切割,压缩等功能。
2024-05-15 10:29:27
908
原创 wfs 文件存储系统 v1.0.6
wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等
2024-05-10 11:52:00
838
原创 如何部署 wfs 分布式服务
wfs是海量小文件存储系统。wfs1.x不直接支持分布式存储,但为了应对大规模部署和高可用需求,推荐采用如Nginx这样的负载均衡服务,通过合理的资源配置和定位策略,可以在逻辑上模拟出类似分布式的效果。也就是说,虽然每个wfs实例都是单机存储,但可以通过外部服务实现多个wfs实例之间的请求分发,例如通过对文件路径前缀(如 /01/)进行解析,可将请求分发至不同的wfs实例,从而达到业务层面的“分布式部署”
2024-04-24 20:41:39
1058
3
原创 wfs 文件存储系统 v1.0.5
wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等
2024-04-24 12:35:48
1259
原创 webtim 开源即时通讯平台 v0.0.5发布
webtim是即时通讯平台,提供丰富的通讯功能,除了基础通讯,同时实现多人实时音视频,视频直播等功能。im服务器为 Tim。前端使用tim的js客户端 timjs 调用tim服务器接口解析数据并渲染页面
2024-04-16 10:43:16
665
原创 wfs 文件存储系统 v1.0.4
wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件的碎片整理等。
2024-03-28 11:12:08
1199
原创 WFS海量小文件存储系统
WFS文件存储系统,主要解决海量小文件的存储问题。 wfs有非常高效的读写效率,在高并发压力下,wfs存储引擎读写响应时间可以达到微秒级别.wfs将海量提交存储的小文件进行高效的压缩归档。并提供简洁的数据获取方式,以及后台文件管理,文件碎片整理等
2024-03-19 13:54:33
1291
原创 去中心化分布式即时通讯引擎tim v2.0.1 发布
作者已经为windows,linux, macos等操作系统, 写好启动脚本,并打包放置相应的webtim执行文件。只需要执行start脚本,便可以在本地一键启动webtim。启动后,可以在本地通过tim后台管理系统与tldb后台管理系统查看相关的数据。说明:big string,big binary 是一种无格式的松散数据协议,主要应用场景在一些特殊的场景下,对类似thrift,json等特定格式的协议无法支持的情况下使用。这种两种松散的协议,可以支持一个数据包被终端分包多次发送的情况。
2024-01-22 10:55:34
1779
原创 tim实践系列——接入外部账号系统,配置关系型数据库
不依赖于任何中心服务器,采用去中心化分布式架构,解决传统中心化通讯方式的问题,去中心化分布式架构的通讯引擎的各个节点之间相互连接,形成一个庞大的分布式网络。可以轻松地扩展服务规模,支持更多的用户和业务需求,提供更加安全、可靠、高效的通讯服务。Github系列开源文章tim支持使用各种关系型数据库,如Mysql,PostgreSQL ,SQL Server,Oracle,Oceanbase;tim默认数据库为TLDB;
2024-01-22 10:54:24
1008
原创 tim实践系列——如何架构支持亿级别在线用户的即时消息系统
海量在线用户在应用上的行为,会产生巨大的数据量和高并发压力,对系统的并发处理能力与海量数据处理能力是一项大挑战。构建亿级别在线用户的即时消息系统或更高数据量的系统,不是一个大框架就可以解决的的问题,需要结合业务特点,从许多细微的地方入手才能更好的搭建符合实际业务情况的合理架构。以上3篇文章讲述了tim的集群架构特点,数据存储能力,安全限流等措施。实际上,除了限流措施,tim还提供了系列的验证,接口安全调用等措施。
2024-01-22 10:52:55
1216
原创 tim实践系列——去中心化分布式架构特点
tim是去中心化分布式即时通讯引擎。不依赖于任何中心服务器,采用去中心化分布式架构,解决传统中心化通讯方式的问题,去中心化分布式架构的通讯引擎的各个节点之间相互连接,形成一个庞大的分布式网络。可以轻松地扩展服务规模,支持更多的用户和业务需求,提供更加安全、可靠、高效的通讯服务
2024-01-16 11:28:52
902
2
原创 tim实践系列——分布式数据存储与动态数据库扩容
分布式数据存储是一种将数据分散存储在网络中多个节点上的技术,它通过多台服务器、计算机或者存储设备来共同维护和管理大量的数据集。这种架构能够提高系统的可扩展性、可用性和容错能力,因为不再依赖于单个大型的集中式存储系统。在分布式数据存储系统中,数据被分成多个部分并分散存储在各个独立的节点上。每个节点都拥有处理和存储数据的能力,可以根据需要动态地加入或离开系统,使得整个存储系统具有弹性伸缩的特点。TIM默认的数据库TLDB是一个高性能的分布式数据库,提供了数据的分布式存储。
2024-01-12 12:40:52
718
原创 webtim开源即时通讯平台第三版发布
webtim是依赖 tim即时通讯引擎 实现的web版通讯平台,具备以下功能与特点: 信息安全性:信息加密加密机制,确保通信内容的安全性。 用户资料安全性:用户账号无需被记录到服务器。用户资料被加密存储。确保用户信息的安全性。 支持即时通讯:允许用户进行实时的信息交流和文件传输。 离线消息存储:允许用户在离线状态下接收消息,并在重新上线时进行同步。 用户管理:支持用户注册、登录、个人信息管理等功能。 好友关系管理:支持用户添加、删除好友,管理好友列表等功能。
2024-01-12 12:39:16
1211
原创 tim实践系列——虚拟房间的作用和如何使用
而且在流分发中,一个流的中继服务器会派生流数据第二备用,第三备用,第四备用...等等的多个备用tim节点,当该中继器断开或其他节点无法连接它时,可以连接到它的后续备用节点上,中继器与集群断开时,第二备用节点变成这个流数据的中继服务器,它会继续派生出多个备用节点。tim自身实现的集群算法,自动形成这样的分布式架构,不需要人为调整,也无法人为干预。此时,注册者可以向虚拟房间 推送流数据,其他账号则无权限向该虚拟房间推送流数据。基于虚拟房间的推流,最终实现的是向tim推流,并进行流的分发。
2023-12-29 10:34:35
1015
原创 快速使用tim的简易demo
如果端口被占用无法启动,那么需要配置文件中配置监听端口,如:配置文件为 tim.json 内容: { "im.listen": 5081}打开两个浏览器标签页,任意账号都可以登录,互发信息。由于无数据库,因此也没有离线信息,只有登录在线才能收到信息。直接用浏览器打开页面无法连接tim服务器。可以用nginx或其他任意http静态文件服务器。tim是支持无数据库模式的,在无数据库模式下,任何账号登录都无需密码。下载相应操作系统的的tim运行文件。tim也支持无配置启动。只要将页面运行起来,
2023-12-29 10:18:49
633
原创 tim实践系列——消息撤回,阅后即焚 等功能如何开发
撤回消息与阅后即焚接口是没有时间限制的。在实际业务中,可以根据实际需要,加上撤回的时间限制。而阅后即焚,可以通过一般信息阅读时间,如8秒或10秒等,在消息显示后,调用阅后即焚接口。常规消息接口也就是通常定义的聊天消息。
2023-12-26 20:19:21
641
原创 tim实践系列——内置的好友关系和群组
使用tldb数据库时,默认支持tim内置账户系统,对于内置用户系统,tim是利用tim的核心接口实现了一套特定用户逻辑关系,实际上,这一套用户逻辑不一定适合所有业务的需求,但是,tim用户系统是对标目前流行的IM业务逻辑所设计开发的,适用于大部分的IM业务。如果tim的用户系统不能适配开发者的实际业务,开发者可以配置其他数据库,使用自己的用户系统。说明:tim的所有接口,除了注册和获取token接口外,其他接口都是异步返回数据。终端在tim客户端定义的对应handler捕获tim返回的数据并进行处理。
2023-12-26 20:15:49
513
1
原创 tim实践系列——tim信息安全与账号系统
用户信息包括用户登录账号,登录密码,用户个人资料等信息等;如乱码部分,则是加密后的用户个人资料,通常来说,虽然tim提供记录修改个人资料的功能,但是个人建议 开发者对用户个人资料应该在自己的业务系统中提供接口进行增删改查,用户资料数据记录到业务数据库中,最好不记录到tim中,因为个人资料本身与IM没有直接的关联性。接入自己的业务数据库,用户通信时,使用的是 执行登录SQL返回的标识,该标识可以是字符串,也可以是整数,比如 sql返回用户id号,或直接返回用户登录账号等。
2023-12-26 20:01:34
1028
1
原创 高性能分布式数据库tldb v0.0.3 发布
说明,配置文件的参数与tldb启动参数一致,参数可见《tldb 第三个版本 v0.0.3 发布。
2023-12-26 19:58:54
551
1
原创 tim实践系列——消息特点与如何在实际业务中使用
TimMessage是tim最主要的数据结构,所以它的功能比较复杂,也比较多,主要体现在TimMessage时可以被持久化的,并且可以通过发送者或接收者发起相应的指令进行删除,TimMessage包含多个属性字段,多种数据类型属性,可以传递不同类型的数据。在《》中,详细介绍了TimMessage的数据结构,本文主要示例它的业务使用。
2023-12-26 11:53:55
1091
1
原创 web开源直播通讯平台webtim
webtim开发目的是通过界面来显示表达tim接口功能。tim是去中心化的分布式IM引擎。支持基础通讯模式,对端到端的数据流传输支持非常全面,几乎涵盖了所有端到端的通讯需求,所以webtim可以非常流畅的实现任意通讯需求。但tim的强大并非其通讯模式,而是去中心化的集群功能,tim的水平扩展能力非常强,可以支持成千上万的节点集群,没有中心依赖和限制,支持数据分布式存储,数据库节点动态扩容。前端使用tim的js客户端。调用tim服务器接口渲染页面。
2023-12-26 11:35:53
1299
2
原创 tim实践系列——用户如何实现 隐身,在线,忙碌,心情等状态
部分IM软件会有显示用户在线状态的功能,如QQ,Skype等tim本身没有用户状态的说法,也就是说TimPresence不一定非得用于定义用户状态,也可以用于发送用户信息,但是TimPresence对象不会被持久化,也没有离线信息,只有在线用户才能收到,所以它的特征比较适合用于传递用户在线状态。而且用户掉线时,tim的内部业务逻辑也是发送一条TimPresence信息给好友用户,其属性offline=true。
2023-12-16 13:57:37
304
1
原创 tim实践系列——如何使用TimPresence自定义各种用户状态
timPrecence所有值都不会影响tim的业务逻辑,所有字段都没有既定的设定值,除了id,offline,fromTid 是由服务器赋值发送之外的字段,tim服务器会将客户端发送的值原样发送给目标用户,所以,如何显示状态需要开发者自定义设定。使用timPrecence时,需要对timPresence进行赋值,一些字段不需要客户端赋值的,包括 id,offline,fromTid 这些字段是由服务器赋值发送到客户端,所以客户端对这些字段赋值是无效的。
2023-12-16 11:57:34
180
1
struts入门.pdf
2009-12-12
javamail-1_4_1.zip
2009-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人