1.项目说明.txt
UP 返回
1.mq消费者消费失败导致消息不断重试,无法消费到后续 消息,消息堆积
业务消费者中通过业务id记录重试次数 ,达到一定的次数不再重试,放入私死信队列,由死信队列处理 。比如记录日志,告警,后续人工干预之类的
服务:
HotEventReceiver 热点回收
SpecialTopicManager 专题生产
ConfigManager
HncWiseFunction
1.专题
1.1 专题页面交互模型和物料模型 预览模型的设计
2.热点
1.0热点
爬虫服务爬取热点->receiver落话单(hdfs文件),供算法分析使用->topic运营管理,由编辑手动添加文章产生关联->分发服务推送文章
热点内容进入热搜榜->定时任务扫描发布,热点召回服务缓存热搜榜单
算法主要根据热点文章的后验数据计算热度值,dmq由topic消费更新
2.0热点
hdfs是有时延的,改为obs文件,实时上传
算法参与热点的生成,整合文章以后得到热点及关联文章,计算好热度值发送dmq供运营使用
运营可以手动修改,以人工为主,同时落盘运营的操作,反过来供算法学习
热点划分等级,使用不同的池子,召回权重不同
视频文章超分增强体验
3.0热点
算法热点直接进入监控,运营强运营,从监控数据中识别热点,添加到运营页面,
算法开始召回
热点超分:
1.不同的路径,dmq消费 运营不同的人工操作,都是直接向并发队列中添加文章,不影响主流程,类似于异步
开启线程不断消费文章,后台慢慢增强
2.下游限流,,一方面加大过滤,不浪费接口次数;通过参数控制调用频率,比如维持在2篇/s,根据4个节点,,下游限制10tps左右
小艺爬虫框架搭建
3.评论
4.基础配置
5.函数配置
6.可以改进的地方:
6.1 分布式事务
现在主要是采用重试的方式解决,,以及对于一些检查比较严格的服务调用放在更后面
顶峰数码
struts+spring+html+js+css
项目的交易电文都是文本数据,分页查询由后台手动处理,对这块的逻辑抽取了公共代码块进行封装,供各个不同业务调用,节省了开发人员开发时间提高了效率
以前的项目都是内部使用,该项目作为招聘网站可能会提供外部网络访问,页面数据通过表单提交,在自测的过程中发现用户可以伪造表单数据进行不合法的操作,向pm建议在后台添加了接口和数据权限的校验,规避了可能导致数据结构异常和越权的风险,提高了系统的健壮性
获得了最佳新人的奖项
科大
Springboot+vue+oracle+mysql+sqlserver
积极对接海关合作的企业(丰源国贸 丰原国货 阳光电源 晶合集成等),了解企业erp业务数据流转,分析不同erp的表结构关系,稽核了大部分报关单异常数据,推进了项目进展
配合优化了后台稽核的任务,将任务由以前的串行改为并行,极大的缩短了每次任务的统计时间,能够更快地获取最新的分析数据,用于海关工作汇报
中科
springboot+hibernate+Mysql+redis vue
项目初始流程转换较为混乱,且很多概念定义模糊,开发人员代码杂乱bug很多,项目开发进展缓慢。通过实地和实验室操作人员多次沟通交流,调整优化UML图和表设计,敲定明确业务流程、报告模板、权限分布等功能,优化菜单结构,最终确保了项目交付,为公司带来了可观的增收
利用DDD设计模式的理念重新规划项目模块,将项目的web层 服务提供 领域实体 数据库操作和公共工具等抽出不同的子模块进行管理,按需引入和调用,使项目开发目录更加清晰,各项目的分工也更加明确,降低耦合,大大加快了版本迭代的速度,减少了开发成本
公司里很多项目都是通过springboot开发,有很多相似的功能,比如登录框架 权限管理 主页布局等,通过对多个项目的分析,抽取出脚手架工程;对于有差异的模型操作也开发了自动生成基础crud的工具,方便了后续新项目的启动,提升了小组成员的开发效率
项目原先使用bootstrap开发前端页面,项目里充斥了大量的html模板和前台资源文件,代码杂糅。参与主导将前端页面转为vue项目,前后端分离,使前后台小组开发同步进行减少冲突,提升效率
积极测试发现hibernate框架的特性(比如查询自动关联表过多,数据模型在事务中的不同状态等),组织小组成员共同学习踩坑,减少了很多因为对框架不够熟悉可能导致的bug,提升了开发效率
全国登记的农资机构较多,主页上需要渲染各省市系统机构数目的热力图,原先页面通过接口实时获取表数据进行统计,时延很长甚至卡死。因为该热力图的数据实时性不太敏感,引入redis,通过定时任务在后台统计好后写入缓存返回接口,主页热力图可以做到秒刷,提升了系统使用体验
系统需要根据截止到当前上报的各地化肥价格给出合理的预期,计算的公式需要查询大量的数据,原先的定时任务执行需要耗费大量时间,通过将任务拆分成多个小的任务异步执行,大大减少了预测数据的生成耗时,确保了功能的正常使用
带领小组人员开发微信小程序,农场人员通过手机端实时将农机位置上传服务器,系统添加百度地图开发工具,将坐标位置显示在地图中,协助管理人员查看作业路线
易宝
ServiceComb+Spring+mybatsi+MySql+Redis+DMQ+ES+OBS+HDFS
利用mybatis的拦截器开发优化sql执行时间的统计工具,记录服务器日志,帮助分析可能的慢sql,极大的方便了各个服务问题的定位,同时也提前发现耗时过长的sql语句进行优化,避免了可能的线上问题
系统很多页面存在数据导出的功能,对于大数据量的excel文件的生成非常耗时,接口响应经常超时,非常影响使用。通过将下载流程异步进行处理,同时将原先的下载流程分解为导出/下载的方式,所有下载功能均得到了优化,不在产生异常
利用spring框架的aop能力,为系统增加了多个功能,通过对请求注解的切面,对页面接口进行参数校验,审计日志等公共能力的增强,提升了每年进行安全审计的效率,提前规避了可能的数据安全风险
统一并推广数据清理流程的实现,利用索引及优化执行方式,使各个业务的清理任务即使在面对千万量级的数据也可以轻松完成
专题作为浏览器的核心产品,全程参与相关模型的构建和流程的设计,包括生产+审核+分发+体验优化+商业化。使用dmq生成朗读语音,使用线程异步超分专题的视频文章,抽象专题模型的行为框架方便后续其他业务的开发,总体解耦了业务流程,优化了页面体验,收到了编辑部运营的肯定,最终确保了专题业务的正常运转,提高浏览器的日活数据
主导设计了热点信息的爬取代码框架,分析爬取流程抽象模型及公共代码,利用线程池异步多线程实现40+网页的热点爬取,使每个站点的热点数据每分钟刷新两次,满足了产品诉求;同时优化历史数据的存储,在追踪热点来源时满足2百万+的单表数据量能够获得较优质的查询和清理体验,获得了pm的肯定和月度之星的奖励
热点/专题页面存在大数据量的查询,涉及多个表和es内容的检索,通过对表结构的横向、纵向拆分,索引的合理运用,同时对于较为耗时的es查询采用异步分流的方式获取,将原先页面的近10s的响应时间缩短到了3s以内,同时将实现的经验分享给其他微服务,提升了多个服务页面的体验
利用redis缓存榜单,应对200+微服务节点的请求,提升了服务的吞吐量
热点热度值的计算需要大量的后验数据,包括相关文章的评论数,点赞数,分享数,停留时间等等,计算数据含有大量的整数、小数以及字符串,需要占用大量的内存。通过引入ES hppc的高性能模型,相较于java传统的集合模型,节省了超过50%的内存,同时大大降低了gc的对象拷贝时间,在完成功能的同时大大提升了硬件利用效率,也避免了可能出现的系统问题
在日常开发过程中也经常使用swing开发工具并推广给同事,提升大家的开发和调试效率。比如利用jdk的命令行自动替换jar包中class文件的工具,利用开源http框架开发类似于postman的接口请求工具(根据项目接口特点使之操作更简便),根据模型字段特点自动生成接口请求体的工具等
使用线程池同步 线程异步调用语音模型,消费获得语音的方式,
redis dmq es obs 开发工具
自学
品优购
写爬虫
deepseek写前端
个人工具
24*60*8*2*45*2
24*60*2*50*2
JDK里面默认的集合元素类型均为对象,实际很多场景存储的是基本数据类型数据。对于这些场景,如果使用jdk的原生集合会将其包装成对象,造成内存的浪费和GC的压力。很多开源组件都有对应的高性能集合实现。使用基本数据类型代替包装类,例如netty fastutil和ES hppc
本文主要使用es hppc的高性能集合实现,优化推荐引擎性能
java一个空object对象至少占16字节(64位开启指针压缩)。其中markword占8个字节,类元指针占4个字节,对齐填充占4个字节。java中一个空string占用内存大小
reference/4+object header/8+cahr[]/16+int/4+char reference/4+padding/4=40byte
因此如果我们将集合的包装类转为基本数据类型,string转为基本数据类型,内存将节省50%以上。而对于gc,很大一部分时间都消耗在对象拷贝上,减少对象大小也会大大降低这一部分时延
<dependency>
<groupId>com.carrotsearch
<artifactid>hppc
<version>0.9.0
</dependency>
System.setProper
DOWN 返回