QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

云通讯业务如何做架构建设(以云之讯为例)

  • 2017-06-06
  • 本文字数:2993 字

    阅读完需:约 10 分钟

互联网的繁荣促进了云通讯的飞速发展,它的各种功能及应用已经遍布网络。但由于通讯领域的多样性和复杂性,行业从业者在进行云通讯业务的架构建设时也会遇到一些问题。

为解答大家的困惑,云之讯首席技术官贾俊杰分享了《云通讯业务的架构实践》,他以云之讯的架构实践为例,详细解析了云之讯的架构演进逻辑以及未来的架构建设重点,希望借此给大家一点启发。

云之讯架构演进的两个过程

云通讯最核心的价值就是将传统的通讯能力进行互联网化,通过标本的接口开方嵌入到各种移动应用中去,来解决移动开发者和中小企业在通讯能力中遇到的各种问题。云之讯从 2014 年开始做云通讯业务,并将自己定位为一个能力最丰富的云通讯的供应商。众所周知,通讯领域的内容非常多样,包括短信、语音以及实时的互联网音视频,还有移动互联网的流量业务等。基于这点考虑,云之讯支持全量式的通讯能力的开放,是一站式的融合通讯平台。同时,云之讯也是成长最快的云通讯 PaaS 平台,成立仅两年,注册企业就近 10 万,还有数千家付费客户。

那云之讯是如何做架构建设的呢?考虑到云通讯行业的背景和业务特点,以及公司的定位和快速发展的需求,云之讯的架构演进主要有两个过程:一是先异化再同化;二是先从集中化的服务再到分布式服务。

架构演进逻辑 1:先异化再同化

异化还是同化,关键在于从哪个角度看

异化,更多地是从业务需求上面看,它更适用于创业公司。对于云通讯这类企业来讲,他们通常都有多个业务,而异化的优势就是能够快速地构建业务,降低多种业务之间在开发过程中的一些耦合性,并且能够快速地响应产品需求的变化,同时在产品需求变化的过程中,不会造成太多耦合性或关键性的影响。当然,这种方式也存在一些劣势,主要表现在人力成本和运维成本比较高,但是具体高多少,还得根据业务的类型,以及各个业务之间的耦合性还有相似性来决定。

同化更多是从底层往上看,即怎么搭建一些公共的平台,通过公共的平台适应业务的发展,它更适用于有一定规模的公司,而且它的产品需求以及业务的需求相对稳定,这样在同化的过程中就不会有太多需求的变化而导致价格的变化。按同化的方式去走,架构会相对合理,它的部署和维护成本也相对比较低,但也会引起一些多业务之间耦合的问题。

不同的业务形态和公司定位会导致不同的选择

选择异化还是同化,主要在于是从业务需求上看还是从底层平台建设以及公司内部的组织上去看,不同的业务形态以及不同的公司定位,选择也会不一样。

** 技术架构决定公司的组织形式、**组织关系

技术架构非常重要,它决定了整个公司的组织架构,组织的形式,以及不同组织之间沟通的方式和组织之间的关系。在实际工作中,我们经常会遇到在通讯系统整合过程中会有一些变革,比如有一些部门的合并或产品的合并拆解问题,但我们如何判断整个团队能不能合并到一块去或怎么合并到一块去呢?

曾在华为工作的贾俊杰就遇到过这样的问题,当时,他们的出发点就是先由架构师去做两个产品之间的技术架构分析。这个架构分析决定了这两个产品的架构能不能融合,以及怎样去融合,然后再决定这两个组织能不能合并或怎么去合并,以及后续怎么来支撑新的产品形态。而这其实就是技术架构对组织形式的一些影响。

做够用的架构,而不是做完美的架构

