最近接手了几个 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
oneisall8955 2022-01-11 17:38:33 +08:00
真·代码和你,一个能跑就行
|
11
banmuyutian 2022-01-11 17:45:18 +08:00 5
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
ZSeptember 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 资源 ... 领导说这系统不好用,也要新增一些功能。让我维护改改。。。 |