• 请不要在回答技术问题时复制粘贴 AI 生成的内容
3kkkk
V2EX  ›  程序员

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

  •  
  •   3kkkk · Jan 11, 2022 · 6669 views
    This topic created in 1583 days ago, the information mentioned may be changed or developed.

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

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

    24 replies    2022-01-13 11:37:11 +08:00
    xuanbg
        1
    xuanbg  
       Jan 11, 2022
    我只能表示写这种代码的人非蠢即坏,🤷‍♂️

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

    調用一個服務,要經過 3~5 個微服務主機,然後使用者說服務怎麼這麼慢.

    網路 IO(微服務)遠慢於記憶體(單體), 時間都消耗在序列化、反序列化、網路傳遞上面了. PG 怎麼優化都幹不過架構師的渣架構.
    itechify
        10
    itechify  
    PRO
       Jan 11, 2022
    真·代码和你,一个能跑就行
    banmuyutian
        11
    banmuyutian  
       Jan 11, 2022   ❤️ 5
    A 君用 json 传参,B 君用 Map 传参,C 君用 java bean 传参,他们和微服务一起构成这座屎山
    boris93
        12
    boris93  
       Jan 11, 2022 via iPhone
    谢谢,已经在替你想辞职之前怎么开喷了
    newxhk
        13
    newxhk  
       Jan 11, 2022 via iPhone
    雖然不做後端,但看到已經想跑路了
    looplj
        14
    looplj  
       Jan 11, 2022 via iPhone
    和 spring boot 无关,和程序员有关
    akin
        15
    akin  
       Jan 11, 2022
    这样串联,直接上 kafka 吧
    byte10
        16
    byte10  
       Jan 11, 2022
    (⊙o⊙)… 以前也有接收过一个项目全是 map 参数的接口,我估计这样写是方便吧,不用 class 对象,直接当脚本语言开发,休休的快。😂
    cocang
        17
    cocang  
       Jan 12, 2022
    看文字已经头皮发麻了,我觉得这是技术能力或者逻辑能力不够的问题,这是纯坏吧
    ixx
        18
    ixx  
       Jan 12, 2022
    故事要从第一个 springboot demo 开始.....
    dengji85
        19
    dengji85  
       Jan 12, 2022
    服务之间不依赖实体,调用不就是 json 吗,而且参数容易扩展,只是多级调用搞复杂了
    3kkkk
        20
    3kkkk  
    OP
       Jan 12, 2022
    @xuanbg 我之前公司也没这样干过啊。大小项目参与加起来有上百个,也是第一次碰到。
    sumulige
        21
    sumulige  
       Jan 12, 2022
    个人征信报文吧
    remember5
        22
    remember5  
       Jan 12, 2022
    @banmuyutian #11 赞同
    abcbuzhiming
        23
    abcbuzhiming  
       Jan 12, 2022
    很简单,动态语言写多了的结果,不愿意使用强类型约束数据结构,所以就用 map ,灵活彻底,就是接收的人要骂娘
    KevinBlandy
        24
    KevinBlandy  
       Jan 13, 2022
    我也刚接手维护了一个 sb ( SpringBpoot )开发的项目。一言难尽。
    1 ,登录用 GET 请求
    2 ,不用 spring-data-redis ,自己写代码读配置文件创建 JedisPool
    3 ,上传文件等等跟数据库没关系的业务方法,都开启了事务
    4 ,HTTP 调用,使用的是`java.net.URLConnection`
    5 ,客户端提交的数据,没有任何校验
    6 ,IO 操作各种不 close 资源
    ...

    领导说这系统不好用,也要新增一些功能。让我维护改改。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5894 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 269ms · UTC 02:00 · PVG 10:00 · LAX 19:00 · JFK 22:00
    ♥ Do have faith in what you're doing.