最近接手了几个 Java springboot 项目,看能让你吐血不 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
3kkkk
V2EX    程序员

最近接手了几个 Java springboot 项目,看能让你吐血不

  •  
  •   3kkkk 2022-01-11 14:50:29 +08:00 6214 次点击
    这是一个创建于 1373 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近接手了几个 java springboot 项目,看到代码一刻血往上涌血压有点快压不住了。各位大神帮分析下什么样的项目会这样做。 api 服务接收传参定义 json 串->转 map->拼接参数 bean->转 json 串-> feign 调用第二个服务->接收 json 串->转 map->拼接参数 bean-> feign 调用第三个服务->接收 json 串->转 map->拼接入库参数 >返回到第二个服务数据库->json 转 bean->入库并返参。

    而且吧三个服务没有做链路追踪处理,并且 feign 调用不打印调用日志。出一个问题排查到泪奔。

    24 条回复    2022-01-13 11:37:11 +08:00
    xuanbg
        1
    xuanbg  
       2022-01-11 15:18:34 +08:00
    我只能表示写这种代码的人非蠢即坏,♂

    写代码简单直接一点不好吗,非得绕来绕去。
    powerman
        2
    powerman  
       2022-01-11 15:52:41 +08:00
    Spring Cloud Sleuth
    Kaiv2
        3
    Kaiv2  
       2022-01-11 16:00:29 +08:00
    用下 http://skywalking.apache.org/ 排查问题非常方便
    3kkkk
        4
    3kkkk  
    OP
       2022-01-11 16:20:29 +08:00
    @xuanbg 应该感觉这就是微服务吧,本来一个方法或封装一个工具类的事。非要跳转一个服务。多做几次序列化。
    392039757
        5
    392039757  
       2022-01-11 16:20:33 +08:00
    猜测是因为 feign 的 RequestBody 只能有一个,非得传多个的时候又得写一个对象,用 map 可以直接 get 出来
    xuanbg
        6
    xuanbg  
       2022-01-11 16:54:17 +08:00
    @3kkkk 我司微服务根本不这么干啊,服务间调用不是没有,但全都是上层业务服务调用下层基础服务,而且调用链就只有 1 层。哪有 A 调用 B ,B 再调用 C ,然后依次返回数据这种事情。业务间通信也不是没有,但都是通过消息队列实现的,从来就不用 feign 。
    v2gf
        7
    v2gf  
       2022-01-11 17:02:33 +08:00
    强行微服务的后果
    xlsepiphone
        8
    xlsepiphone  
       2022-01-11 17:05:33 +08:00 via Android
    单应用就没这些破事了
    shyangs
        9
    shyangs  
       2022-01-11 17:22:26 +08:00
    用微服.

    用一服,要 3~5 微服主,然後使用者服怎慢.

    路 IO(微服)慢於(), 都消耗在序列化、反序列化、路上面了. PG 怎化都不架的渣架.
    itechify
        10
    itechify  
    PRO
       2022-01-11 17:38:33 +08:00
    真代码和你,一个能跑就行
    banmuyutian
        11
    banmuyutian  
       2022-01-11 17:45:18 +08:00   5
    A 君用 json 传参,B 君用 Map 传参,C 君用 java bean 传参,他们和微服务一起构成这座屎山
    boris93
        12
    boris93  
       2022-01-11 18:01:18 +08:00 via iPhone
    谢谢,已经在替你想辞职之前怎么开喷了
    newxhk
        13
    newxhk  
       2022-01-11 19:14:50 +08:00 via iPhone
    然不做後端,但看到已想跑路了
    looplj
        14
    looplj  
       2022-01-11 20:24:09 +08:00 via iPhone
    和 spring boot 无关,和程序员有关
    akin
        15
    akin  
       2022-01-11 20:46:20 +08:00
    这样串联,直接上 kafka 吧
    byte10
        16
    byte10  
       2022-01-11 21:39:44 +08:00
    (⊙o⊙)… 以前也有接收过一个项目全是 map 参数的接口,我估计这样写是方便吧,不用 class 对象,直接当脚本语言开发,休休的快。
    cocang
        17
    cocang  
       2022-01-12 00:24:02 +08:00
    看文字已经头皮发麻了,我觉得这是技术能力或者逻辑能力不够的问题,这是纯坏吧
    ixx
        18
    ixx  
       2022-01-12 09:06:09 +08:00
    故事要从第一个 springboot demo 开始.....
    dengji85
        19
    dengji85  
       2022-01-12 09:17:11 +08:00
    服务之间不依赖实体,调用不就是 json 吗,而且参数容易扩展,只是多级调用搞复杂了
    3kkkk
        20
    3kkkk  
    OP
       2022-01-12 09:50:08 +08:00
    @xuanbg 我之前公司也没这样干过啊。大小项目参与加起来有上百个,也是第一次碰到。
    sumulige
        21
    sumulige  
       2022-01-12 13:01:29 +08:00
    个人征信报文吧
    remember5
        22
    remember5  
       2022-01-12 14:57:16 +08:00
    @banmuyutian #11 赞同
    abcbuzhiming
        23
    abcbuzhiming  
       2022-01-12 16:58:48 +08:00
    很简单,动态语言写多了的结果,不愿意使用强类型约束数据结构,所以就用 map ,灵活彻底,就是接收的人要骂娘
    KevinBlandy
        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 资源
    ...

    领导说这系统不好用,也要新增一些功能。让我维护改改。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5330 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 08:30 PVG 16:30 LAX 01:30 JFK 04:30
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86