写点什么

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

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

    阅读完需:约 10 分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(点击放大图像)

多业务垂直分层阶段

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

(点击放大图像)

多业务水平分层阶段

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

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

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

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

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

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

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

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

关注

评论

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

日常开发中,程序员如何提升技术?这13个点一定要做到!

程序员小毕

Java 程序员 程序人生 后端 架构师

阿里P8级架构师十年心血终成Java核心精讲与网络协议文档;

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

Java中的正则表达式详解

timerring

Java

PullTube for Mac使用技巧:快速导出铃声、缩略图和短片

Rose

Mac视频下载器 PullTube下载 PullTube使用教程

NineData:高效高质量的Redis可视化管理工具

NineData

数据库 redis 开发工具 Redis 可视化工具 NineData

B 站构建实时数据湖的探索和实践

Apache Flink

大数据 flink 实时计算

Git 代码分支管理 | 京东云技术团队

京东科技开发者

git 京东云 企业号 5 月 PK 榜

美团二面:聊聊ConcurrentHashMap的存储流程

做梦都在改BUG

Java hashmap ConcurrentHashMap

百度Q1财报发布:文心一言性能提升10倍,大语言模型带来革命性潜力

飞桨PaddlePaddle

飞桨

SecureCRT中文乱码怎么办?解决 SecureCRT中文乱码方法

Rose

SecureCRT下载 SecureCRT激活版 SecureCRT许可证 SecureCRT中文乱码

一个同事喜欢查别人的BUG,截图发工作大群,还喜欢甩锅怎么办?

Java你猿哥

Java 程序员 ssm 编码 java编程

揭秘RLHF;可商用开源LLM列表;领域编译器的前世今生

OneFlow

人工智能 深度学习 RLHF

吃透这份406页的Java修炼宝典,直接送你进入一线大厂

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

魔改xxl-job,彻底告别手动配置任务!

Java你猿哥

Java 分布式 定时任务 ssm Job

关于接口可维护性的一些建议 | 京东云技术团队

京东科技开发者

京东云 接口设计 企业号 5 月 PK 榜

阿里技术总监纯手打的内部手册《MySQL笔记》真是太硬核了

做梦都在改BUG

Java MySQL 数据库

楠姐技术漫话:图计算的那些事 | 京东云技术团队

京东科技开发者

京东云 图计算 企业号 5 月 PK 榜

SVN管理工具Cornerstone入门教程

Rose

cornerstone 4破解 SVN管理 Cornerstone教程 Mac版Cornerstone许可证

ZBrush 2023 v2023.1.1最新激活版下载 三维数字雕刻和绘画

Rose

ZBrush 2023安装教程 ZBrush 2023下载地址 ZBrush 2023破解版 角色建模 特效制作

基于云原生的物联大数据智能服务

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

CrossOver 让你在Mac上轻松运行 PC 游戏

Rose

虚拟机 CrossOver2023 Mac电脑运行win CrossOver Mac下载

IDP 与 DevOps平台:相似之处与关键差异

SEAL安全

IdP 平台工程 内部开发者平台

涨薪40K!来自阿里内部绝学的“微服务架构手册”

Java你猿哥

架构 微服务 微服务架构 ssm 架构师

大数据拥抱云原生 HashData助力资管数字化转型

酷克数据HashData

Python从0到1丨带你了解图像直方图理论知识和绘制实现

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 企业号 5 月 PK 榜

涅槃重生,BitKeep如何闯出千万用户新起点

鳄鱼视界

如果你项目使用了MyBatis-Plus你一定要用它

Java你猿哥

Java mybatis ssm Mybatis Plus

探究 JavaScript 前端热点面试题(三):让你在面试中游刃有余!

Immerse

清华大佬首推"中高级Java程序员进阶小册",程序员架构进阶必备

Java你猿哥

Java 算法 Spring Boot JVM java面试

记录内网Docker启动Stable-Diffusion遇到的几个坑

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

GitHub项目免费教你提示工程,全中文教学,小白也能懂

Openlab_cosmoplat

人工智能 GitHub 开源社区

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