平台是演进出来的,而不是构建出来的。因此,在架构考虑的时候,我们采取的是做够用的架构,而不是做完美的架构。但是我们经常会碰到这样的开发人员,他认为公司原来的架构不够好,然后自己想了一个很好的架构,去跟老板讲,结果老板不做,这让他觉得公司技术没有发展,自己的技术积累也没有发现。其实造成这种冲突的原因,是开发人员和公司的思考维度不同。从公司层面,或者说从老板层面,可能更多的关注是这个架构对于业务的影响,它对业务到底有没有用,另外做这个架构,需要投入多大的人力和周期。成本的因素决定了公司到底要不要做,能不能做。而开发人员更多的是想,这个技术的架构是有多么完善,多么好。

云之讯业务架构从垂直分层到水平分层

在实践中,云之讯的架构建设也不是一蹴而就的,也经历了从多业务垂直分层到多业务水平分层的过渡演变。

(点击放大图像)

多业务垂直分层阶段

起初,云之讯以音视频通话业务为主,所以一开始做的是音视频通话产品体系,后面的短信流量也是采取垂直分层的形式去开发的。相当于每个不同的业务,都是有单独自己的一些服务的体系。独立的服务体系让每个业务都能很快地开发出来,推向市场,而且不会对原有的业务造成太多的耦合和影响。一个新产品在开发阶段,在推出市场阶段,和已经稳定的产品不一样,新产品会有更多需求的变化和不确定性,产品迭代的周期也会不一样。业务的独立可以保证我们每个业务都能快速上线,但它也造成了一些问题。因为云之讯的很多业务具有很大的相似性,如点对点的音视频业务和会议业务,短信业务和实时语音视频业务,而服务的体系、计费的逻辑、运营的平台,都是单独的,所以,我们在实际的部署和运维过程中遇到了很多问题,浪费了很多人力以及硬件成本。

(点击放大图像)

多业务水平分层阶段

随着公司业务地发展,云之讯逐渐走向了一个同化的过程,公司通过水平分层的考虑把公共化的一些组建抽取出来,做成集群。比如,我们把调度层的一些能力抽出来做一些集群,接入集群就可以接入各种协议;对于音视频介入也是一样的,我们做成路由的集群,这个集群能满足各种音视频的需要。在一些公共的内容上我们也会抽出一些公共的组建,比如我们把所有涉及到一些业务的健全,像用户管理、计费、录音、语音识别这些能力,做成一种中间件,通过这种方式把不同形态的业务和公共平台分离开。另外还有运营、日志分析、安全运营等,我们也会做成公共的统一的运营平台,以支撑所有不同类型的业务去发展。

架构演进逻辑 2:先集中化服务再分布式服务

先集中化服务再分布式服务,云之讯为什么会有这样的考虑呢?主要是因为云通讯业务有几个特点:1、实时性要求高,如音视频业务的实时性要求一般都是在十毫秒级的,丢包率也在 5% 以内,可靠性要求高;2、通讯能力差异化,国内有很多不同的运营商,它们的能力以及接口形式是有差异的,这就导致我们在开展云通讯业务过程中会存在一个全国性调度的问题,需要具备全国性调度能力。云之讯这样做,主要是为了保证通讯的高质量以及高稳定性。

未来架构建设重点:智能化架构建设

云之讯后续的构建重点,是进行智能化的架构建设。不同的业务对于智能化的处理要求都比较高,比如说短信、语音都存在非常复杂的调度机制,这种调度的机制依赖于很多历史的数据,如历史的成功率,历史的通话记录等,我们需要根据这些数据去做详细的分析。后面,我们将会把所有的数据抽取出来,包括历史的通话记录、实时文本的内容、号码标记信息等,然后去做实时地数据分析,通过一些语音识别和语音理解技术,并结合实施分析系统、离线分析系统,去进行综合性的分析。同时,云之讯也会做更多智能化的通讯业务,比如现在正在做的安全管控业务,我们会根据用户的一些历史呼叫记录以及成功率的情况去分析是不是存在骚扰的问题,做一些防骚扰的标记。另外,在资源匹配上面,我们也会根据智能分析,去了解客户需要哪种类型的资源,考虑成本和短信到达率因素,综合分析和匹配,然后找到与用户最匹配的需求。

