V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yunpian2017
V2EX  ›  推广

云片高可用高并发系统稳定性实践与探索之路

  •  
  •   yunpian2017 · 2017-09-07 10:12:58 +08:00 · 2187 次点击
    这是一个创建于 2664 天前的主题,其中的信息可能已经有所发展或是发生改变。

    9 月 4 日,云片 CTO 林佳齐在高端技术人员学习型社交网络 EGO 进行了线上分享,与杰出技术领导者探讨云通讯稳定性实践与探索之路。

    从满足自有业务需求到开放服务

    云片并非一开始就做云通讯,而是先做了一款叫维客 CRM 的软件。这个软件面向淘宝商家提供会员营销服务,有大量短信需求。当时林佳齐负责短信平台的开发,对接行业服务商,发现这个行业虽然存在比较长时间,却没有一家能满足需求。为了提高短信服务稳定性,云片踩过无数坑,经过 1 年多的产品迭代,发现自己平台功能已经比服务商的更强大,所以就想把服务开放出来,让其他公司使用短信时能少踩坑少走弯路,这是云片的由来之一。

    avatar

    △短信发送流程

    avatar

    短信通过三大基础运营商的通道发出去,一般情况下单个通道的发送速度为几到几十不等;通道在运营商体系可分移动、联通、电信三类;大家通常听到的系统通道、营销通道、共享通道和专用通道的分类,是取决于短信服务商对通道的运营策略。

    打造高可用高并发系统踩过的坑

    avatar

    1、发送速度

    发送速度在工程师眼里即并发数,现在依然有很多公司,并没有这样的技术概念,而且服务也无法支持做性能压测,这意味着服务的性能是个黑盒子,你不知道具体的性能指标是多少,什么时候会出现瓶颈,这是一个技术风险。

    2、系统处理速度和短信实际发送速度

    解决并发问题后,开始筛选⼀些至少能把并发参数讲清楚的公司。但他告诉你的速度,可能并不是实际的短信(或者叫通道)发送速度,只是系统处理速度。造成的结果是,很可能短信需求提交出去了,但只是提交到服务商的缓冲队列中,并没有及时的发给客户。这是一个业务延迟风险。

    3、专用通道

    被坑多了我们开始关注通道速度。但是一个服务商要服务多个客户,不可能为每一个客户分配专属通道。这意味着大部分客户是以共享的方式来使用通道的,所以给你分配的通道速度,并不是实际可以获得的发送速度。这是一个至今还隐藏的坑。林佳齐建议解决的方案是找一家足够透明的公司,坦诚沟通。因为通道资源是有限的,有一些公司即使提供共享通道,也能通过技术手段保证发送速度不受影响。

    前三个坑,如果服务商不能很好的解决,每个公司在接入的时候就要投入很多研发的资源,包括接口稳定性监控、短信延迟监控、多服务商接入和互备切换等,会增加研发成本。

    4、短信效果

    广告业有一句名言:我知道在广告上的投入有一半是无用的,但我不知道是哪一半。短信营销也一样,短信的效果没办法直观看到。对此,云片针对短信营销场景,做了精准营销服务。

    精准营销的基本流程是筛选目标人群发送,根据数据报表分析营销效果并做调整优化,它解决的问题是:

    • 精准筛选目标受众,节省短信营销成本;

    • 支持在短信内容里插入短链接,精确统计每个正常手机号码的点击情况;

    • 提供详细的发送效果数据报表:包括短信到达率、未送达原因分布、短链接点击率、点击省份分布等,短信发送效果清晰明了;

    • 可以按点击情况导出数据后,对产生点击行为的用户进行二次营销。

    云片云通讯系统演变过程

    1、为了长远发展,给飞行中的飞机换引擎

    云片早期平台部署在阿里云的早期版本上,随着业务量的增长,底层平台的问题逐渐暴露出来,包括物理机资源隔离不彻底等原因带来的 CPU、IO 及网络抖动。尽管我们对服务做了很多技术优化,但 IaaS 层的不稳定因素依然是个非常头痛的问题。

    随着云片对服务的要求越来越高,我们开始考虑平台的迁移问题,做长期的规划。当时业务量刚好迎来增长高峰,而迁移涉及面非常广,从后端的 DB、中间件服务到前端的应用、域名解析,以及数据、配置和通道等资源迁移,是一个巨大工程。在保证线上业务不受影响,并且业务开发能正常进行的前提下,做平台的迁移是个很有挑战的事情。

    确定迁移之后,云片开始对系统进行全面的、系统化的梳理,原先很多设计不合理的地方、历史遗留缺陷、环境依赖硬编码等问题,被重新审视。整个迁移的过程就是一个偿还技术债务的过程。经历这样一次飞机换引擎的挑战,云片系统架构、稳定性和可运维性都有极大提升,团队能力也得到历练而变得更加自信。

    2、把监控工具做成分布式系统,提高稳定性

    为了对所有通道进行自动化监控,云片开发了 Android 程序,安装在手机上做成监控机。由监控中心自动触发监控短信,监控手机负责上报采集到的信息,比如短信接收时间、短信内容等信息,监控中心再按规则策略判断是否存在异常,并通知路由中心做自动切换,达到及时屏蔽问题通道的目的。

    avatar

    以下是云片为了提高监控系统稳定性,对监控服务做的几个版本迭代:

    avatar

    avatar

    各版本相应解决的问题是:

    • 单机版:解决监控自动化问题,实现 7*24 小时自动监控和切换。

    • 多机版:解决单机性能问题。随着需要监控的通道增加,单个监控机已经有性能瓶颈,需要更多的监控机来分摊压力。

    • 心跳版:减少误报。随着监控手机越来越多,小概率的网络抖动、假死等问题更多的暴露出来,心跳版实现对问题手机做自动剔除的操作,减少监控的误报。

    • 异地分布式版:解决地区性网络故障对监控的影响。包含两方面,一是办公网络不稳定问题,监控机用的是办公网络,网络抖动或断网时有出现,如果监控机都放在一个办公区网络,一旦网络出现问题,会出现监控空白时段;二是解决运营商的地区性网关故障问题,如果监控机都放在一个地区,如果该地区网关故障,就会导致监控误判。

    经过以上版本的迭代,监控的稳定性已经非常高。云片的经验是整体服务的稳定性,是由一个个基础服务共同决定的,当我们对稳定性的要求越来越高时,每一个看似简单的服务都有很多细节需要考虑。

    Q & A

    1、短信供应商做了多久?

    云片短信平台是 2012年开始做的,2013 年开始对外提供服务。如果算短信供应商的话,是做了 4 年多。

    2、产品有哪些行业领先的特性?

    • 实时数据分析

    avatar

    比如实时到达率统计、耗时分布、错误码分布等,方便第一时间查看短信质量。

    • 注册验证码的场景深化

    一方面云片提供短信接收失败自动转语音验证码的功能,比如手机号在黑名单里,会收不到短信,但语音验证码可以送达,能够提高短信注册成功率。这个功能只要在后台开启就可以实现,不需要开发。

    另一方面,如果客户在注册成功后,回调云片的统计接口,我们可以帮客户做成功率的统计和监控,如果注册成功率低于设置的值,你会收到短信提醒。

    • 营销场景的深化

    这个在前面精准营销里已介绍过。总的来说可以帮助运营同学更高效的做短信营销,并一目了然的查看营销效果。

    • 防轰炸或者短信防刷功能

    短信验证码被恶意调用的情况,云片叫短信轰炸。我们实现了实时自动识别和防范机制,自动屏蔽恶意的短信,并通知给客户,最大程度帮助客户减少短信费用损失。

    3、短信接口防刷、到达率优化、转换率优化能分享一些案例么?

    接口防刷是云片客户经常碰到的问题,大部分情况是加图片验证码或者其他类似的手段可以解决。同时还需要网站做好自己的安全保护,比如对访问 IP 的限制等。

    到达率有两个影响因素:一是手机号质量,手机号正常的情况下到达率接近 100%,云片提供失败原因分布统计,可以直观看到手机号的质量。二是黑名单,包括自己的账户黑名单和供应商黑名单。一般来说,供应商的系统类的短信黑名单库小一点,到达率高;营销短信命中黑名单的概率大一些,到达率会略低。

    转化率方面,前面在讲云片产品特点的时候有提到,我们在提升注册验证码方面提供转语音验证码功能,能帮助提升验证码短信的成功率;营销转化率方面主要是通过精确营销,提供更多数据参考,理论上做精准的筛选有利于转化率的提升。另外,转换率也跟到达率有关系,必须得保证到达率在一定比例之上。

    4 条回复    2017-09-07 11:33:11 +08:00
    ITOutsider
        1
    ITOutsider  
       2017-09-07 11:11:31 +08:00
    呵呵,贵司给你发加班费了吗?随便开除员工了吗?
    毕竟云骗,还敢在 v2 发帖
    xenme
        2
    xenme  
       2017-09-07 11:13:37 +08:00
    一进来就在想是否有人翻旧账,果然,哈哈。
    loveCoding
        3
    loveCoding  
       2017-09-07 11:17:23 +08:00
    就知道有人翻旧账 233
    bellchu
        4
    bellchu  
       2017-09-07 11:33:11 +08:00
    晕骗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3297 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:43 · PVG 08:43 · LAX 16:43 · JFK 19:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.