春节期间,电商网站争相推出大波促销,各大企业纷纷上线迎新活动。对于网站运维人员来说,随之而来的春节流量峰值也会对系统造成致命攻击,同时针对数据的攻击层出不穷,有些难以察觉。对此,腾讯云在国内率先提出,节前“黄金14天”这一概念,技术人员需要把握这14天,解决业务关键瓶颈。腾讯云究竟有何妙招帮助客户度过这一关键时期?下面,就由腾讯云存储和数据产品专家工程师胥彪、腾讯云专家业务架构师祝海强为你一一解答:
腾讯云数据库主要服务于哪些行业客户?春节期间,如果数据库发生故障,对企业的影响有多大?数据库扮演着怎样的角色?
胥彪:腾讯云数据库服务了包括微众银行、安心保险、三一重工、中广核、哔哩哔哩、猎豹、畅游等众多客户。无论是金融、制造业、或是互联网服务提供商,都可能考虑在春节期间做一些线上运营活动,一来可以推广企业品牌,二来提高产品、服务的售卖,三来可以维护与用户(客户)关系;如果此时业务出现故障,不仅无法达到预期目的,还会给企业带来负面印象甚至经济损失。数据库则是整个业务中关键一环之一,数据库故障就意味着整个服务故障。
腾讯云数据库产品矩阵
什么是节前黄金14天?这段时间,企业客户的运营团队需要做哪些准备?对此,腾讯云有哪些建议?
胥彪:大多数团队会提前2个月开始准备一次大型活动。但根据我们经验,节前14天是团队做最后梳理的关键时间。在最后14天,公司的活动内容基本定型,同时,竞品情况、渠道、供应商情况、内部准备、以及预热效果都已经清晰。此时的效果预估基本准确,活动开发和IT设施可以做到提前准备到位。
根据腾讯多年经验,在最后这14天,有了效果、准备情况和成本综合评估,更加容易精准的找到业务关键瓶颈的地方。而对大多数业务来讲,数据库是比较容易成为瓶颈的点。因此需要我们提前准备。
准备过程中,有哪些关键点?进行这些测试时,有哪些注意事项?
胥彪:在最后14天,团队应该再次做好业务系统压测,并联合开发团队分析问题并解决。譬如,在压测过程中,建议高于预估值20%~100%的量进行压测,以判断数据库在峰值时的承载能力。
一般来说,通过完善的测试,业务系统会暴露一些问题。此时,企业还有时间,设计一些快速简单的优化策略,并做好灾难时的故障预案和演练,以保障顺利的完成既定目标。
上述准备工作中,最容易出现的问题有哪些?
胥彪:为什么说数据库比较容易成为瓶颈,我们团队专家业务架构师祝海强做过专门的分享:
最后准备阶段,数据库通常会发现这几个问题:
- 业务逻辑和SQL导致的性能问题
- 瞬时峰值超过数据库最大承载能力
- 数据库已到单机性能最大上限,无法提升
最后,还需要考虑到,故障无法避免的情况下,如何减少损失。
春节活动期间瞬时访问峰值过大是常事儿,腾讯云建议如何应对措施?
祝海强:春节活动前,一般我们需要配合业务做压力预估,以及对应的压力测试,数据库层以MySQL为例,可以使用tcpdump、pt-digest-query的获取SQL访问情况(例如top10,读写比等),根据不同的压力场景制定不同的优化方案,一般分架构优化、SQL优化、内核参数优化、配置升级、过载保护、异地灾备等:
架构优化之缓存使用:在数据库前端增加或扩容读写Cache层(如redis),将访问请求缓存下来,组件读写,当然普通架构下的业务,通常1天可以完成cache。例如,QQ就通过了cache,有效的解决了在春节零点,全国大量用户修改说说、群发祝福消息等业务场景的业务瓶颈;
架构优化之读写分离:对于一些及时性要求不高的读逻辑、离线逻辑、报表等服务,可以尝试使用只读实例来降低主库的压力。例如,腾讯新闻一主多从,通过6个只读实例来扩展读,保证在重大新闻时,腾讯新闻仍然能正常运行;
SQL优化相关:根据压测期间抓包分析出的top10SQL及对应的慢查询,去做相关的索引优化、表结构调整、子查询优化、隐式转换、分页优化等操作;
内核参数相关:压测期间可以做一些MySQL性能参数的调优,例如调整线程池、内存、刷盘、open table等相关参数,来提高实例的整体吞吐量;
配置升级相关:如果我们上面的工作都做了,系统压力还是扛不住,我们要做相关的扩容计划,来满足预估的业务访问量;
过载保护相关:当然春节期间真实访问量会超过我们前期评估的访问量,我们还需要有相应过载保护的方案;与业务方一起制定过载保护措施:增加数据库敏感指标监控,及时发现异常,譬如:监控活动连接数超过CPU核心数告警,及时排查原因,并通过程序启动提前预埋过载保护策略;
过载保护策略可能需要业务方一起参与:例如在连接失败或超时情况下会有相应提示或引导新用户到其他流程中,减少用户重复请求次数。在异常情况出现时,采取减少请求数,异步限流降低拆、分享请求速率等措施减轻数据库端压力。例如QQ红包,能力业务峰值较大时,就会引导用户休息一会儿,或加入其它策略;
异地灾备:我们前面的工作做完,基本就能撑住业务的压力了,但是考虑到活动期间系统的容灾能力,这里也建议企业根据自身的业务特点来考虑是否需要异地灾备的方案。
扩容数据库。怎么快速扩容?扩容时需要注意哪些问题?
祝海强:扩容的目的是解决可能的数据库性能和容量瓶颈。扩容时需要注意以下几点:
- 根据业务架构情况,采取不同的扩容方式,譬如,研发在初期就设计好使用分布式数据库,即分库分表水平拆分,直接把不同的库放到不同的实例上去,通过物理设备数量和规格的线性增长可以很顺利的扩展性能;
- 如果是资源有限的情况下,尽可能让核心数据库独占物理设备性能,避免其他非核心影响到核心业务数据库;
合理设置读策略,让备机承担读请求比例(并设置更灵活的读策略,确保在数据一致性和性能之间的均衡)。
如果故障无法避免,有没有备选方案将损失降到最低?
祝海强:如果故障无法避免。我们应该从两个角度确保业务快速恢复,降低损失:
一是从技术策略上,需要平衡系统性能和数据安全;例如某些涉及交易的核心数据库故障后,数据库需要花大量时间核对数据方能重新恢复数据库,那么如果启用了数据强一致的方案,就可以很容易恢复业务。
二是从管理策略上,让故障恢复流程烂熟于心,每个步骤对应责任人,衔接顺利,并且做好严格的管控,避免越忙越乱导致误操作。
如何从容应对每一次挑战,腾讯云有没有结合自身实践经验的分享?
根据业务的使用场景,如果业务的数据库在云上,可以借用云上数据库弹性扩容缩容的特点,将活动期间数据库的规格升级到大规格,活动结束后,再缩容回来降低成本,这样可以让用户的整体成本实现良性循环。
与其他公司的同类品相比,腾讯云数据库的优势在哪?
祝海强:首先是稳定性,我们对外提供的数据库达到99.95%的高可用性,这个是得到过工信部可信云认证的,目前已经有大量的企业运行在腾讯云上。另外通过大量的软硬件优化,在同等配置下,我们的性能只高不低。而且我们支持基于MySQL、PostgreSQL、SQLServer等多种引擎数据库,可以为不同业务提供不同的产品。最后,在春节期间,腾讯云将一如既往的提供7*24h人工值守服务,协助云上的每个用户顺利过好春节。
数据库行业,还有哪些难以防范的攻击,腾讯云有哪些心得?
祝海强:安全是云数据库的重中之重,我们内部对安全的要求,一直摆在最优先的位置。目前对于数据的攻击层出不穷,有些容易预防,有些则难以察觉。
而对于数据库本身来讲,我们的建议是,对整个业务系统和数据库,都要做到6个维度进行数据安全保护:攻击者进不去,非授权者信息拿不到,窃取保密信息看不懂,系统和信息篡改不了,系统工作瘫不了。
攻击者进不去:至少需要从网络层杜绝攻击者接触到数据库;例如,应该避免通过互联网访问管理数据库,避免未经授权内网设备访问数据库;如果值班同事需要在家运维,也应选择通过VPN访问数据库;条件差点儿至少应该采用复杂密码,使用不常见端口,且仅在必要的时间开放互联网访问数据库。
非授权者信息拿不到:例如,梳理每一个数据库帐号权限,最小粒度授权,避免多人多系统共用一套帐号;高权限帐号必须和物理设备绑定;移出非必要工具,及时升级数据库,并在数据库前端部署必要的安全设备。
窃取保密信息看不懂:我们需要让核心数据库加密,或让核心字段加密存储,加密也建议采用双重加密:例如用户密码字段等;另外,加密密钥需存储在更安全位置。
系统和信息篡改不了:例如,部署数据库防火墙,数据库安全审计系统都是放篡改的手段;如果节前来不及,先利用SQL注入漏洞扫描对系统做全面的检查,保证接口透传SQL时将特殊字符做转义,避免透过SQL注入篡改数据。
系统工作瘫不了:从网络和业务方面,接入防DDOS攻击系统或接入CDN是减少业务瘫痪的有效办法。
这里的安全命题非常大,不仅仅部署几台防火墙,做些技术准备就好;更需要每个企业从管理制度到技术方案都要严格要求。而腾讯把这些安全相关的经验沉淀下来,并将整体安全解决方案开放到了腾讯云给企业来使用,包括防DDoS,放SQL注入,提供数据库安全审计安全特性,也欢迎大家节后使用。
如何在数据库顺利部署海量服务?
胥彪:互联网领域,应对海量服务方案很多,比较成熟和具有性价比的方案是采用分布式数据库。
例如,腾讯云兼容MySQL协议的分布式数据库TDSQL,支撑了腾讯云90%的计费业务,兼容PostgreSQL协议的分布式数据库PostgreSQL-XZ,支撑微信支付的核心模块。而正是通过内部海量业务和多年积累,腾讯云分布式数据库也在业内具有良好的口碑。