10分钟看懂SpringCloud微服务

简介: 传统的单体式架构系统,SSH、SSM等MVC模式架构;大家都很熟悉了。也是逐渐被淘汰的一些陈旧的技术了,这类系统的共通点是:整个系统打包成一个应用程序,测试部署上线。一旦业务量扩大到,整个系统没法容纳和承受它的压力时;就会出现各种各样的问题,如:高并发带来的服务器崩溃,线程堵塞,响应缓慢等。严重影响了公司的业务和发展;为了在技术上解决此类问题,以至于,出现了目前流行的分布式微服务技术。

前言


传统的单体式架构系统,SSH、SSM等MVC模式架构;大家都很熟悉了。也是逐渐被淘汰的一些陈旧的技术了,这类系统的共通点是:整个系统打包成一个应用程序,测试部署上线。一旦业务量扩大到,整个系统没法容纳和承受它的压力时;就会出现各种各样的问题,如:高并发带来的服务器崩溃,线程堵塞,响应缓慢等。严重影响了公司的业务和发展;为了在技术上解决此类问题,以至于,出现了目前流行的分布式微服务技术。


一、Spring Cloud简介


   1、首先,大家熟悉的Spring FrameWork,它是一个大家族,是开源的Java/Java EE全功能栈(full-stack)的应用程序框架。它为开发者们提供了一个简易的开发方式,从而避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。

Spring Cloud是一系列的基于SpringBoot框架的有序集合。

一张图解释Spring、Spring Boot、Spring Cloud之间的关系,如下:

8dee626796dc515a9cf3eef7a63a1419_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.jpg


  •      Spring是一个轻量级的Java开发框架,使用基本的JavaBean代替EJB。
  • SpringBoot是由Pivotal团队提供的全新框架,用来简化新Spring应用的初始搭建和开发过程。开发人员无需定义样板化配置。    
  • SpringCloud是一系列框架的有序集合,它把好的东西集合到一起,这就是所谓的集大成者。同时它利用SpringBoot的开发便利性巧妙的简化了分布式系统基础设施的开发。

2、Spring Cloud的组成和技术栈

组成

参考英文官网列举的20个主要项目:

246f31e602f672da57a64f899ec98972_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.jpg

常用项目简介:

   Spring Cloud Config 是配置管理工具包,让你可以把配置放到远程服务器,几种化管理集群配置,目前支持本地存储,Git以及Subversion。

   Eureka 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

   Hystrix 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

   Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

   Spring Cloud Bus 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

   Spring Cloud Data Flow 大数据操作工具,作为Spring XD的替代产品,它是一个混合计算模型,结合了流数据与批量数据的处理方式。

相关技术栈

7c25795746462349a15c0b04209d793c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.jpg

优缺点

优点

    SpringCloud很有可能成为未来微服务架构的标准框架。

     约定优于配置

     开箱即用、快速启动

     适用于各种环境

     轻量级的组件

     组件支持丰富,功能齐全

     选型中立

缺点

  文档较少,国内研究并不成熟,相对国外较为火热,社区活跃度高。除了大型互联网公司外,很多中小企业还是采用传统单体式架构技术。


二、简单Spring Cloud微服务项目


1、Spring Cloud微服务项目介绍

介绍完了Spring Cloud相关的知识,大概对微服务技术有了整体的了解;接下来,简单介绍一下Spring Cloud微服务项目的整体构建和简单步骤。

06bd9ddc223cf9e04fe93ce98d8976e4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.jpg

不同于,传统单体式架构系统。分布式服务,是基于繁杂的业务,拆分成各个不同模块子系统服务负责各自模块的业务处理;所有子模块系统不同业务组成的整体服务完成整个系统链路的业务服务。

基本架构设计原则:

  • 每个模块系统独立开发部署测试,互不影响
  • 每个模块拥有自己的一套数据库表(分库分表),禁止跨库访问
  • 每个模块间内部通信,通过Spring Cloud Feign 互相调用
  • 整个系统对外统一接口通信,须经由zuul(API网关)统一处理
  • 所有配置信息统一存放远程配置中心(SpringCloudConfig)git仓库
  • 所有业务模块系统服务均注册到服务注册和发现中心(Ereka)
  • 实现前端-后端分离,前端系统程序单独部署,采用RestFul接口形式调用后端接口,实现通信


开发工具

官方推荐使用:Spring Tool Suite(STS)-- 它是eclipse对Spring插件的集成版,内置了Spring框架使用起来方便。

个人建议使用:Intellij idea  -- 这款ide相信很多也使用过,及其简便功能强大;关键是开发SpringCloud项目时,需要使用Maven(或Gradle)进行本地仓库jar中心的建立,然后使用STS你会发现开发过程中相当的卡,并且maven缓存严重。因此,很多人弃之不用。


三、Spring Cloud项目层次结构


1、项目层次机构

以idea为例,各模块的项目层次结构大同小异。

3464617ab7d5868b065e4e0b3617ac91_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

b5f69036290ccae0763da869d666fbcd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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是分布式微服务技术界的典型代表,相比其他(如Dubbo【阿里开源】)微服务技术有着更强大的功能。在国内的很多一线互联网公司,作为分布式架构的web项目来说SprigCloud是首选;因此,是时下最为流行和受开发者极力追捧的一项技术。如今发展到2.0版本了,建议Java开发者大家都得掌握。


相关文章
|
Dubbo Java 应用服务中间件
SpringCloud微服务简介
SpringCloud微服务简介
548 1
|
SpringCloudAlibaba Java 持续交付
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(一)基础知识+各个组件介绍+聚合父工程创建
1997 1
|
负载均衡 Java 开发者
Spring Cloud:一文读懂其原理与架构
Spring Cloud 是一套微服务解决方案,它整合了Netflix公司的多个开源框架,简化了分布式系统开发。Spring Cloud 提供了服务注册与发现、配置中心、消息总线、负载均衡、熔断机制等工具,让开发者可以快速地构建一些常见的微服务架构。
|
存储 运维 Dubbo
HSF:阿里RPC框架
HSF:阿里RPC框架
5113 0
|
XML 开发框架 Java
springboot和springcloud有哪些区别?
springboot和springcloud区别有: 1、含义不同;2、作用不同;3、使用方式不同;4、特征不同;5、注释不同;6、优势不同;7、组件不同;8、设计目的不同。 其中,含义不同指的是springboot是一个快速开发框架,而SpringCloud是建立在SpringBoot上的服务框架。
3443 4
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
33656 8
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
存储 算法 Java
JVM,关于JVM基础的知识,你确定不了解一下吗?
JVM,关于JVM基础的知识,你确定不了解一下吗?
|
消息中间件 API 调度
RT-Thread记录(九、RT-Thread 中断处理与阶段小结)
RT-Thread 内核部分最后一个点 中断管理,顺带着对前面所学知识做个小结。
793 1
RT-Thread记录(九、RT-Thread 中断处理与阶段小结)
|
Java Maven
maven 打包时包含本地 jar
maven 打包时包含本地 jar
803 0
|
4月前
|
SQL 数据库
多表关联查询入门:LEFT JOIN、INNER JOIN一文搞懂|转行学DB第6天
本文通俗易懂地讲解了数据库多表查询的三种JOIN操作:INNER JOIN(内连接)只返回两表匹配的数据,适用于查询交集数据;LEFT JOIN(左连接)保留左表所有记录并匹配右表数据,适用于查询主表完整信息;RIGHT JOIN(右连接)则保留右表所有记录。