9 月 4 日,云片 CTO 林佳齐在高端技术人员学习型社交网络 EGO 进行了线上分享,与杰出技术领导者探讨云通讯稳定性实践与探索之路。
云片并非一开始就做云通讯,而是先做了一款叫维客 CRM 的软件。这个软件面向淘宝商家提供会员营销服务,有大量短信需求。当时林佳齐负责短信平台的开发,对接行业服务商,发现这个行业虽然存在比较长时间,却没有一家能满足需求。为了提高短信服务稳定性,云片踩过无数坑,经过 1 年多的产品迭代,发现自己平台功能已经比服务商的更强大,所以就想把服务开放出来,让其他公司使用短信时能少踩坑少走弯路,这是云片的由来之一。
△短信发送流程
短信通过三大基础运营商的通道发出去,一般情况下单个通道的发送速度为几到几十不等;通道在运营商体系可分移动、联通、电信三类;大家通常听到的系统通道、营销通道、共享通道和专用通道的分类,是取决于短信服务商对通道的运营策略。
发送速度在工程师眼里即并发数,现在依然有很多公司,并没有这样的技术概念,而且服务也无法支持做性能压测,这意味着服务的性能是个黑盒子,你不知道具体的性能指标是多少,什么时候会出现瓶颈,这是一个技术风险。
解决并发问题后,开始筛选⼀些至少能把并发参数讲清楚的公司。但他告诉你的速度,可能并不是实际的短信(或者叫通道)发送速度,只是系统处理速度。造成的结果是,很可能短信需求提交出去了,但只是提交到服务商的缓冲队列中,并没有及时的发给客户。这是一个业务延迟风险。
被坑多了我们开始关注通道速度。但是一个服务商要服务多个客户,不可能为每一个客户分配专属通道。这意味着大部分客户是以共享的方式来使用通道的,所以给你分配的通道速度,并不是实际可以获得的发送速度。这是一个至今还隐藏的坑。林佳齐建议解决的方案是找一家足够透明的公司,坦诚沟通。因为通道资源是有限的,有一些公司即使提供共享通道,也能通过技术手段保证发送速度不受影响。
前三个坑,如果服务商不能很好的解决,每个公司在接入的时候就要投入很多研发的资源,包括接口稳定性监控、短信延迟监控、多服务商接入和互备切换等,会增加研发成本。
广告业有一句名言:我知道在广告上的投入有一半是无用的,但我不知道是哪一半。短信营销也一样,短信的效果没办法直观看到。对此,云片针对短信营销场景,做了精准营销服务。
精准营销的基本流程是筛选目标人群发送,根据数据报表分析营销效果并做调整优化,它解决的问题是:
精准筛选目标受众,节省短信营销成本;
支持在短信内容里插入短链接,精确统计每个正常手机号码的点击情况;
提供详细的发送效果数据报表:包括短信到达率、未送达原因分布、短链接点击率、点击省份分布等,短信发送效果清晰明了;
可以按点击情况导出数据后,对产生点击行为的用户进行二次营销。
云片早期平台部署在阿里云的早期版本上,随着业务量的增长,底层平台的问题逐渐暴露出来,包括物理机资源隔离不彻底等原因带来的 CPU、IO 及网络抖动。尽管我们对服务做了很多技术优化,但 IaaS 层的不稳定因素依然是个非常头痛的问题。
随着云片对服务的要求越来越高,我们开始考虑平台的迁移问题,做长期的规划。当时业务量刚好迎来增长高峰,而迁移涉及面非常广,从后端的 DB、中间件服务到前端的应用、域名解析,以及数据、配置和通道等资源迁移,是一个巨大工程。在保证线上业务不受影响,并且业务开发能正常进行的前提下,做平台的迁移是个很有挑战的事情。
确定迁移之后,云片开始对系统进行全面的、系统化的梳理,原先很多设计不合理的地方、历史遗留缺陷、环境依赖硬编码等问题,被重新审视。整个迁移的过程就是一个偿还技术债务的过程。经历这样一次飞机换引擎的挑战,云片系统架构、稳定性和可运维性都有极大提升,团队能力也得到历练而变得更加自信。
为了对所有通道进行自动化监控,云片开发了 Android 程序,安装在手机上做成监控机。由监控中心自动触发监控短信,监控手机负责上报采集到的信息,比如短信接收时间、短信内容等信息,监控中心再按规则策略判断是否存在异常,并通知路由中心做自动切换,达到及时屏蔽问题通道的目的。
以下是云片为了提高监控系统稳定性,对监控服务做的几个版本迭代:
各版本相应解决的问题是:
单机版:解决监控自动化问题,实现 7*24 小时自动监控和切换。
多机版:解决单机性能问题。随着需要监控的通道增加,单个监控机已经有性能瓶颈,需要更多的监控机来分摊压力。
心跳版:减少误报。随着监控手机越来越多,小概率的网络抖动、假死等问题更多的暴露出来,心跳版实现对问题手机做自动剔除的操作,减少监控的误报。
异地分布式版:解决地区性网络故障对监控的影响。包含两方面,一是办公网络不稳定问题,监控机用的是办公网络,网络抖动或断网时有出现,如果监控机都放在一个办公区网络,一旦网络出现问题,会出现监控空白时段;二是解决运营商的地区性网关故障问题,如果监控机都放在一个地区,如果该地区网关故障,就会导致监控误判。
经过以上版本的迭代,监控的稳定性已经非常高。云片的经验是整体服务的稳定性,是由一个个基础服务共同决定的,当我们对稳定性的要求越来越高时,每一个看似简单的服务都有很多细节需要考虑。
云片短信平台是 2012年开始做的,2013 年开始对外提供服务。如果算短信供应商的话,是做了 4 年多。
比如实时到达率统计、耗时分布、错误码分布等,方便第一时间查看短信质量。
一方面云片提供短信接收失败自动转语音验证码的功能,比如手机号在黑名单里,会收不到短信,但语音验证码可以送达,能够提高短信注册成功率。这个功能只要在后台开启就可以实现,不需要开发。
另一方面,如果客户在注册成功后,回调云片的统计接口,我们可以帮客户做成功率的统计和监控,如果注册成功率低于设置的值,你会收到短信提醒。
这个在前面精准营销里已介绍过。总的来说可以帮助运营同学更高效的做短信营销,并一目了然的查看营销效果。
短信验证码被恶意调用的情况,云片叫短信轰炸。我们实现了实时自动识别和防范机制,自动屏蔽恶意的短信,并通知给客户,最大程度帮助客户减少短信费用损失。
接口防刷是云片客户经常碰到的问题,大部分情况是加图片验证码或者其他类似的手段可以解决。同时还需要网站做好自己的安全保护,比如对访问 IP 的限制等。
到达率有两个影响因素:一是手机号质量,手机号正常的情况下到达率接近 100%,云片提供失败原因分布统计,可以直观看到手机号的质量。二是黑名单,包括自己的账户黑名单和供应商黑名单。一般来说,供应商的系统类的短信黑名单库小一点,到达率高;营销短信命中黑名单的概率大一些,到达率会略低。
转化率方面,前面在讲云片产品特点的时候有提到,我们在提升注册验证码方面提供转语音验证码功能,能帮助提升验证码短信的成功率;营销转化率方面主要是通过精确营销,提供更多数据参考,理论上做精准的筛选有利于转化率的提升。另外,转换率也跟到达率有关系,必须得保证到达率在一定比例之上。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.