a. 若是主动访问,有两种情况:一是我方是数据的使用方,需要主动从对方获取数据;二是我方是数据的提供方,需要主动将数据同步给对方。主动访问时无需做接口,而是访问对方的接口,要搞清楚的问题是:我们需要在什么节点访问对方的接口?是用户触发某个操作的时候实时去访问?还是没有实时性要求,只是周期性地访问?若我方是数据的使用方且需要的数据是用户使用某个功能必须的数据,因此必须在用户操作时实时去访问对方的接口获取数据并展示给用户,典型的有我们注册某网站时获取验证码的功能。若我方是数据的使用方且需要的数据是一些跟用户实时操作无关的基础数据,如客服系统需要从其他业务系统获取用户的基础数据,以在系统中的某些功能下展示用户的信息(如客服在处理客诉等问题时,需要知道客户的一些详细信息,这些信息只有业务系统有)。这种情况下,一般会新增一个脚本定时(如两小时一次)访问对方的接口将数据获取过来存储到自己的数据库,在用到的时候直接从自己数据库获取并展示。若我方是数据的提供方且提供的数据是下游系统需要的实时要求高的数据则更多地用实时同步;若是基础数据,则选择周期性同步的方式。b. 若是被动请求,有两种情况:一是我方是数据提供方,需要对方来获取数据;二是我方是数据使用方,需要对方主动将数据同步过来。被动请求需要提供接口供对方访问,此时要搞清楚:让对方来访问的时候,需要提供什么样的参数?根据他提供的参数我们需要返回什么数据?这些数据从哪里取值?若有一些数据的来源是本系统,其他系统需要使用这些数据,则可提供接口让其他系统通过访问接口获取这些数据。若我方是数据使用方且让对方将数据主动同步过来,此种场景典型如——我们是业务的下游,上游系统产生数据后,需要将数据同步到下游系统让流程继续进行,并且流程的及时性要求高,不能有延迟。这种情况下,只有上游系统知道什么节点产生了数据,因此只有等他产生数据后主动推送给下游系统,因为下游系统因无法知道数据生成的时间,也就无法及时去获取数据,这时最好的方式是让对方主动将数据同步过来。
2. 搞清楚数据交互的实时性要求
a. 对于我方是数据使用方的情况,要根据业务的需要决定获取数据的实时性。如上文所说,如果是用户使用功能时需要的数据就是即时性访问。如果是定期获取基础数据,根据我们对数据准确性的要求和对方数据变更的频率决定获取的周期。如我们对数据的准确性要求不是100%的要求,且对方的数据变更频率也不是很高,则周期可设计得长一些,如每天一次,每几个小时一次等。b. 对于我方是数据提供方的情况,则以对方的业务需要为准,但是对于获取数据的访问量大等特殊情况,应在需求中或评审中做好说明和交代,以帮助开发设计更满足需要的接口。