`
古青moon
  • 浏览: 357 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

云通讯行业背景下云片高可用架构演进之道

阅读更多

一、云通讯部署架构面临的挑战:宕机、黑天鹅事件

数据统计显示:2016年Google Cloud的宕机时间总计为47分钟,微软Azure服务宕机时间为270分钟,亚马逊AWS宕机时间为108分钟。

 

作为构建在IaaS之上的PaaS服务,云片为了防止云服务厂商的故障造成影响,设计了多可用区的同城双活架构,最大限度保证部署架构层面的高可用。



 
二、云通讯系统架构面临三大挑战

在系统架构上,云通讯系统主要面临三大挑战:

1、不同类型短信间的相互影响 不同类型的短信特点不一样,比如验证码短信实时性要求非常高,能多快就多快、营销短信虽然实时性要求没那么高,但数量巨大,峰值QPS可能会过万。

2、运营商情况复杂,稳定性问题突出



 △运营商情况复杂,带来诸多问题

 

运营商的情况比较复杂,这其中会遇到各种各样的问题。首先是突发事件,比如在杭州G20期间有些通道就无法正常运转。其次有些代理商服务稳定性不高,RT会需要2-3s。另外也有些代理商会限制短信类型,比如只能发带验证码的短信。最后还有速率限制,有些通道最高2000/s,有些200/s通道间容量不一致。

3、产品频繁迭代的过程中如何保障系统稳定性



 △产品快速迭代功能不一

 

云片的产品一直在进行快速迭代,像报表、统计等功能,基本每周要发两个版本,在快速迭代过程中如何保证产品核心流程的稳定也是系统架构设计中的挑战。

基于以上挑战,云片设计了“异步解耦”的分布式系统架构。



 △云片系统架构

 

上图是演化后的云片系统架构,异步解耦是核心,异步带来的好处是每个模块可以独立演进。首先,写记录的模块,因为它不是影响短信能否到用户手机上的核心流程,所以云片把它异步化了。另外是产品相关的模块,也通过异步日志的形式,尽量保证主流程比较稳定,并且是尽量少依赖的状态。



 △云片系统管理模块

 

上图是云片系统管控模块,它很好的解决了前面所提到的问题。比如有些通道只能发包含某个关键字的短信,云片系统加了一个模块以后,通过不同的队列,不同的通道,对不同的地域发送不同的短信。另外有些通道可能卡住了,可通过监控模块监测到然后进行实时的切换。还有资源的隔离,前面提到有些通道的数据容量不一样,不同的速率对不同的资源,通过这种模式也达到了一个隔离。包括不同的业务类型进来以后,也会进入不同的通道。



 

△云片系统架构

 

云片系统架构消息中间件采用的是RocketMQ,它的所有角色节点都是无状态的,可以非常方便地实现横向扩容,另外也能够与云片系统多可用区部署的方案结合。

 

4、高可用系统架构设计经验分享

 

云片系统架构演进中有几点经验可以分享给大家。

 

首先关于消息队列的使用,需要有堆积的监控告警,比如出现问题时消息很容易堆积,监控报警就要做好。

 

其次Procedure预路由,在Procedure端,不知道发的是哪个topic,比如云片启动时,突然进来了比较高的请求,会在获取topic路由这里有个锁,整个过程就很慢,于是云片就做了预路由,实现提前去获取topic的路由。

 

最后云片也做了topic均衡,因为默认自动创建的topic只会在一台broker,不然在broker重启的时候就会变得不可用。

 

三、智能监控:保障系统稳定性的关键因素



 △云片智能监控系统

 

上图是云片智能监控系统架构。完善的监控系统是稳定性的关键,云片有一个监控中心,它跟普通的用户请求是一样的,这些短信会到云片的监控机上面,然后云片开发了一个Android的App,在上面获取到短信,把这个信息汇报给监控对象。如果一段时间没收到汇报,基本可以判断某条短信的通道存在问题。此外,管控模块提供通道切换的功能,发现某个通道有问题就可以切掉,通过这种方式云片实现了智能化的通道监管和切换。

 

由于Android系统不够稳定,如果短信只发到一台机器上出现问题,就觉得它有bug,并且切掉的话,很可能这是一个误报。此外云片还考虑到,假如整个杭州地区出现问题,而且监控机器也全部在杭州,是否也会出现问题,如果出现问题是否都要切掉,这样会导致整个服务都不可用。基于这两方面的因素,云片监控机器是多区域分布的,通过这种方式一方面可以达到系统的智能性,另一方面可以尽可能地保障高可用性。

 

总的来说,云片系统架构的演进:基于系统面临的诸多挑战进行系统架构的部署,并有智能监控系统确保流程的稳定性。在系统架构设计过程中,云片网资深架构师陈涛分享了一条重要的经验,把“简单的事情”做到极致,不断进行产品迭代。

 

以上内容来自2017年4月16日,云片网资深架构师陈涛在QCon的主题分享:《云通讯行业背景下的稳定性架构演进》。

 

演讲者|陈涛Qcon2017技术专场分享

 

  • 大小: 518.5 KB
  • 大小: 598.2 KB
  • 大小: 630.2 KB
  • 大小: 212.3 KB
  • 大小: 358 KB
  • 大小: 531.2 KB
  • 大小: 518.5 KB
  • 大小: 475.2 KB
分享到:
评论

相关推荐

    云片刘斌-serverless-openfaas25页.pdf

    在当前的IT行业发展中,微服务架构和服务无服务器计算(Serverless)已经成为构建可扩展、高弹性的云原生应用的关键技术。从提供的文件内容中,我们可以提取到一系列关于微服务、Serverless、OpenFaaS以及云片公司的...

    云片发短信+工具包

    其短信服务以其高并发、高可用性和稳定的送达率受到广大用户的青睐。云片提供的SDK(Software Development Kit)使得开发者可以方便地调用其API,实现与云片服务器的交互。 在这个工具包中,包含的"json所需的jar...

    云片API短信验证码

    在IT行业中,云片API是一种常见的服务,它为企业和开发者提供了便捷的短信发送功能,尤其适用于验证用户身份、实现安全登录等场景。本篇将详细讲解如何使用Java通过云片API来实现短信验证码的发送。 首先,理解...

    Java - 代码 - 云片短信

    云片短信发送,直接调用对应方法即可

    php调用云片网接口发送短信

    thinkphp随机生成短信验证码 ,手机号,及key发送请求给云片。云片发送短信验证码到指定手机号。用户输入短信验证码。在由thinkphp判断验证码是否正确、验证码是否过期来验证验证码通过。 接口地址:...

    Java语言实现短信验证 详细注释 云片 最新 最全

    在IT行业中,尤其是在Web开发领域,用户账户的安全性至关重要,其中短信验证是一种常见的增强安全性的方法。本教程将深入探讨如何使用Java语言实现短信验证功能,结合云片服务,为你的应用程序提供最新的、最全面的...

    云片短信验证所需用到的jar包

    这里包含了云片短信验证所需的httpcore-4.3.2.jar,httpclient-4.3.5.jar,commons-logging-1.1.3.jar,commons-codec-1.6.jar 这几个jar包

    云片短信使用到的jar包

    云片短信使用到的jar包。内面有4个jar包,分别是httpcore-4.3.2.jar,httpclient-4.3.5.jar,commons-logging-1.1.3.jar,commons-codec-1.6.jar

    云片API短信验证码1

    云片是一家提供云通讯服务的公司,其中包括短信API服务,允许开发者轻松集成短信验证码功能到他们的应用程序中。在本案例中,我们将探讨如何使用Java语言和云片API实现短信验证码的功能。 首先,我们需要了解云片...

    短息发送接口

    在IT行业中,短息发送接口是一种常见的服务,用于企业或应用程序与用户之间的通信,特别是用于发送验证码、通知或营销信息。以下是对这个主题的详细解释: 短信发送接口是通过API(应用程序编程接口)来实现的,它...

    Java使用云片API发送短信验证码

    Java使用云片API发送短信验证码是一项常见的移动应用或网站安全功能,用于验证用户身份。本文将详细介绍如何在Java环境中利用云片提供的API实现这一功能。 首先,你需要在云片官网上注册并获取APIKEY,这是一个唯一...

    Ruby-云片短息ruby服务器端api

    云片(YunPian)是一家提供短信服务的公司,它们提供了各种API,让开发者能够方便地在自己的应用中集成短信发送功能。"云片短息Ruby服务器端API"就是针对Ruby开发者的SDK,允许他们在服务器端通过编程方式发送短信...

    易语言-云片点字点击验证码易语言

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语句,使得非计算机专业背景的用户也能较为容易地学习编程。云片点字点击验证码是易语言的一个应用实例,主要用于解决网络上常见的验证码识别问题。...

    dotnet-基于云片网短信服务SDK的NetCore版本实现

    在.NET开发领域,集成第三方API服务是常见的任务之一,尤其是涉及到与用户交互的服务,如短信验证码、通知等。本篇文章将深入探讨如何在.NET Core项目中利用云片网的短信服务SDK来实现这类功能。 云片网是一家提供...

    yunpian:云片网 GO SDK

    云片网 GO SDK ##基本概念 创建一个api对象 然后对应的方式调用函数 api.{resource}{function} 传入参数的结构体为函数名+Info 例:SmsSend(info SMSSendInfo) 返回值error为nil则是执行成功,附带的返回信息在第一...

    专注批量推送的小而美的工具,目前支持:模板消息——公众号,模板消息——小程序,微信客服消息,微信企业号/企业微信消息,阿里云短信,阿里大于模板短信,腾讯云短信,云片网短信,电子邮件,HTTP请求,钉钉,华为云短信,百度云短信,又拍云短信,七牛云短信- rememberber / WePush

    云片网短信 E-Mail HTTP请求(单次、批量、压测) 计划中支持的消息类型 网易云信短信 榛子云短信 Luosimao短信 极光短信 极光推送 功能&亮点 支持自定义消息内容并批量推送 支持变量消息(可实现根据发送目标用户...

    yunpian:云片短信API

    云片短信平台API。 功能列表 查账户信息 修改账户信息 取默认模板 添加模板 取模板 修改模板 删除模板 智能匹配模版发送 获取状态报告 获取回复短信 查回复的短信 查屏蔽词 指定模版发送(不推荐使用,新用户请用...

Global site tag (gtag.js) - Google Analytics