1. 异步通信方式可分为不互锁、半互锁和全互锁三种类型:

 a.不互锁方式

  主模块发出请求信号后,不等待接到从模块的回答信号,而是经过一段时间。确认从模块已收到请求信号后,便撤消其请求信号;从设备接到请求信号后,在条件允许时发出回答信号,并且经过一段时间,确认主设备已收到回答信号后,自动撤消回答信号。可见通信双方并无互锁关系。

b.半互锁方式

  主模块发出请求信号,待接到从模块的回答信号后再撤消其请求信号,存在着简单的互锁关系:而从模块发出回答信号后,不等待主模块回答,在一段时间后便撤消其回答信号,无互锁关系。故称半互锁方式。

c.全互锁方式

  主模块发出请求信号,待从模块回答后再撤其请求信号;从模块发出回答信号,待主模块获知后,再撤消其回答信号。故称全互锁方式。

2.接口业务逻辑处理步骤:

 接口集成过程中需注意以下几点:

 2.1每条记录需有三个字段:关键值/下发标识/结果标识及消息

 2.2接口数据与业务处理尽量分离(需判断接口数据量)

 2.3必须遵循握手机制

 2.4错误记录的及时反馈及处理

 a.若为发送方

  1.获取未下发的记录(排除已下发成功或是失败的记录,若是记录下发后返回错误则需业务人员处理后标记为未下发状态)

  2.调用下游系统提供的接口

  3.若下游系统无反馈,则下发标识为空,若下游系统有反馈值,则当前记录下发标识为X。

   同步则立即获取返回结果,并在数据表中标识当前记录的结果及消息文本。

   异步则后续根据下游系统的反馈值来判断当前记录的执行结果。

 b.若为接收方

  1.将初始传入参数进行存储(历史记录)

  2.传入值校验,是否数据有误

  3.编写业务处理逻辑

  4.执行结果输出并返回给上游系统

  5.日志记录并消息推送相关责任人(错误记录需业务人员及时处理)

3.接口集成过程中出现的各类问题:

 a.通讯异常

  接口通信过程中出现超时或是其他异常,而导致下游无返回值,则当前记录需要重新下发。

 b.接口数据量大

  多线程处理

  数据分批轻量化

  接口数据与业务分离,接口中尽量不做业务逻辑处理(接口数据先存储后处理--需数据准确前提)。

 c.接口数据类型

  上下游接口数据类型及字段长度不一致  

 d.业务处理逻辑

  严谨:业务前后逻辑需严谨,不要出现边改订单边入库现象。

  先后:业务逻辑处理先后顺序需谨慎,不要出现物料操作出库而该物料还未入库的情况。

  逻辑:上下游系统对业务的理解不一致而导致业务处理逻辑不同。  

 e.业务异常处理

  通知:接口出现异常需要及时告知用户(特别是异步作业后台处理模式)

  处理:接口问题需要及时反馈并处理,特别是财务集成度较高的业务,前端业务错误容易对后续业务造成连锁反应。

  日清:异常问题必须日清处理。

 f.数据一致性

  上下游系统数据在任意某个时间点数据需保持一致,若出现差异,急及时检查接口握手机制是否符合要求。

  上下游系统数据出现差异都是灾难级的,需消耗很大资源去核对数据。

  

Others-接口集成方式的更多相关文章

  1. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,

    第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...

  2. spring boot rest 接口集成 spring security(2) - JWT配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  3. spring boot rest 接口集成 spring security(1) - 最简配置

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  4. C# 禁止修改已装箱了的值类型的字段值,但是可以通过接口的方式实现

    C# 默认是不能修改已装箱了的值类型中字段的值,但是可以通过 值类型实现指定的接口来改变 首先定义一个接口 interface IChange { void Change(int a, int b); ...

  5. [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. .NET中的三种接口实现方式

    摘自:http://www.cnblogs.com/zhangronghua/archive/2009/11/25/1610713.html 一般来说.NET提供了三种不同的接口实现方式,分别为隐式接 ...

  7. Java调用第三方http接口的方式

    1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适.很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信.天气等). 在J ...

  8. libcurl 接口调用方式

    http://hi.baidu.com/tracyu1026/item/bb6d5def4292b10b570f1d48 libcurl提供了一组C语言API函数直接调用.首先需要提到的两个函数就是c ...

  9. C++中模块(Dll)对外暴露接口的方式

    总结下C++中模块(Dll)对外暴露接口的方式: (1)导出API函数的方式这种方式是Windows中调用DLL接口的最基本方式,GDI32.dll, User32.dll都是用这种方式对外暴露系统A ...

随机推荐

  1. SQL Server系统表介绍与使用

    关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可能需要偶尔做一点不同寻常的事,例如数据库所有的触发器.你可 ...

  2. 理解JAVA虚拟机(下)

    2016-04-18 20:40:59 三.JVM内存参数调整及监控 3.1  JVM之内存调整 JVM运行时数据区的内存大小可以通过参数来设置,通常能设置的两块区域为堆空间和持久代(方法区),设置方 ...

  3. npm bower gulp

    npm即nodejs package manager ,是nodeJs的包管理工具,使用前需安装nodeJs(https://www.npmjs.com.cn/getting-started/inst ...

  4. thrift 知识点

    mac下,thrift 安装 mac下,最简单安装thrift的方法:使用brew安装 brew update brew install thrift 验证安装成功:thrift --help 安装出 ...

  5. mysql 官方docker镜像使用教程

    首先是pull image,这里我拉取的是5.x版本最新版: docker pull mysql:5 拉下来以后大可以按照官方的说明无脑启动,但是外部无法访问,所以绑定端口:docker run -- ...

  6. php对象的实现

    1.对象的数据结构非常简单 typedef struct _zend_object zend_object; struct _zend_object { zend_refcounted_h gc; / ...

  7. 【pushlet学习】具体实战

    业务需求: 1. 前端界面需要实时显示空调.照明等设备的状态, 如:空调电压.空调电流.光照强度等,这些量每一个称作一个测点: 2. 不同的用户登录系统后,用户只能看到自己设备的运行状态,而看不到其他 ...

  8. HA 部署wordpress

    前提: 1.保证免密认证ssh 2.NTP时间是否同步: 3.保证防火墙,selinux关闭: 4.用户名互相能够解析:在hosts文件设置: 环境: 系统:centos6.8和centos7.2 I ...

  9. Java-Web中访问某个指定工程中的文件,报错后发现访问的文件是另一个工程里面的文件

    问题: 浏览器向我的bingou项目中的UserDaoImpl.java发送请求, myeclipse报错:空指针异常 点击报错行之后,错误给定位到了另一个项目中的的一个文件 解决: 原因是文件名错误 ...

  10. 关于文章cisco漏洞4786

    查看确认方法 [root@nodchen ~]# nmap -p4786 172.30.4.2 Starting Nmap 5.51 ( http://nmap.org ) at 2017-05-20 ...