跨境电商Crazysales的高稳定性架构实践
Crazysales是一家典型的跨境电商企业,以澳洲和英国作为主要目标市场,产品大多数由国内供应商提供。Crazysales不但是Amazon、eBay等大型电商平台上的大卖家,同时在澳洲、新西兰建设有自营电商网站,为广大用户提供完整的网购服务。
由于涉及跨国网络部署,不可避免地需要穿过“万里长城”,因此应用架构相对普通电商网站更加复杂,管理成本也自然提升,如何能够及时了解分布在中国、澳洲、英国等地不同业务系统的运行状态,是运维部门最关心的工作。
跨境电商的典型IT架构
Crazysales的核心业务系统及网店系统均搭建在Amazon的AWS平台之上,用Amazon CloudFront进行前端内容分发,而后端的数据维护平台因为供应商在国内,所以也在国内。
系统架构如下图:
目前,我们应用的技术都不是“高大上”的新技术,但稳定性得到很好的保证:
1.传统的PHP+LINUX+MYSQL,辅助数据的统计和分析应用mongoDB , 搜索引擎基于Solr。 系统架构做到前后低耦合,前端网站强依赖数据库转变成弱依赖。
2.MYSQL部署了两台slave 和定时静态备份数据,确保数据库的异地备份,和读写分离,为以后的无限扩展搭好基础。
3.通过每个应用层的监控,及时发现系统的瓶颈,针对性地优化。
整套系统都是我们团队经过多年合作开发逐步建立和维护的,所以很难保证统一的代码风格和代码水平,那是可遇不可求的。因此,必须建立合理的监控体系及时发现项目管理的漏洞、测试的漏洞、线上的性能瓶颈,这都让运维的工作在整个系统生命周期里更重要,这也是时下运维开发工程师的工作核心。
跨境电商的最佳监控解决方案
因为使用了Amazon的云服务,所以我们运维工程师不必花费大量时间维护基础硬件设施,而有更多的时间和精力来研究和优化我们的业务系统,其中监控体系是令我们为之骄傲的一部分。
各个层级设不同的监控点
红色部分使用监控宝的监控系统,绿色是监控宝和自建监控系统混合使用
这是我们目前实施的监控架构:
通过脚本/自建监控系统 / 外部监控点(模拟真实客户访问) 多种实时监控数据来监测业务系统的运作状态,根据不同系统的特性来调整数据采样的频率,多维度的监控和及时的告警信息让维护人员及时知道系统的运作情况,保障系统的正常运作和提高异常处理的及时性,最终实现故障出现前预防和故障出现后及时解决的效果。
例如,我们的内部监控系统发现数据库在凌晨4点会出现服务很忙,同时监控宝监控数据显示前台出现等待时间过长(>10s),通过和我们的后台任务调度系统的运行时间进行对比,发现一个JOB需要大量SQL查询,导致数据库CPU占用过多,因此及时调整SQL的查询指向其它Slave,同时优化该SQL。 如下图,马上就看到优化后的效果了:
监控宝遍布全球的分布式监测点能够模拟真实客户访问,及时了解客户遇到的问题,避免IT团队无法取到第一手材料导致丢失重现系统故障的机会,这是我们设置外部监控点的原因。如果自己购买服务器和节点进行部署的话,维护成本很高,也不专业。监控宝基于SaaS的服务和收费模式,很好的解决了成本和维护的问题,帮助我们掌握在澳洲,英国,中国大陆等地的访问速度,可用性等数据。
监控宝模拟客户端在各个监测点的数据采样频率最高可达到5分钟每次,不但能在第一时间发现故障并给予告警,而且能帮助我们掌握Web页面的性能表现,让开发人员可以针对性进行页面优化。而监控宝在全球范围内不断地增加的监测点数量,也和我们公司不断拓展英语国家业务的发展思路不谋而合。
最后说一下告警方式,众所周知,告警是监控的最后一步,大部分监控平台使用的是邮件和短信告警,但现在最流行的社交应用是微信,也是我们现在用得最多和最及时的平台。因此,我们将多种收集数据的介质通过监控宝转化到微信进行提示,基本上能做到故障发生半分钟内运维同事作出反应。