arBen的gravatar头像
arBen 2015-06-18 14:38:16

关于收集用户的搜索功能实现,架构设计上如何设计才能最优?

场景描述:

    一个电商网站 ,有注册用户和非注册用户浏览 ,网页上用得最多的功能应该就是搜索 ,现在想收集这些内容.

    那么会产生几个问题 ,因为是外网服务 ,对所有用户的搜索全都记录下来 ,这里会产生大量访问 ,会有高并发问题

    所以不能直接 sql 入库

    我现在有2种方案 :

        一 ,是跟据 sessionid 产生一个文件 ,那么该用户( session )的搜索就专门写在这个文件里 ,再写 shell 进行

             数据清理和定时统一入库 ,这种方案会产生大量小文件 ,而且对磁盘会有大量 i 操作 ;

        二 ,采用 redis ,直接拼成 sql 语句存入redis库 ,当插入到一定数量时 ,输出 sql文件到硬盘 ,写 shell 入库 .

    我不知道现在的大型电商是采用什么技术架构收集搜索信息的 ,也不知道我上面的架构是否有可行性 ,所以网站上

    有没有牛指教一下. 万分感谢 !

所有回答列表(1)
最代码官方的gravatar头像
最代码官方  LV168 2015年6月18日

可以通过log4j自定义日志格式来将信息保存到指定的存储,可是是单独的服务器磁盘,也可以是内存之类的,log4j的写操作是异步的,所以不会影响你的主线业务。

之后在读取数据做二次分析。

参考资料:

log4j写日志文件:Apache log4j日志记录到文件中,实现每天一个文件,两种实现形式的教程分享

log4j写入mysql数据库:将java log4j的日志配置输出到mysql中

log4j相关的源码分享

写入内存,redis等我觉得log4j应该可以通过写plugin的方式实现,你可以自行搜索解决。

评论(2) 最佳答案
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友