本发明涉及实时销售额计算,特别是一种基于flink状态实时计算新媒体直播商品销售额的方法及系统。
背景技术:
1、在新媒体商品销售额计算方案中,对销售额的计算一般是通过保存各个时刻商品的销量到第三方数据库中,用当前时刻的商品销量减去上一时刻的商品销量来进行销售额的计算。各个时刻的商品打点数据的保存是必须的,但由于受到频繁读写商品销量数据的影响,在读写中浪费了大量时间,导致不能毫秒级计算出销售额。并且在面对短时间大数据量的商品打点数据到来时,用第三方数据库去保存和读取数据必然会造成极大的io开销以及长时间的数据交互。因此对于如何高效读写商品打点数据,降低io开销并准确计算当前时刻的销售额是该技术领域的难题。目前,在销售额计算过程中,存在频繁读写数据和数据延迟的问题。
技术实现思路
1、鉴于此,本发明提供一种基于flink状态实时计算新媒体直播商品销售额的方法及系统,避免了频繁的io,提高了计算效率。
2、本发明公开了一种基于flink状态实时计算新媒体直播商品销售额的方法,其包括:
3、步骤1:创建两个状态,分别用于保存商品打点数据以及上次销售额的计算时间;
4、步骤2:将商品打点数据按照直播间和商品进行分组计算,以保证各直播间中的各商品之间不互相影响;
5、步骤3:判断当前直播间的商品打点信息是否在步骤1创建的状态中,若不在状态中,则通过查询商品打点数据,并将查询得到的商品打点数据保存至状态中;
6、步骤4:当打点数据到来时,判断当前时间距离上次销售额的计算时间是否大于预设时间;若大于预设时间,则计算当前的销售额并更新当前商品的状态。
7、进一步地,所述步骤1之前,还包括:
8、将商品销量数据统一写入kafka的一个topic中,写入的数据要求按照统一的json格式进行写入;
9、使用flink消费kafka数据,将商品打点数据中关注的信息封装成一个类,并保存到类中;同时写入elasticsearch;关注的信息包括销量、价格和直播间。
10、进一步地,还包括:
11、将最新的销售额保存至elasticsearch中;
12、若当前时间距离上次销售额的计算时间小于预设时间,则不计算当前的销售额;
13、若当前时间距离上次销售额的计算时间为空值,则保存当前的商品打点数据到状态中,同时将当前商品打点数据的到达时间作为上次销售额的计算时间,以使商品的打点数据下次到来时,可以正常计算销售额。
14、进一步地,在所述将商品打点数据按照直播间和商品进行分组计算中,将相同直播间中相同的商品放在同一个组内进行处理。
15、进一步地,使用信任销售额区间的最大值和最小值分别除以信任销量的最小值和最大值,得到信任价格区间,判断商品价格是否在信任价格区间内。
16、进一步地,若商品价格在信任价格区间内时,则:
17、使用商品价格作为最终价格;使用信任销售额的最大值和最小值分别除以最终价格,得到计算销量区间;
18、对比计算销量区间与信任销量区间,确认末点修正销量的取值区间;若区间有交集时,则取交集区间;若区间无交集时,则取信任销量区间;
19、判断商品销量在是否在信任销量区间内;若在,则直接使用商品销量作为最终销量,则使用最终销量乘以最终价格,得到最终销售额;若不在,则使用信任销量区间的最大值与最小值的差值乘以浮动系数得到浮动值,即销量浮动值=(最大值-最小值)*浮动系数;然后使用信任销量区间的最小值加上浮动值,得到最终销量;
20、使用最终销量乘以最终价格,得到最终销售额。
21、进一步地,若商品价格不在信任价格区间内时,判断商品销量是否在信任销量区间内;
22、若商品销量在信任销量区间内时,则使用商品销量作为最终销量,使用信任销售额区间的最大值减最小值的差值乘以浮动系数,得到销售额浮动值,即销售额浮动值=(最大值-最小值)*浮动系数;
23、使用信任销售额区间最小值加上浮动值得到最终销售额;使用最终销售额除以最终销量,得到最终价格。
24、进一步地,若商品销量不在信任销量区间内时,则使用信任销售额最大值除以商品价格得到干预值;当干预值小于n时,则将固定值x乘以浮动系数得到销量浮动值,即销量浮动值=x*(1-浮动系数);当干预值大于或等于n时,则使用信任销量区间的最大值减最小值的差值乘以浮动系数得到销量浮动值,即销量浮动值=(最大值-最小值)*(1-浮动系数);
25、使用信任销售额区间的最大值减最小值的差值乘以浮动系数,得到销售额浮动值,即销售额浮动值=(最大值-最小值)*浮动系数;
26、分别使用信任销量和销售额最小值加上浮动值得到最终销量和销售额;
27、使用最终销售额除以最终销量,得到最终价格。
28、本发明还公开了一种实现上述任一项所述的基于flink状态实时计算新媒体直播商品销售额的方法的系统,所述系统包括:
29、保存模块,用于创建两个状态,分别用于保存商品打点数据以及上次销售额的计算时间;
30、第一计算模块,用于将商品打点数据按照直播间和商品进行分组计算,以保证各直播间中的各商品之间不互相影响;
31、判断模块,用于判断当前直播间的商品打点信息是否在创建的状态中,若不在状态中,则通过查询商品打点数据,并将查询得到的商品打点数据保存至状态中;
32、第二计算模块:当打点数据到来时,判断当前时间距离上次销售额的计算时间是否大于预设时间;若大于预设时间,则计算当前的销售额并更新当前商品的状态。
33、由于采用了上述技术方案,本发明具有如下的优点:可有效的规避因使用第三方数据库频繁的读写商品打点数据造成的io资源浪费和时间浪费。并可以将商品的计算频率设定为一个自定义的值,根据业务需求进行销售额的计算。本发明的方法在不增加第三方数据库的前提下,能够大大提高大数据量的新媒体商品打点数据的计算效率,可以灵活的配置计算频率,同时可恢复因异常问题导致的数据丢失。保证了销售额计算过程中的稳定性、实时性和准确性。
1.一种基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,包括:
2.根据权利要求1所述的基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,所述步骤1之前,还包括:
3.根据权利要求1所述的基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,还包括:
4.根据权利要求3所述的基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,在所述将商品打点数据按照直播间和商品进行分组计算中,将相同直播间中相同的商品放在同一个组内进行处理。
5.根据权利要求1至4任一项所述的基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,使用信任销售额区间的最大值和最小值分别除以信任销量的最小值和最大值,得到信任价格区间,判断商品价格是否在信任价格区间内。
6.根据权利要求5所述的基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,若商品价格在信任价格区间内时,则:
7.根据权利要求5所述的基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,若商品价格不在信任价格区间内时,判断商品销量是否在信任销量区间内;
8.根据权利要求7所述的基于flink状态实时计算新媒体直播商品销售额的方法,其特征在于,若商品销量不在信任销量区间内时,则使用信任销售额最大值除以商品价格得到干预值;当干预值小于n时,则将固定值x乘以浮动系数得到销量浮动值,即销量浮动值=x*(1-浮动系数);当干预值大于或等于n时,则使用信任销量区间的最大值减最小值的差值乘以浮动系数得到销量浮动值,即销量浮动值=(最大值-最小值)*(1-浮动系数);
9.一种实现权利要求1-8任一项所述的基于flink状态实时计算新媒体直播商品销售额的方法的系统,其特征在于,所述系统包括: