资讯专栏INFORMATION COLUMN

外部系统交互设计原则探讨

Shonim / 2085人阅读

摘要:一规避系统间依赖任何外部系统都是不可靠的假设你要做的是系统,某个数据需要到系统去查。四时刻为外部异常做好准备多系统间系统调用是无法保证数据一致性的。如果是外部系统调用在数据入口处就做好记录,做一个状态机,当你执行成功后将状态更改为成功。

一 规避系统间依赖

任何外部系统都是不可靠的
假设你要做的是A系统,某个数据需要到B系统去查。考虑到:

自己系统是有qps指标要求的

其它系统都是不可靠的

那么,是不是必须一定要到B系统呢?能不能做一份数据冗余呢?将B系统中数据同步到自己系统,这样,不管B系统怎么样,自己系统都不会有问题了。

二 尽量是作为依赖提供方

作为上游,而不是下游。宁可影响到别人,而不要被别人所影响
如果实在无法避免系统间依赖,那也尽量是做为上游的服务提供方,而非做下游的服务调用方。上游接口错了,会污染到下游,宁可做污染的人,也不要被别人所污染。

三 能不做的尽量不做

非自己业务范畴一概不做。

老数据,老产品能不做尽量不做。

四 时刻为外部异常做好准备

多系统间系统调用是无法保证数据一致性的。无论是外系统调用你还是你调用外系统,如果外系统调用你,如果你失败了,那么他的数据无法保证一致;同理,如果是你调用外系统,那么他的系统失败了,你的数据就有问题了。

如果是外部系统调用
在数据入口处就做好记录,做一个状态机,当你执行成功后将状态更改为成功。同时,外部系统也应该做一个数据反查或者数据推送接口,查询数据是否成功,或者由我们这边推送状态。

如果是调用外部接口
如果是本系统调用外部接口,特别是外部系统变更,比如涉及到插入或者修改(查询不算),那么是不是需要要求外部系统成功后做一个推送?或者自己这边做一个查询,来轮询接口的调用情况。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11926.html

相关文章

  • 世界级的安卓测试开发流!

    摘要:在世界级的安卓测试开发流第一部分,作者开始了安卓测试开发流的讨论。这个测试用例的测试对象是,部分指令集仅涉及执行的指令和。测试的粒度则应当和测试范围相当。一旦我们能够测试产品需求是否正确实现,我们必须继续测试开发流。 在「世界级的安卓测试开发流 — 第一部分」,作者开始了安卓测试开发流的讨论。我们探讨了一个软件工程师开始编写测试,到发现测试开发中的相关问题的不断变化。 最后,得到了以下...

    molyzzx 评论0 收藏0
  • JavaScript 需要检查变量类型吗

    摘要:一返回值调用外部方法获取的值需要对类型做判断,因为我们对方法返回的值是有期望值类型,但是却不能保证这个接口返回的值一直是同一个类型。 19年目标:消灭英语!我新开了一个公众号记录一个程序员学英语的历程 有提升英语诉求的小伙伴可以关注公众号:csenglish 程序员学英语,每天花10分钟交作业,跟我一起学英语吧 javascript作为一门动态类型语言,具有很高的动态灵活性,当定义函数...

    Songlcy 评论0 收藏0
  • 论微服务安全

    摘要:微服务能够为应用程序设计提供一种更具针对性范围性与模块性的实现方案。安全微服务部署模式可谓多种多样但其中使用最为广泛的当数每主机服务模式。在微服务环境下,安全性往往成为最大的挑战。不同微服务之间可通过多种方式建立受信关系。 每个人都在讨论微服务,每个人也都希望能够实现微服务架构,而微服务安全也日渐成为大家关注的重要问题。今天小数与大家分享的文章,就从应用层面深入探讨了应对微服务安全挑战...

    plokmju88 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<