上海-技术沙龙问题汇总答疑

简介: 影子库表方式的话,是通过特殊的标记将压测数据路由到对应的带特殊标识的中间件和DB,影子库一般和生产的业务DB在同一个实例,这种情况下数据预埋是将生产数据同步到影子库,然后进行脱敏处理;

前言


本周六受邀,参加了由数列科技主办的线下沙龙——高可用&性能质量保障分享会。分享过程中,参与沙龙的同学们提了很多问题,碍于手机打字确实不太方便,因此写了这篇文章,对这些同学提出的问题做一个解答。当然,回答仅限于我个人的角度,仅供参考。


课程回放:高可用&性能质量保障分享会


Question


1、技术团队好与不好,怎么区分?@Jeffery

2、压测工具和方案应该如何选择?@一二

3、全链路压测为什么要在生产环境进行?脏数据如何处理?支付场景如何处理?@馒头大王-Manju

4、全链路压测,如果没有产品性能的baseline,如何设置并发量?@梧桐

5、生产全链路压测,如何保证生产环境可用,如何解决脏数据?@守正出奇

6、性能需求的准入规则如何理解?@不沾

7、流量模型建立的思路、前期准备、依赖的技术和工具如何了解?@不沾

8、热点数据预热怎么做?@大美丽与小旺仔

9、仿真环境如何搭建?相较于生产环境有哪些不足?生产压测如何保证不影响正常的业务?@泉眼无声

10、性能测试结果如何分析?没有满足业务需求如何处理?@久留

11、大促时候为什么不建议扩容?@暗夜

12、小公司如何落地自己的全链路压测平台?@Mike.liu

13、测试人员做全链路压测需要什么代码功底?@郑阳洋

14、如果压测没有覆盖到安全水位,如何借助已经压测的模型预测剩余的容量?@James-东方

15、证券交易所或者期货交易所这种金融行业是否适合全链路压测?@郑阳洋

16、影子表压测结束后还会在生产保留么?对生产的数据库是否会有影响?@虎魄2

17、如何根据自己公司的情况探索并建立适合自己公司的性能测试体系?@对方正在讲话...


Answer


PS:由于很多问题的point都很类似,因此我会针对这些点抽取共性来答疑,请各位知悉。


1、技术团队好与不好,怎么区分?


这是个因人而异的问题,每个人对工作的追求都有差异,对好团队的定义也有不同,我聊聊几个共性,供参考。

1)是否有技术文化?

所谓技术文化,在我看来就是对技术方案的选型&code review&编码风格&质量保障,有没有很好的落地实践。

2)是否有相对透明的绩效考评机制?

大部分人工作为了赚钱,职业规划其实比较虚。绩效考评机制能否做到相对透明和公平,是一个很重要的因素。

3)是否有明确的职位晋升空间和通道?

职级晋升、加薪永远是打工人最关心的一点。

4)你的leader是否能帮你成长?

这点其实很多人忽略了,但其实是最重要的。leader有一点很重要,向上顶住压力,向下争取利益。


2、压测工具和方案应该如何选择?


压测工具的选型,可以从三点来判断:


1)是否能快速便捷的安装部署并且支持分布式;

2)学习成本是否比较低,能让团队成员都能快速入门上手;

3)是否有完善活跃的社区或者团队持续更新优化;

压测方案,需要根据具体需求和实际情况制定,没有具有普适性的方案,基本只能靠经验和不断沟通来完善。


3、全链路压测相关的问题......


1)为什么要在生产环境进行?


  • 模拟真实的业务场景;
  • 节省环境的硬件成本;
  • 节省搭建新环境的人力和时间资源;
  • 长期来说,是一种生产巡检,类似于定期对生产环境的稳定性进行全面体检;


2)脏数据如何处理?


  • 压测数据存储正式的业务表,通过特殊字段做区分,每次压测结束后进行清理;
  • 影子库表方式的话,是通过特殊的标记将压测数据路由到对应的带特殊标识的中间件和DB,影子库一般和生产的业务DB在同一个实例,这种情况下数据预埋是将生产数据同步到影子库,然后进行脱敏处理;


3)支付场景如何处理?


  • 调用三方支付的话,采用mock或挡板的方式(mock-server或者本地jar包方式);
  • 如果是自己的支付服务,处理方式类似上述第二个问题,脏数据的处理;


