首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
sms
ruby
pipeline
api
gzip
php绘图
php水印
ffmpeg
tengine
okhttp
多线程
iis
phpunit
cookie
nlp
asp.net
lvs
hashmap
vb
gcc
lavarel
sftp
openssl
session
java
protocol-buffers
spring
interface
curl
cron
go
storage
redis
caching
pymongo
web3
ssl
h2
mvc
router
cpython
swoole
爬虫
struct
pdo
yii
golang
upload
syslog
queue
timeout
php5
yaf
crontab
rust
stdout
laravel
log4j
nodejs
mysql
transform
并发
token
package
webhooks
touch
注入
frontend
队列
http2
mq
wordpress
thinkphp
cookies
http
pipe
port
base64
php
当前位置:
开发笔记
>
后端
> 正文
与第三方系统打通的N种进阶方式
作者:linxin66063 | 来源:互联网 | 2023-07-23 15:26
第一级别使用HTTP协议,来进行交互,对失败的请求进行内存重试3次,3次后丢弃第二级别对失败的数据进行持久化重试,存放
第一级别
使用HTTP协议,来进行交互,对失败的请求进行内存重试3次,3次后丢弃
第二级别
对失败的数据进行持久化重试,存放于数据库中,用定时任务来对失败的数据进行重新处理,重试3次以后丢弃,3次的间隔时间固定
第三级别
优化重试策略,考虑到如果重试时间间隔设置得太短,第三方宕机短时间内无法恢复,会跳过3次重试时间隔离。
如果重试次数太多,比如设置10次,1是耗资源(对方服务短时间内能恢复的就已经恢复了,恢复不了的,短时间内重试这么多次也没有意义),2是定时任务不能很快的处理到新产生的数据
如果重试时间间隔太长,第三方系统恢复后,又需要很长时间才能接收到。
折中的方案是优化策略为指数级别的重试方式,第1次失败1分钟,第2次失败2分钟后重试,第3次失败4分钟后重试,以此累加
第四级别
重试是由定时任务发起,为了不重复执行,所以执行线程只有1个,数据量过大,可能会显得力不从心
这时候可能考虑多开几个线程并行跑,来加快数据的传输
想要多开线程,就需要考虑线程之间的任务分配,可以通过取模,范围等方式来做任务分配,来达到加快同步效率的目的
第五级别
单机情况下的线程任务,存在线程中断,阻塞与单机瓶颈问题,
线程中断是指,程序业务逻辑出现未知异常导致线程中断,中断后该线程所负责的任务不能得到执行(比如该线程负责的1-100条之间的记录)
线程阻塞是指,HTTP网络阻塞(比如 restTemplate的超时时间会导致此问题),或者CPU未分配到执行此任务的片短,CPU在忙着搞其他具有更高优先级的事情,或者有其他线程一直占用着CPU使用权导致该任务线程一直挂起
单机瓶颈是指该服务一台机器处理能力有限 或者 由于异常问题导致宕机,假死,等不可控因素时任务得不到执行
考虑到以上问题,可能需求使用到分布式任务系统,
当一个线程死掉后,有其他线程来完成他的工作,当一台机器死掉后,有其他机器来完成这台机器的工作
第六级别
与第三方同步发生异常时研发团队得不到通知,发生问题不能得到及时处理,等到用户发现,或者第三方研发发现,再返馈到我方,就太晚了,所以需要一套完整的业务监控系统,通过先于用户,先于第三方发现问题,并解决问题
第七级别
公司团队的业务很多,只要不是孤岛,很多业务都需要与第三方对接,每一次的对接成本都做到这种程度,是一件即废人力,又废物力,又浪费时间的做法
如果能将这一套流程平台化,抽象为一个与第三方对接的公共平台,那业务团队只需要做一件事,那就是将“
需要同步的数据存在自己业务的数据库里
",后面的事情交给专门的系统来做专业的事情
来达到
每一次对接都是最高级别的对接,每一次对接的成本都是最低
第八级别
既然做了平台化,那似乎还可以做更多的事情
任务可以实现动态分配,线程数,任务数,频次,重试策略,延迟投放,去重 等,来满足不停变化的需求与数据
每一条数据的来往,三方的处理结果都清晰的存在平台数据库中,能够实现后期排查定位和分析
第三方团队研发能力或需求理解能力不一,常常程序运行一段时间后,希望我们重新推送,以往是遇到这种情况,可能需求手动刷库,一是不安全,二是不方便。平台可以通过可视化操作,对指定数据来重放,实现重新推送
能够监控到每一个与第三方的同步情况,同步了多少数据,还剩多少,有多少成功的,有多少失败的,同步的性能怎么样,第三方的处理能力怎么样,等等执行情况
第九级别 - 待完善
欢迎补充
http
数据库
cpu
分布式
安全
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
java
Web与游戏开发的主要差异
本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ...
[详细]
蜡笔小新 2024-12-18 08:26:30
spring
Spring Cloud学习指南:深入理解微服务架构
本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ...
[详细]
蜡笔小新 2024-12-19 09:25:36
curl
ThinkPHP6多数据库部署指南
本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ...
[详细]
蜡笔小新 2024-12-17 18:59:28
curl
深入解析Hadoop的核心组件与工作原理
本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ...
[详细]
蜡笔小新 2024-12-19 17:17:51
asp.net
TortoiseSVN与VisualSVN Server的安装及基本操作指南
本文详细介绍了如何安装VisualSVN Server以及TortoiseSVN客户端,并提供了基本的操作步骤,包括配置仓库、用户管理及权限设置等关键环节。 ...
[详细]
蜡笔小新 2024-12-19 14:26:53
asp.net
CactiEZ 中文版安装与使用指南
本文将详细介绍如何安装和使用 CactiEZ 的中文版本,帮助那些对英文界面不太熟悉的用户轻松掌握这一强大的网络监控工具。 ...
[详细]
蜡笔小新 2024-12-19 12:14:26
asp.net
为何我选择了华为云GaussDB数据库
本文分享了作者选择华为云GaussDB数据库的理由,详细介绍了GaussDB(for MySQL)的技术特性和优势,以及它在金融和互联网行业的应用场景。 ...
[详细]
蜡笔小新 2024-12-19 10:59:22
spring
最强阿里及大厂350道面试大全:框架+数据库+并发+开源+微服务
前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ...
[详细]
蜡笔小新 2024-12-18 15:33:00
asp.net
使用SqlDependency执行复杂查询
本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ...
[详细]
蜡笔小新 2024-12-18 14:03:05
asp.net
温莎大学计算机科学硕士:申请条件与优势解析
本文将详细介绍温莎大学的计算机科学硕士项目,尤其是其应用计算机科学分支,探讨其申请条件、课程设置及为何成为国际学生的热门选择。 ...
[详细]
蜡笔小新 2024-12-17 20:38:12
asp.net
迎接云数据库新时代:程序员如何应对变革?
在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ...
[详细]
蜡笔小新 2024-12-17 14:42:46
asp.net
PC时代的传奇人物
回顾过去几十年,个人电脑(PC)的发展历程犹如一部英雄史诗。每一位杰出人物都在这一领域留下了不可磨灭的印记,他们的贡献不仅推动了技术的进步,也深刻影响了现代社会的发展。 ...
[详细]
蜡笔小新 2024-12-19 17:05:46
spring
深入解析Spring Cloud微服务架构与分布式系统实战
本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ...
[详细]
蜡笔小新 2024-12-19 16:02:50
spring
分布式架构概览与实践
本文探讨了现代分布式架构的多样性,包括高并发、多活数据中心、容器化、微服务、高可用性和弹性架构等,并介绍了与这些架构相关的重要管理技术,如DevOps、应用监控和自动化运维。文章还深入分析了分布式系统的核心概念、主要用途及类型,同时对比了单体应用与分布式服务化的优缺点。 ...
[详细]
蜡笔小新 2024-12-19 15:11:28
spring
掌握Spring MVC中自定义类型转换与格式化的技巧
近期,在开发一款小程序的过程中遇到了几个Spring MVC接口需要传递时间参数的问题。本文将详细介绍如何利用Java 8 Time API在Spring MVC中实现时间参数的自定义类型转换和格式化。 ...
[详细]
蜡笔小新 2024-12-17 15:37:19
linxin66063
这个家伙很懒,什么也没留下!
Tags | 热门标签
sms
ruby
pipeline
api
gzip
php绘图
php水印
ffmpeg
tengine
okhttp
多线程
iis
phpunit
cookie
nlp
asp.net
lvs
hashmap
vb
gcc
lavarel
sftp
openssl
session
java
protocol-buffers
spring
interface
curl
cron
RankList | 热门文章
1
5月24日安全资讯焦点:ZOOM端到端加密技术详解白皮书发布
2
全球十大热门服务器监控软件
3
马志强探讨语音识别技术的最新进展与实际应用案例——RTC开发者聚会分享
4
如何在自定义PHP框架中集成类似CodeIgniter的表单验证功能?
5
Android应用中因背景图片尺寸过大引发内存溢出问题的解决方案
6
Hive 实战技巧:数组转字符串与列转行、行转列详解(含教学视频)
7
比尔·盖茨最新个人网站出人意料地选择Linux服务器,背后有何深意?
8
ECharts 折线图堆叠设置方法及配置详解
9
模板模式解析及其在软件设计中的应用
10
Python与Selenium自动化测试环境配置指南
11
使用Cordova FileTransfer插件下载图片成功,但在手机文件系统中无法找到下载路径
12
锐意创新,蓄势待发!低代码领军企业流辰信息携手共创辉煌未来!
13
利用 setAttribute 方法为 HTML 元素添加或修改属性值
14
Delphi FMX ZXing 原生实现高效二维码与条码扫描,无需依赖外部库
15
PHP中未定义变量引发的错误警告,而非预定义的异常处理机制
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有