最近接手了几个 java springboot 项目,看到代码一刻血往上涌血压有点快压不住了。各位大神帮分析下什么样的项目会这样做。 api 服务接收传参定义 json 串->转 map->拼接参数 bean->转 json 串-> feign 调用第二个服务->接收 json 串->转 map->拼接参数 bean-> feign 调用第三个服务->接收 json 串->转 map->拼接入库参数 >返回到第二个服务数据库->json 转 bean->入库并返参。
而且吧三个服务没有做链路追踪处理,并且 feign 调用不打印调用日志。出一个问题排查到泪奔。
![]() | 1 xuanbg 2022-01-11 15:18:34 +08:00 我只能表示写这种代码的人非蠢即坏,♂ 写代码简单直接一点不好吗,非得绕来绕去。 |
![]() | 2 powerman 2022-01-11 15:52:41 +08:00 Spring Cloud Sleuth |
![]() | 3 Kaiv2 2022-01-11 16:00:29 +08:00 用下 http://skywalking.apache.org/ 排查问题非常方便 |
![]() | 5 392039757 2022-01-11 16:20:33 +08:00 猜测是因为 feign 的 RequestBody 只能有一个,非得传多个的时候又得写一个对象,用 map 可以直接 get 出来 |
![]() | 6 xuanbg 2022-01-11 16:54:17 +08:00 @3kkkk 我司微服务根本不这么干啊,服务间调用不是没有,但全都是上层业务服务调用下层基础服务,而且调用链就只有 1 层。哪有 A 调用 B ,B 再调用 C ,然后依次返回数据这种事情。业务间通信也不是没有,但都是通过消息队列实现的,从来就不用 feign 。 |
![]() | 7 v2gf 2022-01-11 17:02:33 +08:00 强行微服务的后果 |
![]() | 8 xlsepiphone 2022-01-11 17:05:33 +08:00 via Android 单应用就没这些破事了 |
9 shyangs 2022-01-11 17:22:26 +08:00 用微服. 用一服,要 3~5 微服主,然後使用者服怎慢. 路 IO(微服)慢於(), 都消耗在序列化、反序列化、路上面了. PG 怎化都不架的渣架. |
![]() | 10 itechify PRO 真代码和你,一个能跑就行 |
![]() | 11 banmuyutian 2022-01-11 17:45:18 +08:00 ![]() A 君用 json 传参,B 君用 Map 传参,C 君用 java bean 传参,他们和微服务一起构成这座屎山 |
![]() | 12 boris93 2022-01-11 18:01:18 +08:00 via iPhone 谢谢,已经在替你想辞职之前怎么开喷了 |
![]() | 13 newxhk 2022-01-11 19:14:50 +08:00 via iPhone 然不做後端,但看到已想跑路了 |
![]() | 14 looplj 2022-01-11 20:24:09 +08:00 via iPhone 和 spring boot 无关,和程序员有关 |
![]() | 15 akin 2022-01-11 20:46:20 +08:00 这样串联,直接上 kafka 吧 |
![]() | 16 byte10 2022-01-11 21:39:44 +08:00 (⊙o⊙)… 以前也有接收过一个项目全是 map 参数的接口,我估计这样写是方便吧,不用 class 对象,直接当脚本语言开发,休休的快。 |
![]() | 17 cocang 2022-01-12 00:24:02 +08:00 看文字已经头皮发麻了,我觉得这是技术能力或者逻辑能力不够的问题,这是纯坏吧 |
![]() | 18 ixx 2022-01-12 09:06:09 +08:00 故事要从第一个 springboot demo 开始..... |
19 dengji85 2022-01-12 09:17:11 +08:00 服务之间不依赖实体,调用不就是 json 吗,而且参数容易扩展,只是多级调用搞复杂了 |
![]() | 21 sumulige 2022-01-12 13:01:29 +08:00 个人征信报文吧 |
![]() | 22 remember5 2022-01-12 14:57:16 +08:00 @banmuyutian #11 赞同 |
![]() | 23 abcbuzhiming 2022-01-12 16:58:48 +08:00 很简单,动态语言写多了的结果,不愿意使用强类型约束数据结构,所以就用 map ,灵活彻底,就是接收的人要骂娘 |
![]() | 24 KevinBlandy 2022-01-13 11:37:11 +08:00 我也刚接手维护了一个 sb ( SpringBpoot )开发的项目。一言难尽。 1 ,登录用 GET 请求 2 ,不用 spring-data-redis ,自己写代码读配置文件创建 JedisPool 3 ,上传文件等等跟数据库没关系的业务方法,都开启了事务 4 ,HTTP 调用,使用的是`java.net.URLConnection` 5 ,客户端提交的数据,没有任何校验 6 ,IO 操作各种不 close 资源 ... 领导说这系统不好用,也要新增一些功能。让我维护改改。。。 |