4)如果没有产品性能的baseline,如何设置并发量?


  • 业务需求一般都是模糊的,需要通过业务模型和流量模型来评估,然后和业务产品方不断沟通确认,需求都是不断沟通中聊出来的,没有一步到位的需求;
  • 并发量的设置,取决于压测场景和策略,刚开始我建议通过梯度递增的方式不断加压,直到性能拐点或者出现资源告警等情况;


5)如何保证生产环境可用?


  • 最稳妥的方式,选择流量低峰期(凌晨时间段)进行压测;
  • 保证服务可用,需要有很多岗位的同学值班oncall,比如运维DBA研发测试等;


6)热点数据预热怎么做?


  • 比如用户登录态的数据,比如用户的优惠券数据,都可以通过提前缓存到Redis,设置合理的过期时间来解决这个问题;


7)仿真环境如何搭建?相较于生产环境有哪些不足?生产压测如何保证不影响正常的业务?


  • 仿真环境是全链路压测在生产落地的过渡环境,一般都是按照和生产环境1:1(比较贵)或者等比配置的方式来搭建;


  • 不足之处在于没有实际的流量请求,请求需要自己构建,硬件各方面的配置以及参数和生产无法确保一致性。在业务场景复杂度和真实性上,有一定差异;


8)大促时候为什么不建议扩容?


  • 一般大促时候,服务的扩容都是已经完成的动作。而且服务保护措施比如限流降级熔断,都配置好了。大促流量峰值时候扩容,会引起一连串的连锁反应,某些服务扩容了,下游如何按照比例扩容,限流阈值、熔断阈值都需要跟着改,但如何改?改多少?都是需要决策且风险巨大的;


9)小公司如何落地自己的全链路压测平台?


  • 全链路压测不是银弹,更不是万能。它只适合某些具有特定业务需求的公司,能否实施取决于是否具有合适的组织管理能力和对应的技术架构;


  • 一般来说小公司没有特别复杂的业务场景和高并发,全链路压测落地又是个比较复杂的技术工程,因此不是很建议小公司搞全链路压测,特别是自研,我更推荐找成熟的商业产品,比如数列;


  • 至于全链路压测平台实际上没有解决技术问题,只是更适合多人协同和规范流程的标准化自动化;


10)测试人员做全链路压测需要什么代码功底?


  • 代码能力只是一部分,或者说不是必须项。分下面几项来说:


  • 如果机制完善,全链路压测比较成熟,自动化标准化做的比较好,不会代码也可以,只需要点启动按钮看监控即可;


  • 如果从零开始自研,性能测试需要的技术广度和深度又有一定要求。比如:要对系统的技术架构、上下游调用、涉及的中间件、缓存、DB有一定的了解。对业务一定是要很熟悉的。还需要较为丰富的性能测试经验,否则有很多坑需要踩;


11)证券交易所或者期货交易所这种金融行业是否适合全链路压测?


  • 我对证券或者期货交易业务不太熟悉,我说几点适合做全链路压测的场景,供参考:
  • 具有高并发场景;
  • 具有较为复杂的业务逻辑;
  • 需要自上而下的支持(需要评估风险,是否允许犯错的空间);


4、性能需求的准入规则如何理解?


不是所有需求(接口、服务等)都需要压测,做功能测试都需要需求评审,性能也需要。一般来说,是否需要做性能测试,有如下几点参考:


1)是否具有并发场景(比如限时抢购-怕超卖);

2)是否需要写库(写数据一般都会加锁,行锁表锁悲观锁等等,不压测可能会出现锁等待超时);

3)业务逻辑是否复杂,是否有太多的依赖(分布式微服务架构SOP等很多都有复杂的依赖调用);

4)评估技术方案,是否有大量的循环、串行并行外部调用;

5)领导是否强要求(这个很奇葩,但真的有);


5、流量模型建立的思路、前期准备、依赖的技术和工具如何了解?


1)流量模型的建立,一般都是通过链路追踪+监控得到不同调用链路上的QPS及转化率,以及强弱依赖;

2)前期准备的话,完善的监控体系是必不可少的;

3)依赖的技术和工具,现在有很多开源的监控工具,skywalking、cat、pinpoint、Prometheus;


6、性能测试结果如何分析?没有满足业务需求如何处理?


1)压测结果如何分析,这是个很深很大的话题。简单来说,结果是否满足预期指标,是否存在资源不足&资源竞争&耗时太长&服务异常等情况;


