68
回答
高手问答第 201 期 — 专为新手准备的一期 Spring Boot 专场
【寻找人气王】邀新用户免费体验华为云服务,百元话费等你拿!   

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 方面的问题向黄文毅@阿_毅 提问,请直接回帖提问。

举报
局长
发帖于2个月前 68回/5K+阅
共有68个答案 最后回答: 2个月前
什么是微服务呢,和restful差不多吗?我是最近才接触spring boot,之前还在学ssh
--- 共有 7 条评论 ---
杨威12138感谢大家的指点 2个月前 回复
阿_毅 回复 @丁富贵 : 理解的很到位,谢谢回复。 2个月前 回复
阿_毅所以我们就使用spring boot 搭建一个又一个微小的服务,对外提供优质的服务,才有微服务这个概念。比如我们可以用spring boot搭建用户服务,对外提供用户相关的接口;用spring boot搭建城市服务,对外提供城市想的接口等等。 2个月前 回复
阿_毅而每个服务的搭建,可以用spring boot搭建,也可以用ssm或者ssh框架搭建。可是有一个问题,如果不同团队使用不同的框架搭建自己的服务,那么之后对所有服务的监控、治理、协调等等,是不是比较麻烦?而且传统的ssm或者ssh框架开发效率相对来说比较低,如果所有的服务都用统一的spring boot来搭建,后续的系统监控、开发效率都有好处。 2个月前 回复
阿_毅以美团app为例,这个App有很多模块:打车、机票、酒店、电影等。一个大型的App不可能只有一个团队在开发,基本都是按照业务拆分成多个模块,比如打车模块、机票/火车票模块、酒店模块等,每个模块都有相关的部门负责。以机票/火车票模块为例,机票模块又分为:火车票、国内机票、国外票等等。我们可以简单的把它分为火车票服务、国内票服务、国外票服务。每个服务对外提供相关的接口为其它模块提供服务。 2个月前 回复

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

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

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

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

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

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

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

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

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

--- 共有 1 条评论 ---
阿_毅微服务之间的通信,一般采用RPC进行通信,不清楚你描述的不同边界的含义?祝你生活愉快~~~ 2个月前 回复
顶部