最近机缘巧合,跟踪了一遍Java生态的Spring相关的开发套件,微服务开发方案,主要包括Spring,Spring Boot,Spring Cloud,Dubbo几块。关键词集中在,微服务,云生态,开源。
我本身不是从事Java语言开发,对Java开发生态知之甚少,借此是一个很好了解Java的机会。
面对一门自己不熟悉的技术领域,今天学习了一种学习方式。从以下几个方面了解。
技术出现的背景
第一点:这个技术出现的背景,初衷和要达到或者要解决什么样的目的
下图是Sping出现的发展史
![](https://img.haomeiwen.com/i5651/7e953e655c81b93b.png)
Pivotal公司
Pivotal 公司的产品有 Spring Boot 、Spring Cloud 、RabbitMQ 等非常著名的开源软件
Pivotal 掌握很多最新前沿的开源技术,公司提供的从云端部署到一整套的大数据解决方案,从开发到平台到提供解决方案到提供咨询,可以说真正依赖技术挣钱的典范。
Spirng Boot,借助领先的Java框架快速构建功能强大的应用和服务。
Spirng Cloud,将经过验证的微服务模式融入您的软件。提供配置存储、服务发现、消息传递等功能。
关于Spring Cloud
实际上Spring Cloud是伴随着微服务的设计理念盛行发展起来的,大环境有云计算,人工智能等大环境,微服务本质上是服务的一种组织方式,在消息总线,SOA基础上发展而来。Spring Cloud全家桶是微服务开发的利器。
学习Spring Cloud免不了涉及到一些架构层面的概念,服务化,消息处理,接口注册消费,网关,分层,熔断降级,分而治之,分布式,云计算。
技术优势和劣势
技术优势和劣势分别是什么,trade-off
Spring Boot技术优势
Spring Boot 的设计理念是什么呢?它就是约定优于配置(convention over configuration)。
Spring Boot实际上是框架的集合。直接可以在线生成项目框架 https://start.spring.io/
Spring Boot 传承于Spring
![](https://img.haomeiwen.com/i5651/995f6afe8cf46e49.png)
Spring Boot 中文资料索引
http://springboot.fun/
Spring Cloud技术优势
以下是Spring Cloud的技术组件图
![](https://img.haomeiwen.com/i5651/e3bc4e153ec59379.png)
通过这张图,我们来了解一下各组件配置使用运行流程:
1、请求统一通过API网关(Zuul)来访问内部服务.
2、网关接收到请求后,从注册中心(Eureka)获取可用服务
3、由Ribbon进行均衡负载后,分发到后端具体实例
4、微服务之间通过Feign进行通信处理业务
5、Hystrix负责处理服务超时熔断
6、Turbine监控服务间的调用和熔断相关指标
Spring Cloud技术劣势及阻力
Spring Cloud是当下开发微服务的生产利器,相比传统的开发模式, Spring Cloud开发复杂性增加,对开发人员的水平,组织架构,和开发测试交付流程都有具体的要求。
如果严格按照微服务的规范,整块业务需要切分为独立的微服务业务领域,边界需要明确。数据库方面也倾向于独立,与应用保持1:1关系。这些变动无疑是对业务是有冲击的,技术的变革,业务的冲击,在公司推广的时候就会遇到阻力,技术决策者能否拥抱这项技术,ROI是否可见都是挑战。
总结
新的生产力工具肯定会被普及,咨询了几个Java朋友,所在公司是否引入了Spring Cloud和Spring Boot,答案是Spring Boot都在用,Spring Cloud只是理论上接触,并未深入实践。从我整理的资料来分析,Spring Boot和Spring Cloud的普及只是时间问题。
模块的构建,Java是借助Maven实现仓库的包管理和远程下载,本地编译构建,类似于PHP的composer,NodeJs的npm。直接从Github相关的仓库源下载。
另外开源共享精神的确能够让项目和产品产生强大的生命力。
Spring相关的资料和见解大多学习于公众号和专栏《纯洁的微笑》,作者是一直从事于Java开发的从业者,目前是自由职业,在我看来作者是一个执着的职业写手,坚定的技术高手,值得推荐。
网友评论