点击空白处退出提示
作品详情
python互通数据接收的bcp单体项目,本项目通过python抓取到的账号,作品数据,对抖音、快手、
微博、小红书、 b站等平台进行作品预警及账号监测,现在同时支持用户提供主页链接及作品链接进行监测
开发的技术:Spring Boot、 Mybatis、 Pgstgresql、 Redis、 ElasticSearch、 Neo4j 、citus、WebSocket、Jenkins等
优化项目:
1. 因为涉及到很多视频平台,日数据量达到上百万级别,为防止突然数据暴增导致项目崩溃,采用了Kafka
我创建多个服务,一个服务只对一个平台数据进入入库操作,当这批数据入库完成后,因匹配流程需耗时较长时间,
为了不积压我们的数据bcp包,影响读取效率,我创建一个topic,把这批数据发送到这个topic就行了,然后创建相应平台
的消费者对其进行消费,但是这样会出现kafka积压的情况,这个时候就可以在消费者中开启多线程,进行消费
2.项目初始阶段并没有考虑到这么多数据的产生,导致我接收项目时,一个表的数据超过亿级,导致只要关联这个表的操
作,变的异常困难,这个时候如果考虑分库的时候已经不切实际,操作周期太长,操作复杂度太大,这个时候,我考虑到使
用citus来进行分区,但是这会出现一个问题,该用什么策略去进行分区,如果分区表太大,会不会影响这个表,因为当执行
语句没有携带分区唯一键,这将导致扫所有分区表,比单表的操作时间更长,这将得不偿失,我考虑到我们项目是时效性较
强的,对于一个月前的数据其实并不关注,那我就按照作品发布时间进行分区,因很多查询都是按照天级别进行查询,那我
就按照天进行分区,一天一个分区表,但是时间长是不是导致很多分区表的创建,这个时候可以写相关定时任务,去删除一
个月前的分区表,保证数据一直维护在一个月最新的数据,这样查询效率从最初20s左右变成了0.5s,查询效率大大提升,
并且因组内人员未对该插件进行使用过,在该业务完成后,我也开展了相应的技术讨论会,组内人员一起学习该插件的使用
3.当我把原来单服务拆解成一个平台一个服务时,发现当更新项目时,更新成本太大,公司还在用supervisor管理项目,要
一个服务一个服务进行更新,并且我们这些服务还在多个服务器中,更新成本太大,这个想到可以用Jenkins进行管理,用
图形画界面的形式更新,操作方便快捷,大大提高我们维护项目的成本
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论