在地铁或商场走道上经常会看到墙面长方形的广告牌,它们总会是吸引人目光,使得我们去多看一眼:绚丽的色彩,突出的文案,无论行路多么匆忙。

这类的广告即是横幅广告,在互联网产品当中,我们称之为banner图

1.背景

相信在市面上有不少产品都设计了banner图,比如,淘宝,京东等,

在我涉及到的所有项目中都涉及到了这个banner,它最主要的作用是曝光流量,宣传为主要目的,

通过banner轮播图,曝光产品宣传语,app内部分业务或者其他宣传其他app广告,例入淘宝的banner推广商品/店铺等,例如最近的网易的banner推广的是年度歌单总结。

图示1(app中banner图)

2.banner轮播图业务分析

由于banner业务对于绝大数人来说,是非常容易的:

  1. banner轮播可分为视频/图片(绝大多数情况下不建议采用视频的方式)。
  2. banner的点击类型可分为app内部,h5页面,无操作等。
  3. 每个banner的展示时长是不一样的(根据banner内容,展示的时长应该有所调整)。
  4. banner 的展示时间段,比如展示时间为2021年1月1日19点到2021年1月2日18点

图示2:

3.方案以及规划

1)目标: 考虑到逻辑的简单性,主要制定以下几个方向

  • 在首页数据当中的banner,请求相对比较频繁,保证并发
  1. 架构的设计与方案

在本业务中主要就涉及到缓存系统,业务系统以及数据库,

利用缓存系统解决请求数过多问题,so easy!

当客户端请求到服务器时候,对应的业务系统从缓存系统中读取,如果缓存系统中的不存在就从数据库内读取,非常简单。

涉及到缓存,有本地缓存和缓存服务,如果不在乎那么几分钟的延迟,考虑本地缓存是非常可取的,例如java中的Caffeine框架。

图示3:逻辑设计图

4.数据库表设计

banner info 表

字段数据类型说明
idbigint(20)主键
typetinyint(2)banner的类型(1视频,2图片)
statustinyint(2)上下架状态(0下架,1上架)
banner_urlvarchar(512)banner的url路径
duration_timeint(11)展示时长(以秒为单位)
jump_typetinyint(2)跳转类型(0不调转,1站内,2网页)
datavarchar(1024)附加数据(例如配置站内跳转的路径或者网页跳转的url)
start_timedatetimebanner的开始时间
end_timedatetimebanner的结束时间
create_timedatetime创建时间
update_timedatetime修改时间
is_deletetinyint(2)是否删除(1是0否)

5.结语

banner的业务逻辑设计非常简单,至今也鲜有产品对banner有大大的改进,当然电商类产品对banner的个性化推荐

也是非常有趣的。但是这背后是多少运营人员在后面辛勤的付出啊