关于用户行为记录分析的方案选择.

solo123

问题描述

公司要求绘画用户肖像,运营分析用户喜欢哪个话题,喜欢进入哪些页面..我想到了做请求上报处理.
目前有一台A服务器做API应用,计划增加一台B服务器,记录用户请求.

为此你搜索到了哪些方案及不适用的原因

我目前想到了两个方案来记录用户请求

方案1 选择nginx转发,nginx转发到A服务器后,同时也转发给B服务器.大致配置

location / {
    # 主要请求被发往服务器A
    proxy_pass http://serverA;
    # 请求副本被发送到服务器B
    mirror /mirror;
}
location /mirror {
    internal;
    proxy_pass http://serverB$request_uri;
}
upstream serverA {
   server A_IP_ADDRESS:PORT;
}
upstream serverB {
    server B_IP_ADDRESS:PORT;
}

方案2.nginx先将请求转发给A服务器webman,A服务器在中间件里调用队列,在队列中转发请求给B服务器.

目前不知道这两种方案,哪一种比较好.或者还有其他什么方案吗?
我希望增加了消息上报请求尽量不要加重nginx或者A服务器wenman的负担.
A服务器目前配置,8G16核,最高QPS 500左右.

求大佬解惑

217 4 1
4个回答

nitron

方案2,8C16G对500QPS绰绰有余,如果纯分析访问的uri,队列都不用,nginx开access log,分析log就行

  • solo123 8天前

    nginx log不好用,因为要计划在B服务器上用php对请求做定时统计,计算.用户行为等.
    谢谢大佬的回答

  • solo123 8天前

    如果方案2,A服务器除了要接收来自nginx的500qps,还要转发500请求出去,会不会对项目造成大的性能影响呢

ersic
小Z先生

直接nginx使用lua脚本链接redis 把用户行为扔redis list 然后开个进程去拉list的数据直接写入数据库就行了

  • solo123 6天前

    这个看上去,就跟方案2差不多了,在队列里跑

chaz6chez

用户画像这种需求建议使用一些比较成熟的bi产品去做;
因为除了用户画像,未来可能还需要对产品的其他数据进行统计分析;
你的这个需求除了全域采集,还涉及到增长分析等。

这种业务的难点不在接收事件上报的服务器,主要在采集的端侧和分析侧;
采集端侧需要约定采集规范、协议,需要适配各种端;
分析测主要选用一款查询性能较好的数据库或者数仓服务,比如pgsql或者clickhouse等(不建议MySQL,百万的数据量的复杂查询就很慢了),一般是一些支持列式储存的数据库,后期数据量较大了需要考虑数据压缩等服务。

整体规划需要根据自身业务的量级和人员配置来规划,在没有相关经验的情况下,建议了解并购买成熟云产品。

整个技术周期是需要考虑以下几个技术点:

  1. 数据协议格式、规范
  2. 大吞吐事件服务
  3. 数据ETL/ELT
  4. 数据分析
  • 暂无评论
×
🔝