Java Web 系统,现在流行什么架构? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
liujianwei
V2EX    程序员

Java Web 系统,现在流行什么架构?

  •  
  •   liujianwei
    jianliuwei 2019-06-07 11:40:46 +08:00 6516 次点击
    这是一个创建于 2386 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 是 Spring Cloud 做微服务,然后通过前端框架( React、Vue 之流)调用这些服务再渲染页面;还是
    2. Spring MVC 这套( Spring MVC 能搭配 Spring Cloud 吗);还是
    3. 其它的?
    第 1 条附言    2019-06-07 13:34:16 +08:00
    各位别讨论偏了,再重申一下问题:Java Web 系统的主流架构是什么?以及分别适用于什么场景?你工作中项目架构是怎样的?

    不是问 Spring Cloud 是什么,Spring MVC 是什么,Spring Boot 是什么。
    23 条回复    2019-06-09 18:13:08 +08:00
    BCy66drFCvk1Ou87
        1
    BCy66drFCvk1Ou87  
       2019-06-07 12:01:36 +08:00 via Android   1
    这个看需要吧。一般的项目可能 spring boot 单体应用就足够了,大些的可能要上 spring cloud 微服务+前后端分离,再大点的可能微服务+前后端分离+集群等等
    sumarker
        2
    sumarker  
    PRO
       2019-06-07 12:36:23 +08:00
    理论上 springcloud 可以配合 mvc 但是估计配置会相当繁琐,不如直接 springboot + springcloud
    leon0318
        3
    leon0318  
       2019-06-07 12:38:07 +08:00 via Android
    @sumarker 你大概都没搞清楚什么是微服务,什么是 springcloud,什么又是 mvc
    sumarker
        4
    sumarker  
    PRO
       2019-06-07 12:39:53 +08:00
    @leonme 实在抱歉 确实没懂,误人子弟了。。。
    liujianwei
        5
    liujianwei  
    OP
       2019-06-07 13:03:58 +08:00   1
    @sumarker take it easy! 畅所欲言,共同成长!
    hkitdog
        6
    hkitdog  
       2019-06-07 13:05:16 +08:00 via iPhone
    都是 CRUD
    telami
        7
    telami  
       2019-06-07 13:13:22 +08:00   1
    简单来说,spring mvc 只是 spring 的一个组件,整个 spring 包括实在是太多了,spring-security、spring-data-xx,等等。
    而 springboot 则是基于 spring,按照约定大于配置的思想抽出的一个高度封装的 spring,屏蔽了更多的细节,省去了繁琐的 xml 配置等等,这对于不熟悉 spring 的同学来说,出现问题可能不是很好排查,但是对于饱受复杂配置的同学来说,开箱即用,无需再 copy 旧项目各种 xml,springboot 当然是神器,起码写个 helloword,快的话 1~2 分钟足够了。
    而 springcloud 则是基于 springboot 的一套微服务框架,因为现在前后分离是趋势,所以一般后端都只是提供接口,前端或是 react、或是 vue 负责渲染页面,当然新技术并不一定非常适合你,尽管前端框架各种 SSR,但是还是对蜘蛛不太友好,就是说被搜索引擎收录,有点麻烦( ps:加钱、竞价排名可以解决一切问题)
    lhx2008
        8
    lhx2008  
       2019-06-07 13:20:46 +08:00 via Android
    感觉楼上的都没有说到点子上。

    首先,我们要把前端和后端的视角分离。Spring 完完全全是一个后端层面的框架,也就是说,你前端到底是弄分离还是不分离,都和后端这套框架关系不大,只是整合的问题。

    其次,理解什么是 springboot,简单来说,就是一个集成了 spring ioc,可以通过 pom 快速配置各种组件的集成框架。所以 springboot 可以快速集成 springmvc 这个组件,并且只需要 pom 和注解配置。也可以快速集成 mybatis 或者 jpa 等组件。

    到了 springcloud,他是一套微服务的框架,模式上,就是等于把多个模块(比如不同的 service )分割成不同的 java 程序在不同的 jvm 上运行,那么这些模块之间需要通信和管理,互相调用,springcloud 就是这么一套整合的解决方案。至于 springcloud 每个模块,一般都是由 springboot 构建的
    liuxey
        9
    liuxey  
       2019-06-07 13:26:21 +08:00
    每个人对微服务都有一套自己的理解,自己说的别人不一定明白,简单来说:

    小和中型系统:SpringBoot 全套 + 一个模板引擎或者一个前端框架,做到底就够了,很快上手

    大型系统:SpringCloud 搭一套,配合前端框架和 Docker 等容器技术,能覆盖绝大部分人的需求,但对团队整体能力要求不小
    fengyj
        10
    fengyj  
       2019-06-07 13:27:15 +08:00
    Spring 全家桶...
    telami
        11
    telami  
       2019-06-07 13:33:00 +08:00   4
    而且,springcloud 不是那么好上的,除却本身的学习成本,还有运维成本,这个基础设施一定要完善,测试环境和生产环境起码要有。人肉运维必然是不可行的,也是极其低效的,所以都是要走脚本,容器肯定要上 docker,k8s 管理。

    不管业务大小,光生产环境起码得 10+个微服务,当业务大了之后,100 多个不算多,那注册中心是不是得集群,起码有三个吧,配置中心也得有吧。测试环境简单点,起码得有吧,开发环境要是没钱的话,开发同学是不是自己需要在电脑上搞一下,不管是 eureka 还是 consul,或者上 Nacos,起码得启动一个吧,config 中心启动一个,自己要调试的微服务启动一个,关联的微服务启动一个,这些不可能都在 idea 启动吧,开发同学是不是自己电脑上也要装 docker,还得 docker-compose 启动,windows 电脑对 docker 支持不是太好,是不是得用 mbp (哈哈)

    emmm,除了这些基础的,微服务最大的问题就是分布式事务,小厂有钱的话,服务器凑够了,技术底蕴怎么凑啊,是基于 mq、还是 tcc、还是干脆不管事务
    一次调用链路贼长,不用多,跨了三个微服务,怎么调试啊,链路追踪是不是搞起来啊,产品、业务天天催,一个 bug 搞一天,怎么办

    其实 springboot 挺好的,jdk8 还是很香的
    itechify
        12
    itechify  
    PRO
       2019-06-07 16:02:36 +08:00 via Android
    公司用着 springboot+jpa,美滋滋
    cabing
        13
    cabing  
       2019-06-07 16:46:21 +08:00
    spring-boot,服务注册和发自制轮子,配置中心自制轮子-存储用的 consul,pingpoint 查看服务调用+自制调用链跟踪的轮子,消息队列使用 kafka。
    kidult
        14
    kidult  
       2019-06-07 17:16:04 +08:00
    国产 Nutz 好用的
    skypyb
        15
    skypyb  
       2019-06-07 20:46:41 +08:00
    Java Web 系统的主流架构是什么?
    哪有什么主流架构
    单体架构+HTML 模板引擎
    单体架构+前后端分离
    微服务 (这个我默认前后端分离
    你还能加上大数据、云计算、人工智能、区块链,随意组合着玩 都有好多种了

    哪个都不少,你说哪个主流鸭?
    skypyb
        16
    skypyb  
       2019-06-07 20:55:34 +08:00   1
    要是说框架,单体架构就 ssm 咯,管技术的跟的上时代还能上上 springboot,至于要不要前后端分离,就看公司招不招专门的前端人员了。

    微服务的话,要么用 Duubo+zk 这套(熔断?路由? 自己找别的组件,这套架构不是一站式解决方案)

    要么用 Spring Cloud 生态圈, 网飞全家桶本来比较流行,完美配合集成,一站式解决方案。可惜不更新了,注定淘汰。好像也只能用 Spring Cloud Alibaba 全家桶了 = =
    luozic
        17
    luozic  
       2019-06-07 23:11:46 +08:00 via iPhone   1
    单体 还是分布式, 直接队列 还是消息队列。 存储是主从 还是多主多从。 其他的都是部署和运维和运行架构,区分 业务架构 逻辑架构 物理架构。
    MissThee
        18
    MissThee  
       2019-06-07 23:55:35 +08:00 via iPhone
    弱弱问一下有人用过 JFinal 吗
    sagaxu
        19
    sagaxu  
       2019-06-08 10:05:59 +08:00 via Android
    @MissThee 看过 3.x 和最新的 4.2,特性太过简陋,简单 crud 没问题,业务稍微复杂点,就要自己各种魔改
    liujianwei
        20
    liujianwei  
    OP
       2019-06-08 15:46:16 +08:00
    各位,新开了一个主题,接茬讨论分布式微服务,感兴趣的移步 t/571982,我在那里等你们。
    shadowtale
        21
    shadowtale  
       2019-06-09 00:49:25 +08:00 via Android
    @oneisall8955 jpa 学习难度怎么样,会不会很重量级?
    shadowtale
        22
    shadowtale  
       2019-06-09 00:49:59 +08:00 via Android
    @liujianwei 哥哥,中文能不能不要放在超链接里面
    itechify
        23
    itechify  
    PRO
       2019-06-09 18:13:08 +08:00 via Android
    @shadowtale jpa 是规范,hibernate 是 jpa 一个实现,你学 hibernate 有没有困难?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3351 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 68ms UTC 00:44 PVG 08:44 LAX 16:44 JFK 19:44
    Do have faith in what you're doing.
    ubao msn 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