ServiceMesh--Spring
绕不开的spring
对于Java企业应用,spring是无论如何绕不开的。然而目前我们没有看到spring社区对service mesh的任何回应。因此,如何以正确的姿势在service mesh时代使用spring,需要自己探索。
理论上说,springboot on service mesh有可能成为一个清爽的解决方案。然后路终究是要走一遍才知道是不是那么美好。
###定位
Service Mesh的定位在于微服务,在于”服务间通讯“,在于管理和监控微服务,也就是一般说的”服务治理”。
而Spring是一个巨大的生态体系,模块众多,这些模块除了Spring Cloud作为微服务框架和Service Mesh关系特殊(这个我们将会在下一章中单独谈),其他模块和Service Mesh都不冲突,定位都是完全可以互补的:
Spring Context作为Spring生态最早的模块和系统核心,定位于依赖注入和Bean管理,这是目前Java社区的事实标准。
Spring Boot作为产品级别的”微框架“(注意不是微服务框架),过去几年间也可谓大获成功。
Spring MVC是目前主流的web和Rest开发框架
Spring Data定于为数据访问
其他模块都不一一列举
我们可以看到,除Spring Cloud之外的Spring生态体系和Service Mesh在定位上都不冲突。
从打造一个完整应用的角度看,我们使用Service Mesh只是解决了微服务之间彼此通讯的问题,对于服务本身,并不涉及:Service Mesh和业务实现无关,和数据库无关,和微服务拆分无关,和cache/session无关。
这也就意味着,不管有没有Service Mesh,应用本身该如何开发和实现,理论上不受影响。
现状
让我们回到Spring,在过往的十几年间,对于Java社区,Spring是一道美丽的风景。可以说,Java在企业开发市场的成功,Spring的功不可没。
而令人惊喜的是,Spring至今依然保持良好的发展态势,继续在引领Java社区的技术进步。2018年对Spring的使用者和爱好者来说,会是一个很有惊喜和挑战的年份:
- 基于Java8的Spring5于2017年9月发布
- 同样基于Java8和Spring5的Spring Boot2即将在2月底发布1.0 RELEASE版本
- 不出意外基于Spring5/Spring Boot2的Spring Cloud2也会在今年发布
Spring 5/Spring Boot 2终于开始支持Java8特性,带来响应式编程,函数式web框架,Kotlin支持,JUnit 5支持等。其中,响应式编程的全面引入意义深远。
从目前发布情况看, Spring 5/Spring Boot 2继续保持了Spring一贯的品质和作风,值得拥有,不容错过。
清爽搭配
最近这几年,微服务和容器这两个新兴技术,堪称绝配。而在微服务领域,我个人非常看好这样一个的搭配:Spring Boot + Service Mesh。之前我甚至连口号都准备了一个:”Spring On Service Mesh”,简称”Spring Mesh”。
在Service Mesh搞定服务间通讯的诸多复杂度之后,带来的好处就是让应用可以回归业务:开发人员的关注点可以更多的聚焦于业务逻辑实现和应用自身的管理。而如何实现单机模式的业务应用,这正是Spring Boot最擅长的领域。
Spring Boot + Service Mesh这对组合的清爽之处在于:
Spring Boot大幅简化了应用本身开发的工作,发力于应用之”内”
Service Mesh大幅简化了服务间通讯开发的工作,发力于应用之”外”
两者结合,就是”内外兼修”,可以相互支撑而又能互不越界。同时,两者的处世哲学都是尽可能的在底层默默的把事情做好,留给上层一个简单清晰的使用方式,而各种强大功能悄无声息的就绪,堪称”低调的奢华”。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wshten@gmail.com
文章标题:ServiceMesh--Spring
本文作者:KevinTen
发布时间:2019-09-08, 00:00:00
最后更新:2019-09-08, 16:31:39
原始链接:http://github.com/kevinten10/2019/09/08/Cloud/servicemesh/Cloud-SM-问题-Spring/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。