@
chaleaochexist mq 和 controller 平级,我们认为接收 mq 也是一种外部调用方式,可能开始我们写一个 controller 来接收请求,后来解耦了,直接在 mq 中新增一个接收消息就行了,service 不用做任何变更,甚至可以支持一部分请求调用 controller ,另一部分请求发送 mq 消息。
dao 和 client 是平级,和你理解的差不多,可以简单理解 client 就是一个通过 http 通信的 db 数据库,调用接口获取一条数据和从数据库获取一条数据从上层来看没有区别;
manager 只要是用来屏蔽数据存储层的实现的,可能我们数据来源有 db/redis/es/client ,比如我获取用户,manager 中先从 redis 中获取,如果 redis 中没有,再从 mysql 中获取,然后再存储到 redis ,最后再返回给 service ;再举个例子,我们一般是一个主表和 n 个关联表,每个表对应一个 dao ,我们比较大的业务对象要产生几十个关联表,会在 manager 中合并成一个 save 方法。service 能够专注于业务逻辑处理。