IM即时通信项目技术方案Word下载.docx
《IM即时通信项目技术方案Word下载.docx》由会员分享,可在线阅读,更多相关《IM即时通信项目技术方案Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
同时基于IM即时通讯平台可以定制一套专属于自己的IM通讯软件,对数据的保密性、安全性以及功能的多样性都能很好的满足。
3.2.建设目的及原则
构建一套云即时通讯服务平台,为需要IM即时通讯的应用提供基础的即时通讯能力服务。
1.1.
1.2.
3.2.1.总体建设原则
1
2
3
4
5
6
7
8
9
10
11
11.1
11.2
11.2.1
11.2.1.1系统可用性原则
系统可用性(Availability)是用来衡量一个平台系统能提供持续服务的能力,它表示的是在给定时间系统或者系统某一能力在特定环境中能够满意工作的概率。
采用先进的技术和方法,满足和适应移动互联网技术更新速度,在满足开发时间节点的要求下,满足用户的交互体验和功能需求,采用智能化的处理特色,满足运营管理的效率要求。
在系统运行当中可能会影响到系统可用性的因素:
1.操作人员和组织
其实这个地方平台在使用中的管理员,他是否重视运维?
组织是否已经认识平台带来的价值,把平台的可用性当作自己的一个核心能力来看待。
是否把面向用户的业务能力和运维很好的对接?
是否建立起用户质量的组织文化。
2.业务流程
业务管理平台的流程梳理多个角色自己的关系和职责。
我们第一个要去看这个流程在面对故障的是否起到了积极的作用,比如说能够确保故障信息的准确送达,同时保证处理人的角色和职责是清晰的。
其次不断去检查流程是否可以自动化驱动,而非人为驱动。
人是不可靠之源!
我们最终希望形成是一个自动化、标准化的流程,这样的流程不容易被异化,且能保证预期执行结果一致。
3.后期的运维技术
很多时候大家看到的技术是运维技术,其实恰恰相反对于业务来说,对其高可用的影响,因此在其中需要遵循很多原则,有一些原则需要有普适的参考价值。
比如说服务降级、过载保护、服务公共化等等。
这些方法论是否已经融入到研发和运维的架构设计之中。
业务功能需求优先,而非可运维性优先,可运维性最终就是业务的质量。
4.业务管理
把你的平台的业务能力标准化,你可以转换成我们多个业务指标,比如说质量、可用性、用户体验、用户满意度、成本,有了这些业务导向性指标,才能把IT能力和业务更好的对接起来。
否则很容易在组织内,形成运营维护共同认识,而非创造价值部门。
这一点还有一个重要性,就是让维护人员也要足够的认识到,他们的能力直接和业务相关,需要增强业务敏感度。
在系统运行当中为了保障系统的可用性所采用的策略:
1.故障发生前,建立运维质量仪表盘
我们一定要建立运维数据看板,这个看板的数据并且要在业务、测试和运维人员对平台的情况达成一致,让大家足够重视这份数据,这样数据便有了推动力。
建议这个地方的核心数据指标不要太多,因为涉及到多个团队,大家不能够一致理解,特别是传达到管理层,太多的指标,容易失去关注的焦点。
通行的做法,就是用可用性来做运维的数据看板。
可用性的计算方法有简单的方法,也有复杂的方法。
简单的方法就是在监控系统中搞一些探针来模拟用户监控,最后我们能得出故障的时长和可用性的时间,这样我们可以建立每天、每周、每月、每Q的可用性,可以做到分业务、分服务(更细粒度)等等;
复杂的方法在模拟数据的基础上,可以把事件系统记录的时间数据拿过来作为评估的标准。
另外可以把可用性上升到质量层面,这个里面涉及到的评估维度(成本、用户体验、满意度)就更多了,数据获取的来源也变得更多,有些是来自于客服系统,有些是来自于舆情监控,有些是来自于运维容量系统,有些是来自于事件系统等等,不过最终呈现的指标就是一个---质量。
2.故障发生前,设定技术准则和要求
运维需要和研发建立整体的技术标准和规范要求。
因此从保障系统可用性的角度来说,我们需要设定一个路线图,最终服务于这个平台运行的可用性。
比如说之前我提到的影响系统的因素里面讲到了先做标准化,然后做公共服务化、最终服务无状态化。
运维一定要把标准化作为核心要务来推进,建立标准化的运维环境,建立标准化的技术栈,建立标准化的高可用方法论,最终这个业务的可用性一定是有保证的。
3.故障发生时,恢复是第一要务
故障发生的时候,恢复必须是保证系统可用性所必须要时刻记住的。
在故障的当下,定位故障原因是大忌,这往往让故障时长变得不可控,因为会直接影响MTTR(平均修复时间),影响用户的业务使用。
用一些标准的原则去隔离故障,比如说服务器重启,链路禁用,DNS切换等等。
4.故障发生后即时的排查和复盘问题
每一次故障发生后,运维人需要牵头去复盘故障,刚刚说了我们恢复是第一要务,所以故障的根本原因我们可能还不知道,此时就需要运维、测试和研发一起仔细的去看整个的故障过程,看看到底哪儿有什么问题?
基本上也是从刚才说的四个方面来评估。
不断的审视我们运维的能力和IT的能力,说“故障是运维最好的老师”的原因也在于此,它能够不断驱使我们走向更高的成熟度。
11.2.1.2系统可维护性原则
系统采用集中部署便于集中维护,提供分权分级的权限管理机制,不同的系统模块,不同的任务可以设置不同的数据操作、统计和监控查看分析权限。
系统采用构件化设计思想,系统框架与业务逻辑分离,具备开放的体系结构。
系统功能模块均采用插件式方式架构,易于修改,对某一个功能模块的修改,一般不影响系统其他功能的正常运行;
系统分析、调度更多采用的是配置模式,易于扩展,新增服务时对系统的修改较少,仅需调整配置文件参数即可;
系统具备方便且可定期执行、分析结果的业务测试功能。
11.2.1.3系统可靠性原则
系统可靠性指在规定条件下和给定时间内平台能正确运行的概率。
系统可靠性用下列四个标准来判断:
平台在运行的过程中不为故障所破坏或停止;
平台的业务流程的结果不包括由故障所引起的错误;
平台对执行业务的时间不能超过一定的限度;
平台运行在允许的网络内。
系统可靠性保障主要体现在以下两个方面:
系统采用增量备份和全备份相结合的方式定期备份重要的系统数据;
系统应具有良好的并行处理机制,对存取冲突的竞争具有有效的仲裁和加锁机制,充分保证事务处理的完整性,并降低系统I/O开销,提高并发用户查询和存取的性能。
11.2.1.4系统可扩展性原则
可扩展性是软件设计的重要的原则之一,它以添加新功能或修改完善现有功能来考虑软件的未来成长。
可扩展性是软件拓展系统的能力。
系统采用成熟的框架开发接口服务和后台管理,前端APP可采用Native和HTML5代码混合实现,整体采用分层设计。
支持开闭原则设计思想,便于系统的灵活配置和部署;
支持插件技术,便于系统纵向延伸和对新技术的接入。
良好的可扩展性设计应该允许更多的业务功能在必要时可以被插入到适当的位置中。
这样做的目的的是为了应对未来可能需要进行的修改,而造成代码被过度工程化地开发。
可扩展性可以通过软件框架来实现:
动态加载的插件、顶端有抽象接口的认真设计的类层次结构、有用的回调函数构造以及功能很有逻辑并且可塑性很强的代码结构。
3.2.2.Android-SDK目标
实现android客户端接入集成即时通讯基础服务提供相应的SDK。
提供android客户端的登录、消息通知、会话、消息、通知、群聊、临时会话讨论组相关功能接口。
3.2.3.IOS-SDK目标
为实现iOS客户端接入集成即时通讯基础服务提供相应的SDK。
提供iOS客户端的登录、消息通知、会话、消息、通知、群聊、临时会话讨论组相关功能接口。
3.2.4.PC-SDK目标
为实现PCH5页面接入集成即时通讯基础服务提供相应的SDK。
提供PC客户端的登录、消息通知、会话、消息、通知、群聊、临时会话讨论组相关功能接口。
3.3.系统架构
根据对需求的分析和系统目标的总结,本方案采用面向服务的体系结构技术来构建统一的IM即时通信平台,软件可以分布式部署在服务器集群上,实现对海量并发通信的实时转发。
3.3.1.系统架构设计
11.3
11.3.1
11.3.1.1系统架构图
系统采用多层体系架构:
分层设计实现“高内聚、低耦合”,易于控制、易于扩展,分为数据层、服务层、接口层、应用层,具体说明如下:
数据层:
提供持久化数据存储和数据服务,包括即时通信消息数据、用户及关系数据、平台基础数据等,使用mysql来进行持久化。
服务层:
整个平台的核心层,为平台提供即时通讯基础服务能力,使用SOA框架来构建系统服务,使用kakfa来进行信息转发,同时为了提高并发能力,使用redis来进行数据缓存。
接口层:
向第三方业务应用提供即时通讯基础服务能力集成客户端SDK接口(包括:
android\ios\pc)和服务器端SDK接口。
应用层:
为需要集成即时通讯基础服务能力的第三方应用。
11.3.1.2SOA框架
采用SOA架构(面向服务架构),它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。
服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性,能更迅速、更可靠、更具重用性架构整个业务系统。
3.3.2.系统软件架构
高可用的架构,高并发消息处理。
使用高性能互联网中间件:
Redis,Kafka,Cassandra,Zookeeper。
移动消息和移动场景深度优化,兼顾消息可靠性和效率。
原生移动端SDK优化,APP完美集成。
基于XMPP协议及成熟的Mina通信架构,性能稳定、效率高;
业务逻辑Module基于总线的设计方式,通过插件及总线驱动扩展业务Module;
数据接入采用hibernate持久化架构,能够接入多种主流数据库;
整个系统设计开发基于标准的J2EE技术,使用标准的HTML,JSP,SOAP,JDBC等技术;
支持TCP、UDP、HTTP多种协议;
外部系统接入基于SOA体系架构,具备良好扩展性能。
3.3.3.消息发送拓扑
3.4.系统功能设计
3.4.1.基础IM服务能力
11.4
11.4.1
11.4.1.1注册
要使用IM通信功能,首先必须注册成为IM平台的用户,因此IM通信平台提供用户注册功能呢,注册的用户只是IM通信平台用户,不是属于任何的业务系统用户,因此需要和应用系统用户关联起来,需要接入的应用进行用户关联。
11.4.1.2登录
IM通信的登录功能,就是用户上