有赞单元测试实践

一、概述 单元测试是指对软件中的最小可测试单元进行检查和验证。单元在质量保证中是非常重要的环节,根据测试金字塔原理,越往上层的测试,所需的测试投入比例越大,效果也越差,而单元测试的成本要小的多,也更容易发现问题。 1.1 有赞单元测试1.0架构 以有赞中台某应用为例,应用部署是微服务架构,对外提供dubbo服务,当前的单元测试,采用了分层测试框架,根据代码的分层,分为Service 层测试,Biz层测试,外部服务访问层测试,DAO…

Read More

记一次故障引发的线程池使用的思考

悬案 某日某晚8时许,一阵急促的报警电话响彻有赞分销员技术团队的工位,小虎同学,小峰同学纷纷打开监控平台一探究竟。分销员系统某核心应用,接口响应全部超时,dubbo线程池被全部占满,并堆积了大量待处理任务,整个应用无法响应任何外部请求,处于“夯死”的状态。 正当虎峰两位同学焦急的以各种姿势查看应用的各项指标时,5分钟过去了,应用居然自己自动恢复了。看似虚惊一场,但果真如此吗? 勘查线索 QPS,“是不是又有商家没有备案就搞活动了啊”,小虎同学如此说道。的确,对于应用突然夯死,大家可能第一时间想到的就是流量突增。…

Read More

有赞订单同步的探索与实践

一 引子 有赞是提供商家SAAS服务,随着越来越多的商家使用有赞,越来越多的需求铺张而来,搜索或详情的需求会越来越多,针对需求及场景,之前提到过的订单管理架构演变及AKF架构等在这两篇文章里已经有所体现,而这些数据的查询来自于不同的Nosql,怎么同步这些非实时存储系统将是一个很有趣的事情 同步由来 先不说同步是什么,一般情况下,公司达到一定规模,有类似全文检索的需求或者高频key:value的时候,大家会推荐ES+HBase的架构体系去完成搜索和详情的需求,而现实中,绝大多数情况下生产环境不会将数据直接写入到ES或者Hbase,大家都会优先写入数据库,不进行双写的操作是因为增加链路影响业务。当然Hbase可能还好一点,ES本身就是非实时查询系统(为什么是非实时,…

Read More

Flink 滑动窗口优化

一. 前言 Flink 的窗口功能非常强大,因为要支持各种各样的窗口,像滑动窗口和滚动窗口这样的对齐窗口,像会话窗口这样的非对齐窗口,复杂度也会比较高。其中在超长滑动窗口的性能上也不尽如人意。这篇文章首先会阐述为什么在超长滑动窗口下 Flink 的性能会降级的很严重,以及在有赞我们是如何解决这个问题的。此外,在优化中并没有去兼顾 Evictor 的逻辑,因为在业务中并没有相应的需求。 二. Flink 滑动窗口的实现 Flink Window 算子的整体概念如下图所示,可以看到有几个重要的部分,…

Read More

营销系统在预付卡场景下的演进

一、引言 营销,就是吸引消费者关注进而使用商家提供的产品或服务的种种手段。某种意义上来说,你能看到的广告、分享、打折、赠送,这些都算是一种营销。 预付卡的生态体系里恰恰需要这种营销的基因,来帮助商家快速回笼资金,于是两者一拍即合,营销系统在预付卡生态下生根发芽。 二、会员储值的充赠 有赞预付卡包装出了会员储值这样一款产品,用户在商家店铺里完成特定金额的充值后,会得到商家赠送的权益,比如积分、会员卡、优惠券等。 这就是最原始的需求,分析下来,为了完成这个充赠的目标,…

Read More