概念
融合通信是指,把计算机技术与传统通信技术融合一体的新通信模式,融合计算机网络与传统通信网络在一个网络平台上,实现电话、传真、数据传输、音视频会议、呼叫中心、即时通信等众多应用服务。
业务平台功能架构
核心开发框架模型
框架模型概念说明
核心基础框架模型主要描述下述几个概念及概念之间的关系,自下至上分别为:
■ OSGI:一个基于Java语言的服务(业务)规范,是一个面向Java的动态模型系统,为模块化应用的开发定义了一个基础框架。简单的说,通过OSGI可以在后台在线对应用系统组件进行安装、升级或卸载,而无需打断设备(服务器)的正常运行。
■ Infrastructure Framework:实现了与OSGI的高度解耦。从开发者层面来看,它完全屏蔽了OSGI层面的技术实现,即开发人员在不需要关注复杂的OSGI技术的情况下,仍可做高层设计。同时,“Infrastructure Framework”又具备OSGI的功能,如服务的管理、注册等。另外,基于“Infrastructure Framework”之上的其他业务Bundle在开发过程中也不需要依赖OSGI依赖了,框架更加简洁。
■ Host:一个JVM实例只启动一个Host,映射到物理主机(或虚拟主机);Host的子元素是Server。
■ Server:表示软件维度上的一个子系统,主要负责定义主处理流程,不管具体业务功能的实现。一个Host上可以启动1~N个Server;在最严格的分布式部署要求下,一个Host上只启动一个Server。每个Server都有自己独立的配置信息库;Server运行时会根据配置文件信息主动申明自己需要装配的Components,因此其运行时的子元素是Component。
■ Component:从职责分配的角度上来看,上面已经讲到Server主要负责定义主处理流程,那么在此,Component则负责流程中的具体(业务功能)实现。同一个Component可以为多个不同的Server服务。每个被装载到Server中的Component实例,都拥有自己独立的配置(来自Server的配置信息库),实现了同一Component在不同Server中的严格相互隔离。
■ Plugin:从意义上看,Plugin类似于OSGI的bundle概念,为系统的模块化设计提供支撑。一个Plugin可以提供至多1个Server和至少0个Component的实现,可以理解为Plugin是装盛Server实现和Component实现的容器。从设计角度来看,目前主要有以下几种类型的Plugin:
(1) Server Plugin:提供Server功能实现的Plugin。
(2) Infrastructure Plugin:提供系统基础功能的Plugin,如IM系统中的Connector、File、Cache等基础功能的Plugin。
(3) Protocol Plugin:提供协议解析器(Parser)和协议处理类(Protocol Processor)的Plugin,如Message协议解析、Presence协议解析、Jingle协议解析等。
■ Repository:可以理解为Plugin管理器,管理着全部的Plugin,并读取Plugin中的Components,然后依据Server中的配置信息,将单个的Component注入到对应的Server中。
特别说明:核心基础框架模型中的Server不会与Repository中的Plugin直接打交道,而是通过灵活的配置信息,将合适的Component注入到对应的Server中。
■ MessageChannel:基于架构设计的一致性和对称性,在Server与Server之间传递的信息,将被统一封装到Message对象中。MessageChannel则是连接各个Server之间的通道,接收、传递和处理封装好的Message对象。MessageChannel可以有多种不同的实现,以适应苛刻的通讯要求。
核心开发框架的插件机制
框架插件机制的说明:
核心框架采用了插件注入机制,即按需装配插件。从核心框架的设计来看,Server是负责系统的主处理流程,本身不具备业务处理的功能。换言之,Server启动后,Server中没有内容,但是它会发出通知,告诉框架它需要装配哪些Component才能工作。
Repository,相当于一个Plugin管理器,其中包含了各种功能的Plugin,并统一管理这些Plugin;在系统运行时,它会扫描其包含的全部Plugin信息,并启动这些Plugin。从设计角度来看,(开发时)我们又人为的把一个个大的功能拆分成若干个小的功能点,这就是Component了,以便于开发和维护。Plugin会监听其包含的Component的一系列动作,并广播其能提供的Component服务。
在核心框架的作用下,Server拿到了其需要的Component实例,于是就将这些Component实例动态地装配到Server中,Server也就能提供相应的服务了。当Plugin停止时,Server就相应地卸载掉已经装配了的Component,也就停止了相应的服务。整个过程都是动态发生了,只要相应的配置文件正确,不需要人工干预,核心框架会自动完成这些工作。
分布式实现框架
介绍分布式实现之前,有必要说明一下本系统的消息处理流程。系统收到一条消息后,对其的处理步骤是固定的,依次是:stream(接入)、parse(解析)、process(处理)、route(路由),每个步骤都对应一个server:steamer、parser、processor、router。每个server有两个固定组件:DataReceiver(数据接收器)、MessageChannel(数据发送通道)。每个server从DataReceiver中接收数据,处理完成后,通过其MessageChannel发送给下级server的DataReceiver。消息处理的流程如下图所示:
本系统分布式实现的基本思想为:将负责消息处理不同阶段的server部署到分布式的各个独立节点上,每个独立节点间使用高速通道互联,且负责每个消息处理的节点会有多个。以此来提高系统对消息的并行处理能力。
系统中与分布式实现有关的bundle为:com.cmcc.olive.server.integration.distribution、
com.cmcc.olive.server.management。com.cmcc.olive.server.integration.distribution实现分布式版本的DataReceiver和MessageChannel。com.cmcc.olive.server.management实现了分布式节点的功能。
负责消息处理不同阶段的server(如pipe.streamer、pipe.parser)可以根据不同的server配置加载不同版本的DataReceiver、MessageChannel。当对server配置了deployment.type=distributed 时,server将加载分布式版本的组件实现(包括DataReceiver、MessageChannel);当对server配置了deployment.type=local或没有设置deployment.type属性时,server将加载本地版本的组件实现。
业务平台逻辑架构
系统逻辑架构说明:
核心基础框架从功能层面将整个系统划分为三大功能块,分别是Host功能块、Server功能块和Repository功能块。Host功能块上可以运行1~N个逻辑Server,在最严格的分布式部署要求下,一个Host上只运行一个Server,并且支持动态的启停Server。Repository功能块则包含若干个功能Plugin,Plugin由若干个Component组合而成,其中Component是主要的功能逻辑载体,以组件的形式对外提供服务。
业务平台主处理流程
系统整体功能与交换流程说明:
整体功能与流程架构图描述了系统整体的逻辑功能与流程控制,侧重展现了各个模块之间的划分以及模块间的交互关系。
从水平角度看(也可以理解为系统的运行视图),Server定义了系统的主处理流程;从垂直角度看(也可以理解为开发视图),Plugin定义了与功能或流程相关的插件。这样从水平和垂直两个不同的维度对系统进行定义和划分,便于开发人员在开发时对系统功能和流程的理解,也便于开发时的维护。
那么,系统各模块划分、功能及关系说明如下:
Stream Server
请求连接服务器,接收用户请求并与之协商加密策略、压缩方式建立安全通信通道,可接受TCP、HTTP等各种连接请求。
Auth Server
认证服务器,连接的用户与服务器协商加密机制,并通过Auth Server验证,验证通过后用户Session信息保存在Connection Session服务器。后续的XML流将在此可靠通道下传递。
Parsing Server
XML解析服务器,业务通信过程中的XML数据流经由Parsing Server解析,分为Presence、Message、IQ、Jingle等几种类型,解析成Java能够识别的业务对象,然后交给协议处理服务器处理。
Protocol Processing Server
XMPP核心业务处理模块以及扩展服务模块,最终的业务处理服务都在这里,还包括与外部服务器(例如流媒体服务器)的对接通信,包含的功能有:
Presence status:在线状态,用户在线状态存取
Subscription:订阅,好友在线状态查找
Realtime message:实时消息
Offline message:离线消息
Register:用户注册
Roster:花名册,用户好友相关信息
Search:用户搜索
MUC:群组、群组聊天相关
File Transfer:对文件传输的支持
Service Discovery:服务发现,基于OSGI服务注册与查找相关支持
Persistent:数据持久化支持
Jingle:XMPP的扩展协议,通过Jingle可以实现点对点的多媒体控制
Jingle Audio via RTP:音频支持
Jingle Video via RTP:视频支持
Jingle ICE:Jingle交互式连接建立
Jingle STUN:Jingle地址映射相关支持
Message:消息
vCard:名片
Router Server
消息路由服务器,负责消息的路由查找及流转。
Session Server
会话管理,管理用户Session、网络连接Session服务器Session。当用户发起请求建立连接通道后,会将连接信息保存在Session Server,后续的XMPP通讯均基于该Session。XMPP核心及扩展服务模块的会话也由该服务器管理。
Management Server
管理服务器,系统中的所有模块都是基于OSGI组件化的服务,OSGI组件将注册到组件管理服务器,业务模块需要用到某个组件时从组件管理服务器查找,并负责全局的配置信息管理及相关的业务监控。
Streaming Media Server
流媒体服务器,实时语音和视频通话,处理VOIP相关。相对独立的模块,系统扩展协议Jingle与流媒体服务器交互。
Data Access Server
数据访问,对系统业务的数据支撑,负责数据的持久化和访问。支持关系数据库和非关系型数据库(NoSQL)两种类型的数据库的数据存取。
Cache Server
提供Key-Value型的高速缓存服务,支持任意对象的存储。
File Server
统一的文件存储接口,存储用户上传的各式各样的文件,并提供HTTP方式的文件访问服务。
Gateway Server
外围系统接入的统一入口,方便外围系统与本多维通讯系统进行数据交互。
VOIP子系统架构(整体)
融合通信系统要求支持实时的语音、视频通话(即VOIP),对此,我们提出两种架构解决方案以实现对VOIP功能的支持,分别是“通过流媒体服务器中转”和“点对点”这两种架构方案。
通过流媒体服务器中转
通过流媒体服务器中转的VOIP方案的流程如下:
(1) 主叫方发起通话请求:手机客户端1(以下称“主叫方”)准备发起与手机客户端2(以下称“被叫方”)之间的VOIP通话请求;
(2) XMPP处理请求:实时通讯服务器收到主叫方的VOIP通话请求,查询被叫方是否满足进行实时VOIP通话的要求(至少要求在线)。被叫方不在线,返回结果给主叫方,可以结束本次通话请求了;被叫方在线,则进入下一步流程处理。
(3) 被叫方响应通话请求:实时通讯服务器将主叫方的通话请求推送到被叫方,被叫方手机响铃。被叫方在一段时间内未作任何操作或直接挂接本次通话请求,则服务器通知主叫方可以结束本次通话请求了;被叫方接受主叫方的通话请求,则进入下一步流程处理。
(4)XMPP+Jingle协商VOIP会话的建立:
与主叫方的协商(RTP协议):通知主叫方可以开始录制语音或视频了,并采用指定的编码格式对实时录制的音频或视频进行编码,然后将编码后的数据发送到流媒体服务器的指定端口A上。
与被叫方的协商(RTP协议):通知被叫方可以去流媒体服务器的指定端口B上取回数据,并采用指定的编码格式对实时取回的数据进行解码。
当然,对媒体的编解码工作可以交由流媒体服务器来做,但这样对移动客户端来说,可能比较耗流量。
(5) 主叫方建立VOIP会话:开始录制音频或视频,并按照规定上传到流媒体服务器上。
(6) 被叫方建立VOIP会话:按照规定从流媒体服务器上下载数据,在本地播放音频或视频。
(7)VOIP通话过程控制:在主叫方和被叫方进行VOIP通话的期间,实时通讯服务器仍不断地与主叫方和被叫方进行数据的交换,如权限的控制、如何计费等,直到本次VOIP通话完全结束。
点对点
数据存取架构
数据库模型采用关系型数据库+NoSQL,频繁访问的数据采用NoSQL数据库进行数据快速存取,重要数据、非频繁访问数据采用关系型数据库存储。
数据缓存架构
缓存技术,根据系统需要频繁访问的数据采用缓存提高访问速度,可支持对象级的缓存,如任意的Java Object、图片等类型的数据。共享缓存也提供各服务器节点之间的数据共享。
网络拓扑架构
网络拓扑架构说明:
外层是互联网,终端设备、第三方系统、其他外部网关通过GPRS/3G/4G等网络与本系统通讯
互联网和内部网络之间设主备两套防火墙,防火墙内架设主备两套三层/四层交换机
内网架设F5负载,各服务器节点与F5设备相连
系统边界
服务端关键流程
异步聊天流程
异步聊天流程:
客户端如果消息内容非文本即上传文件服务器,返回上传路径。
客户端处理上传路径。
客户端向平台接入服务发起异步聊天请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到消息服务。
消息服务向数据存取服务查找用户,返回用户信息。
消息服务查找结果逻辑处理。
消息服务向数据存取服务存储消息,返回存储结果。
消息服务存储结果逻辑处理。
消息服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应异步聊天请求到客户端。
消息服务通知朋友消息逻辑处理。
消息服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知朋友消息到朋友客户端。
朋友客户端如果查看非文本消息,请求到文件服务器下载文件。
文件服务器读取下载内容。返回到朋友客户端。
实时通话流程
实时通话流程:
客户端向平台接入服务发起实时通话请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到VOIP业务处理服务。
VOIP业务处理服务向VOIP服务器发起VOIP请求。
VOIP服务器业务处理。返回VOIP处理结果。
VOIP业务处理服务逻辑处理VOIP处理结果。
VOIP业务处理服务向数据存取服务发起实时通话存储,返回存储结果。
消息服务存储结果逻辑处理。
消息服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应异步聊天请求到客户端。
客户端处理响应。
客户端连接VOIP服务器。
VOIP业务处理服务通知朋友消息逻辑处理。
VOIP业务处理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知朋友消息到朋友客户端。
朋友客户端处理响应。
朋友客户端连接VOIP服务器。
语音信箱流程
语音信箱流程:
客户端如果添加语音录音上传文件服务器,返回上传路径。
客户端处理上传路径。
客户端向平台接入服务发起语音信箱请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务操作语音信箱,返回用户信息。
用户管理服务操作结果逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应语音信箱请求到客户端。
用户管理服务通知朋友消息逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知朋友消息到朋友客户端。
朋友客户端主动到文件服务器下载语音。
文件服务器读取下载内容。返回到朋友客户端。
匹配朋友到朋友列表流程
匹配朋友到朋友列表流程:
客户端向平台接入服务发起匹配朋友请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务查找朋友列表,返回朋友数据。
用户管理服务查找结果逻辑处理。
用户管理服务向数据存取服务匹配联系人,返回匹配结果。
用户管理服务匹配结果逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应匹配朋友请求到客户端。
推送朋友到朋友列表流程
推送朋友到朋友列表流程:
用户管理服务推送朋友处理。
用户管理服务向数据存取服务匹配联系人,返回朋友数据。
用户管理服务查找结果逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务推送朋友到客户端。
客户端处理推送的朋友。
查找新朋友流程
查找新朋友流程:
客户端向平台接入服务发起查找新朋友请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务匹配联系人,返回匹配结果。
用户管理服务匹配结果逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应查找新朋友请求到客户端。
推送新朋友流程
推送新朋友流程:
用户管理服务推送圈子新朋友处理。
用户管理服务向数据存取服务查找圈友,返回圈友数据。
用户管理服务查找结果逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务推送新朋友到客户端。
客户端处理新朋友。
邀请朋友流程
邀请朋友流程:
客户端向平台接入服务发起邀请朋友请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务查找用户,返回用户信息。
用户管理服务查找结果逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应邀请朋友请求到客户端。
用户管理服务向短信服务器发起邀请朋友短信。
短信服务器发送邀请短信,到被邀者。
个性卡片流程
查看个性卡片流程:
客户端向平台接入服务发起查看个性卡片请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务查找用户个性卡片,返回用户个性卡片。
用户管理服务查找结果逻辑处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应异步聊天请求到客户端。
客户端如果查看非文本消息,请求到文件服务器下载文件。
文件服务器读取下载内容。返回到客户端。
创建圈子流程
创建圈子流程:
客户端向平台接入服务发起创建圈子请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务创建圈子,返回存储结果。
群组管理服务存储结果逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应异步聊天请求到客户端。
群组管理服务通知朋友消息逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知已加入圈子到被邀者客户端。
发布动态流程
发布动态流程:
客户端如果动态内容非文本即上传文件服务器,返回上传路径。
客户端处理上传路径。
客户端向平台接入服务发起发布动态请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务发布动态,返回存储结果。
群组管理服务存储结果逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应发布动态请求到客户端。
群组管理服务通知朋友消息逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知圈友消息到圈友客户端。
圈友客户端如果查看非文本消息,请求到文件服务器下载文件。
文件服务器读取下载内容。返回到圈友客户端。
圈友会话流程
圈友会话流程:
客户端如果圈友会话内容非文本即上传文件服务器,返回上传路径。
客户端处理上传路径。
客户端向平台接入服务发起圈友会话请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务圈友会话,返回存储结果。
群组管理服务存储结果逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应圈友会话请求到客户端。
群组管理服务通知朋友消息逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知圈友消息到圈友客户端。
圈友客户端如果查看非文本消息,请求到文件服务器下载文件。
文件服务器读取下载内容。返回到圈友客户端。
多人通话流程
实时通话流程:
客户端向平台接入服务发起实时通话请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到VOIP业务处理服务。
VOIP业务处理服务向VOIP服务器发起VOIP请求。
VOIP服务器业务处理。返回VOIP处理结果。
VOIP业务处理服务逻辑处理VOIP处理结果。
VOIP业务处理服务向数据存取服务发起实时通话存储,返回存储结果。
消息服务存储结果逻辑处理。
消息服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应异步聊天请求到客户端。
客户端处理响应。
客户端连接VOIP服务器。
VOIP业务处理服务通知圈友消息逻辑处理。
VOIP业务处理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知朋友消息到圈友客户端。
圈友客户端处理响应。
圈友客户端连接VOIP服务器。
动态互动流程
动态互动流程:
客户端如果动态内容非文本即上传文件服务器,返回上传路径。
客户端处理上传路径。
客户端向平台接入服务发起动态互动请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务动态互动,返回存储结果。
群组管理服务存储结果逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应动态互动请求到客户端。
群组管理服务通知圈友消息逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知圈友消息到圈友客户端。
朋友客户端如果查看非文本消息,请求到文件服务器下载文件。
文件服务器读取下载内容。返回到圈友客户端。
圈子管理流程
圈子管理流程:
客户端向平台接入服务发起圈子管理请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务圈子管理,返回操作结果。
群组管理服务操作结果逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应圈子管理请求到客户端。
群组管理服务通知圈友消息逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知圈友消息到圈友客户端。
交换号码流程
交换号码流程:
客户端向平台接入服务发起交换号码请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务查询用户信息交换号码,返回操作结果。
群组管理服务查找结果交换号码处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应交换号码请求到客户端。
群组管理服务通知圈友消息逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知圈友消息到圈友客户端。
圈友客户端处理交换号码确认。
圈友客户端向平台接入服务发起交换号码确认请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务存储好友关系,返回存储结果。
群组管理服务存储结果交换号码确认处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务发送交换号码确认到客户端。
客户端处理交换号码确认。
退出圈子流程
退出圈子流程:
客户端向平台接入服务发起退出圈子请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到群组管理服务。
群组管理服务向数据存取服务退出圈子,返回删除结果。
群组管理服务删除结果逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应退出圈子请求到客户端。
群组管理服务通知圈友消息逻辑处理。
群组管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知退出圈子到圈友客户端。
我的动态发布流程
我的动态发布流程:
客户端如果动态内容非文本即上传文件服务器,返回上传路径。
客户端处理上传路径。
客户端向平台接入服务发起我的动态发布请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务更新个人动态信息,返回更新结果。
用户管理服务个人动态处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应我的动态发布请求到客户端。
用户管理服务向数据存取服务查询个人动态订阅者,返回查询结果。
用户管理服务个人动态订阅者消息处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务通知订阅好友动态更新到订阅者客户端。
我的私密发布流程
我的私密发布流程:
客户端如果私密内容非文本即上传文件服务器,返回上传路径。
客户端处理上传路径。
客户端向平台接入服务发起我的私密发布请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务更新个人动态信息,返回更新结果。
用户管理服务个人动态处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应我的私密发布请求到客户端。
我的相册查看流程
我的相册查看流程:
客户端向平台接入服务发起查看我的相册请求。
接入服务将请求报文发给解析服务。
解析服务将协议解析成业务对象。
解析服务转发业务对象到用户管理服务。
用户管理服务向数据存取服务查询图片信息,返回查询结果。
用户管理服务查询结果处理。
用户管理服务发送数据到路由服务。
路由服务处理消息路由,转发消息,到接入服务。
接入服务响应查看我的相册请求到客户端。
客户端如果查看非文本消息,请求到文件服务器下载文件。
文件服务器读取下载内容。返回到客户端。