# timdoc **Repository Path**: mayuanxiaonong/timdoc ## Basic Information - **Project Name**: timdoc - **Description**: 文档、说明 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2015-06-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #timdoc 起因:忍无可忍 起因其实很简单,就是初入公司正好参与了公司某IM软件的设计,并负责了部分模块的开发管理工作,但本公司向来以“要想项目跑得快,全凭领导一句话”为指导思想,以“领导满嘴跑需(huo)求(che)”来开展工作,导致该软件变成了一无架构、二无设计、三无计划、四无质量管控(e.t.c)的四无产品,最后还差点因为公司领导层换届而流产。 在亲历了N多次辛辛苦苦设计的优化方案被项目经理的“过度需求化”而否决(不得不吐槽一下,很多时候是因为项目经理技术实力不足,没能理解方案)之后,忍无可忍并痛定思痛,开始查阅各种资料,研究各种主流IM软件的架构,了解常用协议,最终决定参考“架构图.jpg”自己实现一个简单的IM服务器。 现状:进行中 研究了很久,也决定了很久,但一直没时间来实现,最近偶有闲暇,研究了一些Mysql分布式、负载均衡等方面的技术,突然又想起了这档子事。于是乎,动手吧,骚年,Shut up and just do it. 重拾架构图,做了简单的技术选型,动手开干。由于只是兴趣使然,顺便巩固提高一下自己的技术实力,没有打算做的多大,所以目标比较简单。实现基本的通讯功能,比如文本、表情、图片等;服务器一定是可以集群的,实现节点间的交互和转发,最好可以实现服务器主机节点的动态扩容和自动负载均衡;协议使用自定义的;支持高并发;后期可以加入web端可视化管理,对主机节点进行增删管理和监控(大概会需要一点技术支援)。 目前使用的技术大概有: Netty 4.0:Tcp长/短连接 Jetty:servlet中间件、web服务 Spring mvc:数据源、依赖注入 Redis:消息队列 Mongodb:缓存 基于MessagePack的二进制通讯协议 一致性哈希等常用算法 Java线程池异步处理 ………… 项目使用Maven管理Eclipse JEE开发,暂时使用Git托管在[开源中国](http://git.oschina.net/mayuanxiaonong)