关于“协议”的理解

工作中在一个网关服务中,对于一个接口的响应体ApiResponse,由之前返回给上游的“一定成功的响应”,改成了 返回 有可能包含“失败的响应”。当服务端业务逻辑处理失败时,封装了失败的响应体给上游后,上游校验到响应状态码ERROR后报警。

  1. 错误假设。 根据召回条件理论上该接口一定会从召回数据; 一般客户端都会校验服务端响应状态码,并做好不同响应的处理逻辑,思维只停留在自身代码的重构,未评估好影响面
  2. 协议打破。 先不讨论具体该响应什么。看整体,这本质是一个打破运行时协议的事情。之前服务端为客户端默默干的事情是往上层投递处理成功的“好消息”,天天哄着,后来有一天,服务端开始扔“坏消息”,那么崩溃的事情发生了,能确保客户端会处理这类型的消息嘛?结果瞎报警。

我们再来讨论响应体这个事情如何更优雅:
首先看服务端接口本身在提供什么能力,如果可降级,就返回降级结果,打印warn日志,对于降级结果如果真失败,这时候就要和上游去沟通好一个协议,告诉他们:“如果我们真的真的失败了,我们会给你一个ERROR状态呢,再或者返回一个空结果列表,状态为SUCCESS”。意味着可降级的失败对别人屏蔽掉,不可降级的要建立好 服务SLA。

我们再回过头来看“协议”的概念,我们知道从网络设备到上层应用都在遵循着各种各样的协议,上面讨论的问题理应获得和底层协议等价的重视态度,再当我们遇到类似事情的时候,脑中才可以敏锐的察觉到这是一个关于“协议”的事情,而不是具体的xxx,才会从协议打破的视角去思考产生的影响,而不是“明学思维”: 我感觉 我认为~

生活中的“协议”。 我们说“三十而立”后再谈原则,原则是不是可以理解为 自我协议和 与他人协议 的达成和坚定维护。自我协议打破 人易被侵蚀底线。组织小到工作组,大到社会,组织协议打破,信任体系崩塌。年轻时很少有原则,大概是没去理解协议的价值。类比 分布式数据一致性协议,所有节点长期以来都认为我和大家数据都一样的,后来有一天master同步从节点数据开始是不是偷懒了,系统可用性危在旦夕,从新选举master,建立好信任体系。

其实一想,一个运转良好的系统,一定程度上是协议非常清楚可靠的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值