广告系统的平台架构
广告平台是围绕广告主、媒体、平台三者来进行展开的。
- 业务平台 执行人员使用,如根据广告主的要求创建广告投放(预算、排期、创意、定向)、向媒体提交创意审核、观察投放数据
- 数据平台 收集接收、曝光、点击、转化等数据进行数据处理,形成数仓和报表,提供给业务平台和投放平台使用。DMP系统、标签系统也使用该平台的数据
- 投放平台 广告的投放策略实现
- 监测平台 广告的执行情况监测,如触发曝光、点击、转化等事件进行监测
线上的项目每天产生大量的日志文件,而磁盘大小又是有限的,不可能一直把日志文件保留下来,但是每次磁盘报警上去删日志文件也挺麻烦的,log4j2中可以配置日志文件的删除策略。
在DefaultRolloverStrategy中配置Delete,当触发了滚动时,就会执行DefaultRolloverStrategy中配置的各个Action操作,而Delete标签就表示的DeleteAction
1 | <DefaultRolloverStrategy max="30"> |
Appender在log4j2中有很多实现类,如ConsoleAppender(插件名称为Console)、FileAppender(插件名称为File)、RollingFileAppender(插件名称为RollingFile)等,在实际的项目中通常使用的都是RollingFileAppender,也就是日志文件滚动更新的Appender
1 | <RollingFile name="file" fileName="/data/log/app.log" |
其滚动依赖于TriggeringPolicy(触发策略)和RolloverStrategy(滚动更新策略)
TriggeringPolicy为触发策略,决定了何时触发日志文件的滚动。常见策略有CronTriggeringPolicy、OnStartupTriggeringPolicy、SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy、CompositeTriggeringPolicy
CronTriggeringPolicy是基于Cron表达式来进行触发的
1 | <!-- 根据cron来进行触发 --> |
代码
最近项目时不时地连接mysql数据库报错
1 | {pool-21-thread-1} SQL Error: 0, SQLState: 08S01 |
同样的阿里云数据库,其他的服务器连接都不会报错,而且看云数据库的监控,负载是没有问题的。说明大概率不是云数据库的问题。
而该项目比其他服务器里的项目不同的是,访问量比较高,猜测会不会是外网带宽问题,尝试将mysql连接改成内网,这样走内网,观察两天发现,虽然减少了,但还是存在。
猜想是不是tcp连接太多导致的,后发现/var/log/messages日志中报错nf_conntrack: table full, dropping packet
最近有个需求,视频上传之后在列表和详情页需要展示缩略图
首先引入jar包
1 | <dependency> |
代码如下
1 | public String getThumbnails(String videoFilePath){ |