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

2017-09-07 10:12:58 +08:00
 yunpian2017

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

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

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

△短信发送流程

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

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

1、发送速度

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

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

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

3、专用通道

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

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

4、短信效果

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

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

云片云通讯系统演变过程

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

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

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

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

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

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

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

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

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

Q & A

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

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

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

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

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

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

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

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

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

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

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

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

2192 次点击
所在节点    推广
4 条回复
ITOutsider
2017-09-07 11:11:31 +08:00
呵呵,贵司给你发加班费了吗?随便开除员工了吗?
毕竟云骗,还敢在 v2 发帖
xenme
2017-09-07 11:13:37 +08:00
一进来就在想是否有人翻旧账,果然,哈哈。
loveCoding
2017-09-07 11:17:23 +08:00
就知道有人翻旧账 233
bellchu
2017-09-07 11:33:11 +08:00
晕骗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/388830

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX