V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
3kkkk
V2EX  ›  程序员

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

  •  
  •   3kkkk · 129 天前 · 4236 次点击
    这是一个创建于 129 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近接手了几个 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  
       128 天前
    我只能表示写这种代码的人非蠢即坏,🤷‍♂️

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

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

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

    领导说这系统不好用,也要新增一些功能。让我维护改改。。。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3983 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:12 · PVG 15:12 · LAX 00:12 · JFK 03:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.