传统的单体式架构系统,SSH、SSM等MVC模式架构;大家都很熟悉了。也是逐渐被淘汰的一些陈旧的技术了,这类系统的共通点是:整个系统打包成一个应用程序,测试部署上线。一旦业务量扩大到,整个系统没法容纳和承受它的压力时;就会出现各种各样的问题,如:高并发带来的服务器崩溃,线程堵塞,响应缓慢等。严重影响了公司的业务和发展;为了在技术上解决此类问题,以至于,出现了目前流行的分布式微服务技术。
一、Spring Cloud简介
1、首先,大家熟悉的Spring FrameWork,它是一个大家族,是开源的Java/Java EE全功能栈(full-stack)的应用程序框架。它为开发者们提供了一个简易的开发方式,从而避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
Spring Cloud是一系列的基于SpringBoot框架的有序集合。
一张图解释Spring、Spring Boot、Spring Cloud之间的关系,如下:
2、Spring Cloud的组成和技术栈
常用项目简介:
Spring Cloud Config 是配置管理工具包,让你可以把配置放到远程服务器,几种化管理集群配置,目前支持本地存储,Git以及Subversion。
Eureka 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。
Hystrix 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。
Spring Cloud Bus 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
Spring Cloud Data Flow 大数据操作工具,作为Spring XD的替代产品,它是一个混合计算模型,结合了流数据与批量数据的处理方式。
SpringCloud很有可能成为未来微服务架构的标准框架。 约定优于配置 开箱即用、快速启动 适用于各种环境 轻量级的组件 组件支持丰富,功能齐全 选型中立
文档较少,国内研究并不成熟,相对国外较为火热,社区活跃度高。除了大型互联网公司外,很多中小企业还是采用传统单体式架构技术。
二、简单Spring Cloud微服务项目
1、Spring Cloud微服务项目介绍
介绍完了Spring Cloud相关的知识,大概对微服务技术有了整体的了解;接下来,简单介绍一下Spring Cloud微服务项目的整体构建和简单步骤。
不同于,传统单体式架构系统。分布式服务,是基于繁杂的业务,拆分成各个不同模块子系统服务负责各自模块的业务处理;所有子模块系统不同业务组成的整体服务完成整个系统链路的业务服务。
基本架构设计原则:
开发工具
个人建议使用:Intellij idea -- 这款ide相信很多也使用过,及其简便功能强大;关键是开发SpringCloud项目时,需要使用Maven(或Gradle)进行本地仓库jar中心的建立,然后使用STS你会发现开发过程中相当的卡,并且maven缓存严重。因此,很多人弃之不用。
三、Spring Cloud项目层次结构
1、项目层次机构
以idea为例,各模块的项目层次结构大同小异。
src目录下,是项目的.java源文件夹。resource目录,用来存放配置信息文件静态资源以及数据库mapper.xml文件(因人而已)。test目录,用于存放单元测试的类文件。target目录,是程序编译打包后存放jar包的位置。pom.xml文件,maven管理的配置文件。
2、访问地址
由于,小编的项目是集成了swagger-ui可视化界面;所以,当启动项目后可输入类似:http://127.0.0.1:8083/swagger-ui.html ;直接打开了项目的swagger接口地址,简洁明了的看到各个接口URL和参数等。具体操作和界面就不一一详解了,网上教程很多。
四、总结
Spring Cloud是分布式微服务技术界的典型代表,相比其他微服务技术有着更强大的功能。在国内的很多一线互联网公司,作为分布式架构的web项目来说SprigCloud是首选;因此,是时下最为流行和受开发者极力追捧的一项技术。如今发展到2.0版本了,建议Java开发者大家都得掌握。