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

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

  •  
  •   3kkkk · Jan 11, 2022 · 7231 views
    This topic created in 1758 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
    xuanbg
    Jan 11, 2022
    1
    我只能表示写这种代码的人非蠢即坏,🤷‍♂️

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

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

    網路 IO(微服務)遠慢於記憶體(單體), 時間都消耗在序列化、反序列化、網路傳遞上面了. PG 怎麼優化都幹不過架構師的渣架構.
    itechify
    itechify
    Jan 11, 2022
    10
    真·代码和你,一个能跑就行
    banmuyutian
    banmuyutian
    Jan 11, 2022❤️5
    11
    A 君用 json 传参,B 君用 Map 传参,C 君用 java bean 传参,他们和微服务一起构成这座屎山
    boris93
    boris93
    Jan 11, 2022 via iPhone
    12
    谢谢,已经在替你想辞职之前怎么开喷了
    newxhk
    newxhk
    Jan 11, 2022 via iPhone
    13
    雖然不做後端,但看到已經想跑路了
    looplj
    looplj
    Jan 11, 2022 via iPhone
    14
    和 spring boot 无关,和程序员有关
    akin
    akin
    Jan 11, 2022
    15
    这样串联,直接上 kafka 吧
    byte10
    byte10
    Jan 11, 2022
    16
    (⊙o⊙)… 以前也有接收过一个项目全是 map 参数的接口,我估计这样写是方便吧,不用 class 对象,直接当脚本语言开发,休休的快。😂
    cocang
    cocang
    Jan 12, 2022
    17
    看文字已经头皮发麻了,我觉得这是技术能力或者逻辑能力不够的问题,这是纯坏吧
    ixx
    ixx
    Jan 12, 2022
    18
    故事要从第一个 springboot demo 开始.....
    yangwa
    yangwa
    Jan 12, 2022
    19
    服务之间不依赖实体,调用不就是 json 吗,而且参数容易扩展,只是多级调用搞复杂了
    3kkkk
    3kkkk
    OP
    Jan 12, 2022
    20
    @xuanbg 我之前公司也没这样干过啊。大小项目参与加起来有上百个,也是第一次碰到。
    sumulige
    sumulige
    Jan 12, 2022
    21
    个人征信报文吧
    remember5
    remember5
    Jan 12, 2022
    22
    @banmuyutian #11 赞同
    abcbuzhiming
    abcbuzhiming
    Jan 12, 2022
    23
    很简单,动态语言写多了的结果,不愿意使用强类型约束数据结构,所以就用 map ,灵活彻底,就是接收的人要骂娘
    KevinBlandy
    KevinBlandy
    Jan 13, 2022
    24
    我也刚接手维护了一个 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   ·   Privacy   ·   Solana   ·   5482 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 02:03 · PVG 10:03 · LAX 18:03 · JFK 21:03
    ♥ Do have faith in what you're doing.