热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

与第三方系统打通的N种进阶方式

第一级别使用HTTP协议,来进行交互,对失败的请求进行内存重试3次,3次后丢弃第二级别对失败的数据进行持久化重试,存放

第一级别


  1. 使用HTTP协议,来进行交互,对失败的请求进行内存重试3次,3次后丢弃

第二级别


  1. 对失败的数据进行持久化重试,存放于数据库中,用定时任务来对失败的数据进行重新处理,重试3次以后丢弃,3次的间隔时间固定

第三级别


  1. 优化重试策略,考虑到如果重试时间间隔设置得太短,第三方宕机短时间内无法恢复,会跳过3次重试时间隔离。
  2. 如果重试次数太多,比如设置10次,1是耗资源(对方服务短时间内能恢复的就已经恢复了,恢复不了的,短时间内重试这么多次也没有意义),2是定时任务不能很快的处理到新产生的数据
  3. 如果重试时间间隔太长,第三方系统恢复后,又需要很长时间才能接收到。
  4. 折中的方案是优化策略为指数级别的重试方式,第1次失败1分钟,第2次失败2分钟后重试,第3次失败4分钟后重试,以此累加

第四级别


  1. 重试是由定时任务发起,为了不重复执行,所以执行线程只有1个,数据量过大,可能会显得力不从心
  2. 这时候可能考虑多开几个线程并行跑,来加快数据的传输
  3. 想要多开线程,就需要考虑线程之间的任务分配,可以通过取模,范围等方式来做任务分配,来达到加快同步效率的目的

第五级别


  1. 单机情况下的线程任务,存在线程中断,阻塞与单机瓶颈问题,
  2. 线程中断是指,程序业务逻辑出现未知异常导致线程中断,中断后该线程所负责的任务不能得到执行(比如该线程负责的1-100条之间的记录)
  3. 线程阻塞是指,HTTP网络阻塞(比如 restTemplate的超时时间会导致此问题),或者CPU未分配到执行此任务的片短,CPU在忙着搞其他具有更高优先级的事情,或者有其他线程一直占用着CPU使用权导致该任务线程一直挂起
  4. 单机瓶颈是指该服务一台机器处理能力有限 或者 由于异常问题导致宕机,假死,等不可控因素时任务得不到执行
  5. 考虑到以上问题,可能需求使用到分布式任务系统,当一个线程死掉后,有其他线程来完成他的工作,当一台机器死掉后,有其他机器来完成这台机器的工作

第六级别


  1. 与第三方同步发生异常时研发团队得不到通知,发生问题不能得到及时处理,等到用户发现,或者第三方研发发现,再返馈到我方,就太晚了,所以需要一套完整的业务监控系统,通过先于用户,先于第三方发现问题,并解决问题

第七级别


  1. 公司团队的业务很多,只要不是孤岛,很多业务都需要与第三方对接,每一次的对接成本都做到这种程度,是一件即废人力,又废物力,又浪费时间的做法
  2. 如果能将这一套流程平台化,抽象为一个与第三方对接的公共平台,那业务团队只需要做一件事,那就是将“需要同步的数据存在自己业务的数据库里",后面的事情交给专门的系统来做专业的事情
  3. 来达到每一次对接都是最高级别的对接,每一次对接的成本都是最低

第八级别


  1. 既然做了平台化,那似乎还可以做更多的事情
  2. 任务可以实现动态分配,线程数,任务数,频次,重试策略,延迟投放,去重 等,来满足不停变化的需求与数据
  3. 每一条数据的来往,三方的处理结果都清晰的存在平台数据库中,能够实现后期排查定位和分析
  4. 第三方团队研发能力或需求理解能力不一,常常程序运行一段时间后,希望我们重新推送,以往是遇到这种情况,可能需求手动刷库,一是不安全,二是不方便。平台可以通过可视化操作,对指定数据来重放,实现重新推送
  5. 能够监控到每一个与第三方的同步情况,同步了多少数据,还剩多少,有多少成功的,有多少失败的,同步的性能怎么样,第三方的处理能力怎么样,等等执行情况

第九级别 - 待完善

欢迎补充


推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • TortoiseSVN与VisualSVN Server的安装及基本操作指南
    本文详细介绍了如何安装VisualSVN Server以及TortoiseSVN客户端,并提供了基本的操作步骤,包括配置仓库、用户管理及权限设置等关键环节。 ... [详细]
  • 本文将详细介绍如何安装和使用 CactiEZ 的中文版本,帮助那些对英文界面不太熟悉的用户轻松掌握这一强大的网络监控工具。 ... [详细]
  • 为何我选择了华为云GaussDB数据库
    本文分享了作者选择华为云GaussDB数据库的理由,详细介绍了GaussDB(for MySQL)的技术特性和优势,以及它在金融和互联网行业的应用场景。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • 本文将详细介绍温莎大学的计算机科学硕士项目,尤其是其应用计算机科学分支,探讨其申请条件、课程设置及为何成为国际学生的热门选择。 ... [详细]
  • 迎接云数据库新时代:程序员如何应对变革?
    在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ... [详细]
  • PC时代的传奇人物
    回顾过去几十年,个人电脑(PC)的发展历程犹如一部英雄史诗。每一位杰出人物都在这一领域留下了不可磨灭的印记,他们的贡献不仅推动了技术的进步,也深刻影响了现代社会的发展。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 本文探讨了现代分布式架构的多样性,包括高并发、多活数据中心、容器化、微服务、高可用性和弹性架构等,并介绍了与这些架构相关的重要管理技术,如DevOps、应用监控和自动化运维。文章还深入分析了分布式系统的核心概念、主要用途及类型,同时对比了单体应用与分布式服务化的优缺点。 ... [详细]
  • 掌握Spring MVC中自定义类型转换与格式化的技巧
    近期,在开发一款小程序的过程中遇到了几个Spring MVC接口需要传递时间参数的问题。本文将详细介绍如何利用Java 8 Time API在Spring MVC中实现时间参数的自定义类型转换和格式化。 ... [详细]
author-avatar
linxin66063
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有