以上就是云之讯在架构建设方面的一些考虑,希望能对各位有所帮助。但大家不一定要按照云之讯的步骤来进行,而是应该选择最适合公司定位及业务发展的架构进行建设。

2017-06-06 17:571224
用户头像

发布了 1459 篇内容, 共 694.3 次阅读, 收获喜欢 2484 次。

关注

评论

发布
暂无评论
发现更多内容

技术干货 | 中间件技术在百度云原生测试中的应用实践

百度开发者中心

底层技术 #技术干货#

日记 2021年2月25日(周四)

Changing Lin

2月春节不断更

安卓软件开发教程!全世界都在问Android开发凉了吗?offer拿到手软

欢喜学安卓

android 程序员 面试 移动开发

安卓天气app开发!2021年Android开发者跳槽指南,社招面试心得

欢喜学安卓

android 程序员 面试 移动开发

简述:一款优秀的缺陷管理系统有哪些功能特点!

优秀

缺陷管理系统

研发效能的历史和未来

李小腾

研发效能 数据驱动

技术干货 | 趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突

百度开发者中心

算法 数据结构和算法

话题讨论 | 在中国程序员工作是青春饭吗?

happlyfox

话题讨论 2月春节不断更 话题王者

2021金三银四涨薪季,这些面试题都掌握了嘛?

ios 面试

诊所数字化:连锁型诊所应用远程会诊做分级诊疗

boshi

数字化医疗 七日更 28天写作

华为云“网红”语言Python课程来啦!

华为云开发者联盟

Python

开工来面试了几十个人,一言难尽

yes

面试

国产芯片WiFi物联网智能插座—电源功能设计

不脱发的程序猿

28天写作 二月春节不断更 智能插座 WiFi物联网智能插座 电源设计

话题讨论 | 英语对IT从业人员重要吗?

happlyfox

IT 话题讨论 28天写作 2月春节不断更 话题王者

教你如何在Python中读,写和解析CSV文

华为云开发者联盟

Python csv

使用Kong作为微服务网关

行者AI

kong

第一篇文章

棉花糖

到底什么是敏捷

Teobler

敏捷 敏捷开发 敏捷精髓 敏捷书籍

可能是Java Stream的最佳实践(二)

ES_her0

28天写作

DCache 分布式存储系统|K-K-Row 缓存模块的创建与使用

TARS基金会

MySQL 数据库 nosql 分布式存储 TARS

添加小助理vx:mxzFAFAFA即可!!

比伯

Java 编程 架构 面试 计算机

2021版面试必问178条性能优化建议!(Java+JVM+Redis+MySQL等)

Java架构追梦

Java 架构 面试 性能优化 金三银四跳槽

Oracle sqlldr快速导入和sqluldr2快速导出

阳光下、慵懒的熊

数据库

【文末彩蛋】数据仓库服务 GaussDB(DWS)单点性能案例集锦

华为云开发者联盟

sql 数据仓库 数据

3分钟学会如何上手supervisor看门狗

happlyfox

Linux centos7 28天写作 2月春节不断更

LeetCode题解:718. 最长重复子数组,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

魔改出一个 Encoder | Rust 学习笔记(一)

李大狗

区块链 rust 入门

常见的初级排序算法,这次全搞懂

Silently9527

Java 排序算法

Centos7配置librdkafka运行时

happlyfox

Centos 7 28天写作 2月春节不断更

国产芯片WiFi物联网智能插座—项目简介

不脱发的程序猿

物联网 28天写作 二月春节不断更 WiFi物联网插座 智能插座

Git教程--git merge命令

生之欢愉,时间同行

git 程序员 git merge

云通讯业务如何做架构建设(以云之讯为例)_架构_InfoQ 中文站_InfoQ精选文章