高手问答第 201 期 — 专为新手准备的一期 Spring Boot 专场

发布于 2018/06/12 17:30
阅读 6K+
收藏 12

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

OSCHINA 本期高手问答(2018 年 6 月 13 日 — 6 月 19 日)我们邀请到了黄文毅@阿_毅 和大家一起讨论关于微服务和 Spring Boot 的问题。

黄文毅,曾就职于厦门星耀蓝图科技有限公司(为浦发银行、兴业银行、南京银行、湖南农信银行等银行开发系统)和上海美团(从事美团和大众点评后端开发工作),目前就职于厦门美图科技有限公司,从事美图秀秀和美拍后端开发工作。

Spring Boot 是在 Spring 框架基础上创建的一个全新框架,其设计目的是简化 Spring 应用的搭建和开发过程。Spring Boot 对于一些第三方技术的使用,提供了非常完美的整合,使你在简单的使用中,不知不觉运用了非常高级和先进的技术。本期高手问答邀请到了黄文毅@阿_毅 和大家一起围绕 Spring Boot 以及微服务这两个主题进行交流。

本期高手问答内容

1.微服务项目实战经历分享
2.使用微服务的关键技术点
3.Spring Boot 框架

或有其他相关问题,也欢迎大家积极提问!

为了鼓励踊跃提问,@局长 会在问答结束后从提问者中抽取 5 名幸运会员赠予《一步一步学Spring Boot 2:微服务项目实战》一书。

购买链接:天猫

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就微服务和 Spring Boot 方面的问题向黄文毅@阿_毅 提问,请直接回帖提问。

加载中
1
局
该评论暂时无法显示,详情咨询 QQ 群:点此入群
阿_毅
阿_毅
恭喜这5位用户了~~~
1
源码君
源码君

@阿_毅 如何出一本自己的书,说一下流程?

阿_毅
阿_毅
gitchat有很详细的出书流程,祝你生活愉快~~~
阿_毅
阿_毅
http://gitbook.cn/gitchat/activity/5af0f30d3e655806643062f0
1
拉裤兜兜子
拉裤兜兜子

@阿_毅 老师您好,到底什么情况下的场景才适合使用微服务架构呢? SpringBoot+SpringCloud的版本更新很快,因为java的版本更新提速,如何选择版本呢?还有具体完善的微服务架构应该是怎样的架构模式,从前端到线上部署,谢谢

拉裤兜兜子
拉裤兜兜子
回复 @阿_毅 : 感谢您的耐心解答,祝您节日愉快!
阿_毅
阿_毅
祝你生活愉快~~~
阿_毅
阿_毅
完善的微服务架构应该是怎样的架构模式?这个问题我很难回答。目前并没有什么完善的架构模式,完善的架构模式都是在业务的基础上不断的迭代优化。说实话,现在很多大公司使用微服务架构,也都是在摸索着前进。
阿_毅
阿_毅
SpringBoot+SpringCloud的版本更新确实很快,比较这个技术比较新,所以也是没办法的事情。至于版本的选择,如果你们公司现在使用spring boot 1.6版本,那么确实是可以考虑逐步的升级到spring boot 2.0版本,spring boot 2.0虽然提供很多的新特性,但是以我的了解,这些新特性,除了监控那块有写变化,其他都是新的特性,不影响以前的功能。
阿_毅
阿_毅
1、一般情况下使用到微服务架构,都是一些大型的互联网公司,因为大公司的业务繁多,需要按照业务维度切为为一个又一个微服务,当然中小型企业也会使用Spring Boot,因为Spring boot确实带来很多的便利,而且中小型企业也要为以后公司的壮大做准备。所以使用微服务的场景:1)公司的业务复杂。2)希望能够提高开发效率,节约成本 3)未后续公司公司壮大,架构需要做准备。
1
你为什么不吃药
你为什么不吃药

@阿_毅 公司开发用的是springboot1.5.9,现在spring将springboot升级到2.x版本,springboot给我们的开发确实带来了便捷,2.x版本有什么对我们开发过程中有哪些地方做了升级,对开发有哪些更方便的地方。

阿_毅
阿_毅
springboot2.x的新特性可以到网上搜索下相关的资料,具体内容我就不贴给你看了。spring boot2.0 在监控那块可能和 1.x有些差异,其他的都是一些新的功能。希望有帮助到你。祝你生活愉快。
1
Yalong
Yalong

