这些真实的后端实习项目经历分享!能让你的简历瞬间加分!

有需要的可以关注公众号(微信公众号、小红书同名)!后续会继续出更多内容!

1. "无忧闪赔"计划:构建高效的自动化赔付流程

1.1 项目背景与职责

项目背景:“无忧闪赔”计划是为电商平台的售后服务提供支持的自动化流程系统。在这个系统中,当客户投诉或出现异常时,需要进行赔付处理。为了提高效率,平台希望实现自动化的赔付流程,减少人工干预,缩短赔付处理时间。项目职责:负责自动化流水的开发与场景聚合根设计。

1.2 项目难点与解决方案

1.2.1 场景聚合根设计

“无忧闪赔”计划中的一个重要模块是异常处理机制。在异常赔付中,不同的业务场景会触发不同的异常处理规则。为了提高系统的灵活性和扩展性,需要设计场景聚合根。这个模块的核心是能够根据不同的异常场景,提报异常并进行相应的处理。难点:如何保证场景的扩展性

  1. 公共属性与特殊方法:通过抽象场景的公共属性(如货物属性、异常状态等)和特殊方法(如异常处理逻辑),我们实现了对异常处理的灵活应对。不同场景下,异常的处理方法可能不同,而我们通过这种设计确保了后续新增业务场景时,可以轻松扩展。
  2. 异常提报机制:通过对异常的提报机制进行设计,我们确保了无论是哪种类型的异常,都能及时、准确地提报至系统中,并触发后续的自动处理或人工干预。这个设计使得整个系统的异常处理更加高效、可靠。

1.2.2 自动化流水开发

自动化流水设计难度不大,你可以认为他是一个链表,访问链表的每一个节点的方式是递归。难点:流程抽象与状态流转解决方案

  1. 自动化流水设计:我们采用递归方法来实现状态流转,每个状态都按照预设的逻辑自动流转。通过这种自动化处理,我们将单个异常的赔付处理时间从一天缩短到1秒。
  2. 扩展性设计:为了保证未来能够轻松添加新业务流程,我们参考了Spring的BeanPostProcessor设计,抽象出了一套可扩展的流程处理机制。每个状态流转阶段都采用了模板方法模式,这样新的异常流程可以直接继承并扩展已有的状态处理逻辑。
  3. 状态流转失败的处理机制:在一些特殊情况下,状态流转失败无法继续进行。我们设计了一个定时机制,每隔一定时间检查状态是否成功流转,超过3次失败后,系统会自动将任务交由客服处理,确保了自动化流程的高效性。

2. "货链畅流"计划:提升物流数据处理的性能与稳定性

2.1 项目背景与职责

项目背景:“货链畅流”计划是平台的物流系统升级项目,目标是优化包裹处理和分拣系统。随着电商订单量激增,系统的处理性能和稳定性面临严峻挑战,尤其是在高并发和大数据量情况下,如何高效地进行包裹数据处理,成了关键问题。项目职责:使用线程池提高接口性能。

2.2 项目难点与解决方案

难点:线程池设计与死锁问题解决方案

  1. 线程池类型选择:考虑到分拣逻辑的高并发特性,我们使用了专用的线程池。CPU密集型任务(如包裹数据计算)使用了CPU线程池,而IO密集型任务(如从数据库读取数据)则使用了IO线程池。在设计线程池时,考虑到高并发和大数据处理的特点,我们设定了CPU线程池的核心线程数为核心数+2,最大线程数为2倍核心数,而IO线程池的核心线程数则依据阻塞系数进行调整,为核心数 / (1 - 阻塞系数),最大线程数限制为250。
  2. 死锁问题的解决:在高并发的场景下,原本设计的CPU线程池核心线程数为100,导致在高峰期出现了死锁问题。当2万单的包裹数据涌入时,线程池的核心线程被占满,而子线程池的线程又不足,导致了线程死锁。为此,我们将CPU线程池的核心线程数调整为150,并为子线程设置了独立的线程池,最终成功避免了死锁。
  3. 数据库死锁问题:在处理包裹数据时,使用了selectForUpdate进行唯一标识查询,但由于默认的隔离级别(RR),间隙锁引发了死锁。为了避免这一问题,我们将数据库的隔离级别调整为RC,消除了间隙锁的影响,确保了系统的稳定性。
#后端##后端开发##后端开发工程师[话题]##后端Java##互联网大厂#
全部评论

相关推荐

1、底层通信组件方案通信模式封装支持兼容多种通信模式普通消息模式:PUB/SUB(发布订阅)、PUSH/PULL(点对点通信)RPC 模式:通过ZMQ_REP、ZMQ_REQ 封装 RPC 功能RPC功能支持 RPC 方法的动态注册提供默认的 RPC 方法列表查询支持 RPC 调用2、Master模块(实现思路:类似ROS1 Master功能, 更轻量化)背景:分布式大模型系统中,多个节点(如llm/vlm, asr,tts, camera,yolo)需要动态发现彼此并高效通信,外部用户可以动态管理节点内任务调度​​节点注册与发现​实现轻量化内存kv缓存数据库:存储节点元信息;并提高sql查询接口,供节点动态通信节点启动时向Master模块注册,上报自身元信息;节点通信时自动匹配动态任务调度分配设计用户请求-任务匹配机制:外部用户仅封装简易数据包请求,可实现动态控制各个模块(启停/llm推理等)3、Channel模块封装上层发布-订阅(PUB/SUB)和点对点通信(PUSH/PULL)混合通信模式设计闭包,通过闭包将​​网络层​​(ZeroMQ)与​​业务层​​(用户回调)解耦,同时隐式维护了通信上下文状态。4、Infra基础架构模块rpc分布式控制指令下发+异步​事件驱动架构​​注册rpc_setup/rpc_pause等分布式控制接口->注册eventpp事件监听->上层触发rpc调用 -> 添加eventpp事件队列中-> 异步事件驱动->各子类Setup/Pause等功能接口标准化控制协议​​基于抽象接口(Setup/Pause等)实现跨模块统一管控,支持LLM/ASR/TTS等异构节点无缝集成5、TASK模块与Infra模块关系:类似与进程和线程之间关系,Infra模块负责资源分配和流程管控,TASK模块是真正干活的,干的活如下:各模块中模型生命周期管理(加载/卸载)infra推理包装回调输出等等
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务