最近花了大力气在做openapi的优化,使其尽量柔性可用,借此也有些想法想和大家分享一下。 柔性服务,google一下,在网上并没有这样一个标准的概念,所以应该是公司自己取的一个名字。但是这种概念,相信大家都应该很容易能明白,即:
最大程度的保证关键服务的可用性
通俗点来说,一个人不能走路了,他起码可以说话,不能说话了,起码可以点头,头都不能点了,起码得能活着,即心脏还在跳动。这就是柔性。 对应互联网服务来说就是要实现两点:
1.要尽可能成功返回关键数据 2.要尽可能正常接收请求,不能堵死
笔者总结了一下,只要CGI满足其中一个或几个特点,就可以考虑使用柔性服务:
1.在整个CGI的执行过程中,存在关键路径和非关键路径 2.CGI中存在循环调用接口,导致执行时间不确定
我们分上面两种特点来看: 对于第一种,我们举一个简单的例子,比如有一个CGI,做了两件事情分别是:
1.验证登录态 2.获取用户信息
很明显可以看出,验证登录态这个接口是关键路径,而获取用户信息这个接口是非关键的。所以按照柔性服务的定义,当获取用户信息接口失败时,起码还应该返回登录成功。 但是这个时候毕竟还是要区分出完全成功和部分成功的,所以我们可以定义返回码如下(目前腾讯社区开放平台的openapi就是如下定义):
ret==0 ...