融合通信技术实战案例,自媒体平台也有一定的参考价值

概念

融合通信是指,把计算机技术与传统通信技术融合一体的新通信模式,融合计算机网络与传统通信网络在一个网络平台上,实现电话、传真、数据传输、音视频会议、呼叫中心、即时通信等众多应用服务。


业务平台功能架构


核心开发框架模型


框架模型概念说明

核心基础框架模型主要描述下述几个概念及概念之间的关系,自下至上分别为:

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服务器。


动态互动流程

动态互动流程:

  • 客户端如果动态内容非文本即上传文件服务器,返回上传路径。

  • 客户端处理上传路径。

  • 客户端向平台接入服务发起动态互动请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到群组管理服务。

  • 群组管理服务向数据存取服务动态互动,返回存储结果。

  • 群组管理服务存储结果逻辑处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务响应动态互动请求到客户端。

  • 群组管理服务通知圈友消息逻辑处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务通知圈友消息到圈友客户端。

  • 朋友客户端如果查看非文本消息,请求到文件服务器下载文件。

  • 文件服务器读取下载内容。返回到圈友客户端。


圈子管理流程

圈子管理流程:

  • 客户端向平台接入服务发起圈子管理请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到群组管理服务。

  • 群组管理服务向数据存取服务圈子管理,返回操作结果。

  • 群组管理服务操作结果逻辑处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务响应圈子管理请求到客户端。

  • 群组管理服务通知圈友消息逻辑处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务通知圈友消息到圈友客户端。


交换号码流程

交换号码流程:

  • 客户端向平台接入服务发起交换号码请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到群组管理服务。

  • 群组管理服务向数据存取服务查询用户信息交换号码,返回操作结果。

  • 群组管理服务查找结果交换号码处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务响应交换号码请求到客户端。

  • 群组管理服务通知圈友消息逻辑处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务通知圈友消息到圈友客户端。

  • 圈友客户端处理交换号码确认。

  • 圈友客户端向平台接入服务发起交换号码确认请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到群组管理服务。

  • 群组管理服务向数据存取服务存储好友关系,返回存储结果。

  • 群组管理服务存储结果交换号码确认处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务发送交换号码确认到客户端。

  • 客户端处理交换号码确认。


退出圈子流程

退出圈子流程:

  • 客户端向平台接入服务发起退出圈子请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到群组管理服务。

  • 群组管理服务向数据存取服务退出圈子,返回删除结果。

  • 群组管理服务删除结果逻辑处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务响应退出圈子请求到客户端。

  • 群组管理服务通知圈友消息逻辑处理。

  • 群组管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务通知退出圈子到圈友客户端。


我的动态发布流程

我的动态发布流程:

  • 客户端如果动态内容非文本即上传文件服务器,返回上传路径。

  • 客户端处理上传路径。

  • 客户端向平台接入服务发起我的动态发布请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到用户管理服务。

  • 用户管理服务向数据存取服务更新个人动态信息,返回更新结果。

  • 用户管理服务个人动态处理。

  • 用户管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务响应我的动态发布请求到客户端。

  • 用户管理服务向数据存取服务查询个人动态订阅者,返回查询结果。

  • 用户管理服务个人动态订阅者消息处理。

  • 用户管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务通知订阅好友动态更新到订阅者客户端。


我的私密发布流程

我的私密发布流程:

  • 客户端如果私密内容非文本即上传文件服务器,返回上传路径。

  • 客户端处理上传路径。

  • 客户端向平台接入服务发起我的私密发布请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到用户管理服务。

  • 用户管理服务向数据存取服务更新个人动态信息,返回更新结果。

  • 用户管理服务个人动态处理。

  • 用户管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务响应我的私密发布请求到客户端。


我的相册查看流程

我的相册查看流程:

  • 客户端向平台接入服务发起查看我的相册请求。

  • 接入服务将请求报文发给解析服务。

  • 解析服务将协议解析成业务对象。

  • 解析服务转发业务对象到用户管理服务。

  • 用户管理服务向数据存取服务查询图片信息,返回查询结果。

  • 用户管理服务查询结果处理。

  • 用户管理服务发送数据到路由服务。

  • 路由服务处理消息路由,转发消息,到接入服务。

  • 接入服务响应查看我的相册请求到客户端。

  • 客户端如果查看非文本消息,请求到文件服务器下载文件。

  • 文件服务器读取下载内容。返回到客户端。



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,391评论 25 707
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,849评论 6 13
  • 过去的2016,这一年平淡无奇。 2月办了健身卡、6月和同事一起去日本、8月开始学车。 没有轰轰烈烈的大事,也没有...
    不羁岛主阅读 193评论 0 0
  • 《谁动了我的奶酪》整个故事已经阅读完,感想:故事讲述了四个主人公都有同一个目标奶酪,但在迷宫里寻找的过程缺是截然不...
    好心眼怪脾气阅读 102评论 0 0