当前位置:网站首页>Turn the evolutionary path of push
Turn the evolutionary path of push
2022-07-29 10:14:00 【InfoQ】
One 、 brief introduction
1.1 A term is used to explain
1.2 Existing architecture

- The existing architecture supports background push 、 Business push and personalized recommendation push .
Two 、 The process of project iteration
2.1 origin :PM Want to push operation activities
- step :
- 1)PM Export a part of the user set from the big data platform
- 2)RD Write program call push Interface
- problem :
- 1)N individual PM There is demand. ,RD..........
- 2)8 There is a sudden situation ,9 Click for a wave
- 3) Every weekend we have activities , push
- Solution :
- 1) Build a backstage , Support according to users ID Upload , Liberate and develop resources
- 2) Support push by time , Support copywriting
- 3) Support for Android 、IOS Split push
- Remaining problems :
- Problem description :
- PM Upload a data set of users who have browsed the mobile phone category , Too much data , Upload timeout
- Solution ?
- PS: The number of users is about 1000w about +, about 300M Documents on the left and right ?
- Tips :
- 1) The upload time is about 1 About minutes , You need to contact the operation and maintenance department to set the longest link time , otherwise nginx Will actively disconnect
- 2) Upload by synchronization , Change to the way of progress bar , Let the uploader see the progress
- 3) Uploading and data processing are separated ( We were uploading , Side parsing files is slow )
2.2 Major festivals , Hope to be able to notify the recent active users
2.2.1 Push in real time
- Problem description :
- Major festivals , Push all users 、 Monthly living 、 Weekly live data , Every time it's just a different copy ,PM All need to run big data systems , Efficiency is too low , Data of the day are not available , Average push needs 1 More than a hour .
- requirement :
- 1)1 Billion data can be pushed in an hour
- 2) To cover users in a certain period ( Like a month )
- 3) Support preview , Support pause
- analysis - Data volume ( With 2000w Take monthly living as an example ):
- 1) The total number of users is recognized as nearly 3 Months (90 God ) Users who have visited the Internet
- 2) It is estimated that the number of all equipment is 5000w about
- 3) The estimated space occupied is 5G
- analysis - performance ( With 2000w Take monthly living as an example ):
- 1) Old system push The average of QPS yes 2000
- 2) 2000W/2000/60/2=83~=1 Hours 20 minute , I hope it can be in 12 Push finished in minutes ( One hour push 1 Billion target )
- Difficulty analysis :
- 1) Data should be quasi real-time , How to calculate quasi real time
- 2)2000 Millions of data 12 Push finished in minutes ,QPS~=2.7w, How to improve performance 13.5 times (2k Upgrade to 2.7w Concurrent )
- Solution :
- 1) Quasi real time data
- Real time reception kafka Log message , Merge the cleaned data every minute
- 2) Data elements that need to be stored
- a) User token Information ( Notice that it's not devicetoken)
- b) this token Active time ( Time stamp )
- 3) User data storage selection
- The final effect :
- push Push the QPS achieve 3w+, While the push ability is improved , It also caused the following problems .
2.2.2 The business server cannot bear the instantaneous traffic

2.3 AB laboratory
- Problem description :
- One night 9 Click to push an operation class push, I found that the click through rate is super high , Excellent copywriting ? Or peak traffic ?
- requirement :
- 1) There are multiple push files , The system can select the best click through rate to push ?
- Solution :
- 1) Join in AB Measured ability , First push a few users , according to AB The effect of , Preferential push
2.4 Multi channel approach
- The new problem :
- Before Android channel, we only had Xiaomi channel + A push ( The reach rate of a push is average , Make a base ), If we push messages to China for mobile phones , It is also difficult to reach through the Xiaomi channel .
- requirement :
- 1) I hope we can connect all the channels of major manufacturers
- 2) The pushed message can be optimized according to the channel in which the user logs in last
- 3) Don't slow down
- Solution :
- 1) build tokens service , canBatchdetermine devicetoken The last manufacturer to use ( You need to rely on the forwarding client to report )
- 2) Store by database and table
- 3) Data hot standby to cache
- effect :
- 1) The statistics of that year can be improved 10% The achievement rate of
2.5 Real-time monitoring
- General monitoring dimensions include :
- product line : around 、 Find a beautiful machine and so on
- client : Android 、IOS
- indicators : send out 、 arrive 、 Number and proportion of clicks
- Data comparison : Templates 、 cycle
- passageway : millet 、 Huawei 、vivo、apns
3、 ... and 、 summary
边栏推荐
- 根据给定字符数和字符,打印输出“沙漏”和剩余数
- 那句话的作用
- Where are those test / development programmers in their 30s? a man should be independent at the age of thirty......
- Be tolerant and generous
- leetcode刷题——排序
- Print out the "hourglass" and the remaining number according to the given number of characters and characters
- Shell笔记(超级完整)
- 一文读懂Plato Farm的ePLATO,以及其高溢价缘由
- On memory computing integrated chip technology
- The maximum length of VARCHAR2 type in Oracle is_ Oracle modify field length SQL
猜你喜欢

A little knowledge ~ miscellaneous notes on topics ~ a polymorphic problem

SAP Fiori @OData. Analysis of the working principle of publish annotation

Science fiction style, standard 6 airbags, popular · yachts from 119900

【微信小程序】接口生成自定义首页二维码

一文读懂Plato Farm的ePLATO,以及其高溢价缘由
![[HFCTF 2021 Final]easyflask](/img/58/8113cafae8aeafcb1c9ad09eefd30f.jpg)
[HFCTF 2021 Final]easyflask

Unity3d空包打apk报错汇总

Only simple function test? One article takes you to advanced interface automatic testing technology in 6 steps

Where are those test / development programmers in their 30s? a man should be independent at the age of thirty......

函数——(C游记)
随机推荐
皕杰报表之文本附件属件
我的问题解决记录1:类上使用了@Component注解,想要使用这个类中的方法,便不能直接new,而应该使用# @Autowired进行注入,否则会报错(如空指针异常等)
云服务大厂高管大变阵:技术派让位销售派
Shell笔记(超级完整)
全面、详细的SQL学习指南(MySQL方向)
Yin Yi: my learning and growth path
基于SSM实现高校后勤报修系统
Window系统操作技巧汇总
10 suggestions for 10x improvement of application performance
最新翻译的官方PyTorch简易入门教程(PyTorch1.0版本)
A Zuo's realm
The purpose of DDD to divide domains, sub domains, core domains, and support domains
Problems and solutions of introducing redis cache
[ts]Typescript学习记录坑点合集
How to customize the opportunity closing form in dynamics 365online
Functions and arrays
还是有机会的
【论文阅读】Q-BERT: Hessian Based Ultra Low Precision Quantization of BERT
MySQL infrastructure: SQL query statement execution process
[Yugong series] go teaching course 009 in July 2022 - floating point type of data type