@阿_毅 我目前还从事的是传统行业的项目管理系统研发,所有功能模块都集中在一个应用中,而且已经出现了同样模块因目标用户不同而功能有所差异的情况,系统发展下去会越来越难以把控,维护成本非常高。现在已经让开发人员和维护人员非常心力憔悴了。因此我初步考虑将其内容按照Spring的方式重新进行处理,旧系统不动,逐步将系统按照业务功能进行划分,按照独立组件的方式进行部署运行,对于同模块不同用户的处理(实际上已经是不一样的模块了,毕竟有差异),要么在组件内通过逻辑判断用户类型而去自动处理(各自处理各自的实现类,接口统一),要么就是哪怕同一个模块,每个类型的用户也都部署它自己的服务组件,相应的,会产生很多很多的服务,中间如何调度,如何管理这个是我目前比较欠缺的地方,因此也需要补充微服务这块的知识。。我想问下我的这个思路或者想法合适吗?或者您有没有更好的建议。

Yalong
Yalong
回复 @Raphael_goh : 嗯,清楚一些了,剩下的问题可能要真正开始做的时候才知道,非常感谢您的解答!
Raphael_goh
Raphael_goh
回复 @Yalong : 如果一定要考虑java渲染的话,建议增加一个纯粹的渲染服务,内部调用API gateway来取数据(或者直接调用服务),然后再渲染页面(相当于和gateway平级的出口服务)。API gateway不要涉及页面处理,不要涉及业务逻辑。单纯的做好转发、鉴权、限流、灰度等等非业务功能即可。
Raphael_goh
Raphael_goh
回复 @Yalong : 第二个问题不需要考虑,引入API gateway的目的就是屏蔽对外的细节,js没必要关心他调用哪个服务。在gateway里根据不同的规则进行转发即可,这样还可以非常容易做到灰度发布的功能。至于前后端的管理,这个看自己的需求,前端做一点业务是没什么问题的,现在前端已经是非常发达的产业了。但是最好不要考虑用java进行页面渲染,全部包给前端就行了,后端只处理业务。
Raphael_goh
Raphael_goh
回复 @Yalong : 我说了,改造的第一步是建立api gateway,对外部屏蔽对内部的细节,也就是说本来直接调用A服务,现在变为 gateway->A。gateway理论上不做任何业务(最多算上权限校验),然后原封不动的把参数传递到A服务。这样,后期把A服务拆分了,那么对外部来说是完全没有任何影响的。
Yalong
Yalong
回复 @Raphael_goh : 第二个问题,目前系统还有很多业务逻辑部分是在前端使用js处理的,是否也要将这部分迁移到后端服务里面。前端尽量保持view层的展示作用,不混入业务相关或者其他功能的代码。我们所说的服务能独立部署、开发指的只是后端吗?前端界面部分如何管理调度各个服务,比如一个管理模块有三个不同的服务(实为同一个但有差异)。如何通过一个模块入口而调用各自的服务。
下一页
0
赤脚小子
赤脚小子
请问springboot2只支持spring5?之前的项目好迁移么?你推荐gradle还是maven跟springboot2搭配呢?
阿_毅
阿_毅
、Spring Boot2是基于Spring5的。 2、之前的项目迁移到Spring Boot要根据项目情况具体分析,可以拆分部分功能做逐步迁移,评估工作量。 3、大部分有使用Spring Boot的互联网公司,都是使用Maven + Spring Boot, 比如美团,美图。gradle我没有用过,不敢做太多评价。谢谢评论,祝你生活愉快……
0
HugoBlack
HugoBlack

@阿_毅springboot2 相对spring boot1有何改变?web flux是会是今后的趋势吗?

阿_毅
阿_毅
1、spring boot2 可以查看以下博文: https://blog.csdn.net/yalishadaa/article/details/79400916 2、Spring Webflux 是新出功能,能不能取代spring mvc还是很难下结论的,新的技术出现总是踩在旧技术的肩膀上推进的,静观其变,祝生活愉快~~~
0
OSC_foNCgp
OSC_foNCgp
是否现在所有系统都应该采用springboot构建微服务,springMVC适用场景
阿_毅
阿_毅
答案肯定不是的,spring boot、ssm、ssh等任何的架构都有其优缺点,包括美团,有好多的部门都是使用ssm架构,只有少数部门正在尝试spring boot。脱离业务的架构都是耍流氓,所以要具体问题具体分析。spring boot和ssm各有优缺点,可以根据项目的情况,分析出各自的优缺点,再权衡采用spring boot还是ssm。
0
brucewang41
brucewang41

@阿_毅 微服务应当如何在不同边界之间实现通信?一直搞不定方案,理解不了。

阿_毅
阿_毅
微服务之间的通信,一般采用RPC进行通信,不清楚你描述的不同边界的含义?祝你生活愉快~~~
0
cyper
cyper

@阿_毅 你们开发spring boot项目都用啥IDE, 那个spring boot改了类是不是要经常重启. 会不会很烦?

阿_毅
阿_毅
1、目前互联网公司,web开发基本都是使用Intellij IDEA进行开发,这是目前主流的开发工具。 2、根据情况而定,可以采用热部署。
阿_毅
阿_毅
回复 @Kevin_1 : 谢谢帮忙回复,祝你生活愉快~~~
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部