2)没有满足业务需求,就想办法满足业务需求,通过扩容&升配&缓存&甚至优化代码的方式,去满足业务需求,并且留有一定冗余空间,做好线上灰度和服务保护(限流熔断降级——这个怎么了解,后面话题再聊);


7、如果压测没有覆盖到安全水位,如何借助已经压测的模型预测剩余的容量?


无法按照既有的压测结果评估实际的线上容量场景,所有的所谓预测方法论,都存在误差,敬畏生产环境的稳定性,敬畏故障。


8、如何根据自己公司的情况探索并建立适合自己公司的性能测试体系?


这个我其实分享过了,就下面这张图,照着做即可。有个小窍门:保护好自己,优先落地可行的方案。

image.png

从季到一搭建性能测试体系

团队期望

交付流程

交付痛点

业务

计划落地

技术

优化演进

环境搭建

落地实战

技术选型


结语


我只是按照问题回答问题,拆开来说,其中很多点都值得深入讨论,限于时间和篇幅,我们后续再见。


答疑仅供参考,不要照搬,要通过大量实践形成适合自己的方法论。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
5月前
|
人工智能 供应链 算法
一年一度的云栖大会如期在杭州云栖小镇开幕
一年一度的云栖大会如期在杭州云栖小镇开幕。金润数科作为数商代表受邀参加此次大会,共话“云市场数商生态未来的发展与挑战”。金润数科副总裁赵星星代表金润数科参加此次并行话题的讨论。
|
10月前
2023阿里云峰会,4月11日北京见!
2023阿里云峰会,4月11日北京见!
140 0
|
人工智能 云计算 开发者
DevUP 沙龙 | 八月北京、上海、成都燥起来
炎热的周末不知去哪里耍,不如来参加阿里云开发者 DevUP 沙龙吧。三大城市火热来袭,专家面对面交流,更有实操环节加深理解。放松学习的同时还有机会结交志同道合的小伙伴, 约约约!
DevUP 沙龙 | 八月北京、上海、成都燥起来
|
芯片 云栖大会 人工智能
杭州云栖大会技术见闻
非常有幸参加今年在杭州云栖小镇举办的云栖大会。在为期三天的展会中,主要就感兴趣的平头哥和飞天智能两类产品,参观了相关的展台和聆听了相关的分论坛。 在平头哥的展台上,主要看了下今年推出的玄铁内核展示,下面是使用武功秘籍的形式,展示出音频,视频,电力和人工智能等10个领域使用玄铁内核开发出的芯片;还是感
1451 0
|
分布式计算 Spark 开发者
7月24日阿里云峰会.上海 开发者大会回看
阿里云峰会.上海 开发者大会将在上海世博中心盛大启程,与未来世界的开发者们分享开源大数据、IT基础设施云化、数据库、云原生、物联网等领域的技术干货,共同探讨前沿科技趋势,分析阿里云在一线生产场景的最佳实践,携手合作伙伴及广大开发者们共建云上开发新时代,让我们一起code up!
7月24日阿里云峰会.上海 开发者大会回看
|
新零售 人工智能 物联网
【资料合集】2018云栖大会上半年深圳、南京、武汉、上海峰会全记录
2018年,云栖大会城市峰会已陆续在深圳、南京、武汉、上海四座城市举办。作为行业的先行军和领导者,云栖大会继续为大家带来高可用高可靠的前沿技术分享,应诸多云栖粉丝的恳求,方便大家回顾2018上半年的云事迹,云栖社区特别整理了这四次峰会的重要内容,汇聚在一起呈现给大家,让我们一起来温习下吧。
28586 0
|
新零售 Web App开发
第一届WebRTCon在上海举行
在完成1.0版定稿后,越来越多的开发者、供应商和企业级用户投入到WebRTC生态中。
1510 0
|
数据可视化 BI 云栖大会
2017年12月云栖大会北京峰会参会记
开场那宏大的视频特效、那震撼人心的背景音乐,整个会场的比格一下就上来了。忍不住掏出手机拍了10秒短视频LOW了一把。开场视频时间有点长,但是效果也非常不错,感觉像看了部大片的预告片。
1744 0
|
云栖大会 vr&ar 算法
2017云栖大会.北京峰会12.20主会场异闻录
现场正规的报道,官方应该很快就有相关的新闻出来。作为现场参会人员,咱稍微写点不一样的见闻。
1338 0