好的 分布式系统(微服务) result 设计 rpcResult httpResult 设计
private int code = -1; private String msg; private T data;
但这个问题有个严重的问题.
1. 分布式系统内部系统很多. 你都不知道这个 code 来自于哪个系统.
2. 中间层系统可能将下游系统的 code 封装屏蔽掉了. 类似 Exception 的 N 层报错. 除了业务封装,异常封装也是必要的.
但有时候业务方想知道内部系统具体的错误信息.这样方便给乘客展现.
就需要业务方把外部系统最初的原因outCode返回回去.(例如调用支付宝,微信返回的异常)
解决方案:
传统解决方案:
1.将 code 分区后分配给各个系统.
2.将 code 字符串化,增加微服务模块名前缀
个人觉得好的解决方案
1.增加一个 sysName 字段.
2.增加 outSysName,outCode,outMsg三个字段.
这些作为框架的部分.
作为对应,java 的 ServiceException 亦需要增加.
只要将一头一尾结合就好了.
public class ProxyException extends RuntimeException { private ExceptionCode exceptionCode; private String outSysName; private String outCode; private String outMsg; }