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

2019-06-07 11:40:46 +08:00
 liujianwei
1. 是 Spring Cloud 做微服务,然后通过前端框架( React、Vue 之流)调用这些服务再渲染页面;还是
2. Spring MVC 这套( Spring MVC 能搭配 Spring Cloud 吗);还是
3. 其它的?
6129 次点击
所在节点    程序员
23 条回复
BCy66drFCvk1Ou87
2019-06-07 12:01:36 +08:00
这个看需要吧。一般的项目可能 spring boot 单体应用就足够了,大些的可能要上 spring cloud 微服务+前后端分离,再大点的可能微服务+前后端分离+集群等等
sumarker
2019-06-07 12:36:23 +08:00
理论上 springcloud 可以配合 mvc 但是估计配置会相当繁琐,不如直接 springboot + springcloud
leonme
2019-06-07 12:38:07 +08:00
@sumarker 你大概都没搞清楚什么是微服务,什么是 springcloud,什么又是 mvc
sumarker
2019-06-07 12:39:53 +08:00
@leonme 实在抱歉 确实没懂,误人子弟了。。。
liujianwei
2019-06-07 13:03:58 +08:00
@sumarker take it easy! 畅所欲言,共同成长!
hkitdog
2019-06-07 13:05:16 +08:00
都是 CRUD
telami
2019-06-07 13:13:22 +08:00
简单来说,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
2019-06-07 13:20:46 +08:00
感觉楼上的都没有说到点子上。

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

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

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

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

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

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

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

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

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

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

要么用 Spring Cloud 生态圈, 网飞全家桶本来比较流行,完美配合集成,一站式解决方案。可惜不更新了,注定淘汰。好像也只能用 Spring Cloud Alibaba 全家桶了 = =
luozic
2019-06-07 23:11:46 +08:00
单体 还是分布式, 直接队列 还是消息队列。 存储是主从 还是多主多从。 其他的都是部署和运维和运行架构,区分 业务架构 逻辑架构 物理架构。
MissThee
2019-06-07 23:55:35 +08:00
弱弱问一下有人用过 JFinal 吗
sagaxu
2019-06-08 10:05:59 +08:00
@MissThee 看过 3.x 和最新的 4.2,特性太过简陋,简单 crud 没问题,业务稍微复杂点,就要自己各种魔改
liujianwei
2019-06-08 15:46:16 +08:00
各位,新开了一个主题,接茬讨论分布式微服务,感兴趣的移步 https://www.v2ex.com/t/571982,我在那里等你们。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/571757

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX