专栏首页程序大视界10分钟看懂SpringCloud微服务

10分钟看懂SpringCloud微服务

前言

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

一、Spring Cloud简介

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

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

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

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

2、Spring Cloud的组成和技术栈

组成

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

常用项目简介:

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

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

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

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

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

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

相关技术栈

3、优缺点

优点

SpringCloud很有可能成为未来微服务架构的标准框架。 约定优于配置 开箱即用、快速启动 适用于各种环境 轻量级的组件 组件支持丰富,功能齐全 选型中立

缺点

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

二、简单Spring Cloud微服务项目

1、Spring Cloud微服务项目介绍

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

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

基本架构设计原则:

  • 每个模块系统独立开发部署测试,互不影响
  • 每个模块拥有自己的一套数据库表(分库分表),禁止跨库访问
  • 每个模块间内部通信,通过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为例,各模块的项目层次结构大同小异。

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开发者大家都得掌握。

文章分享自微信公众号:
程序大视界

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:尼克
原始发表时间:2018-12-23
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • SA实战 ·《SpringCloud Alibaba实战》专栏开篇!

    今天是2022年清明假期的前一天,前段时间一直有小伙伴问我啥时能出一个SpringCloud Alibaba实战的系列文章。最近一段时间,冰河手上的事情确实是太...

    冰河
  • 微服务架构:搭建网站扫码登录的功能设计

    微信扫码登录大家都是应用比较多的登录方式了,现在大的购物网站像京东、淘宝等都支持使用APP扫码登录网站了。今天就用APP扫码登录网站的实例来举例说明微服务架构的...

    搜云库技术团队
  • 《大型网站系统与Java中间件》读书笔记 (二)

    注:在看这篇文章之前,强烈建议先看看我之前写过的一篇SpringCloud入门文章:外行人都能看懂的SpringCloud,错过了血亏!。看完再回头看这篇文章,...

    Java3y
  • SpringCloud Alibaba开篇:SpringCloud这么火,为何还要学习SpringCloud Alibaba?

    作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了...

    冰河
  • 电商小程序

    【写著说明】以上内容分享给喜欢编程,有梦想的程序员们,希望能够帮助到你们。以上文章属于此公众号原创所有,如需转载请注明出处。

    程序源代码
  • Spring Cloud(二)《服务提供与负载均衡调用 Eureka》

    本章节提供一个基于Eurka的服务注册中心,两个服务提供者之后分别使用Ribbon、Fegin方式进行调用,测试负载均衡。

    小傅哥
  • Feign讲解与应用(文末送书)

    Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HT...

    后端码匠
  • 了解SpringCloud 微服务

    因为 SpringCloud 出现,对微服务技术提供了非常大的帮助,因为 SpringCloud 提供了一套完整的微服务解决方案,不像其他框架只是解决了微服务中...

    高大北
  • Spring Cloud(九)《服务网关Zuul 动态路由与权限过滤器》

    在实际的业务开发中不只是将路由配置放到文件中,而是需要进行动态管理并且可以在变化时不用重启系统就可以更新。与此同时还需要在接口访问的时候,可以增加一些权限验证以...

    小傅哥
  • 微服务架构Day17-SpringCloud

    攻城狮Chova
  • 13-SpringCloud Config

    微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式...

    彼岸舞
  • 微服务之SpringCloud基础

    用户1112962
  • 「 从0到1学习微服务SpringCloud 」06 统一配置中心Spring Cloud Config

    「 从0到1学习微服务SpringCloud 」01 一起来学呀! 「 从0到1学习微服务SpringCloud 」02 Eureka服务注册与发现 「 从0到...

    KEN DO EVERTHING
  • Spring Cloud(八)《服务网关路由 Zuul1》

    为什么会有路由层?因为在微服务架构设计中,往往并不会直接将服务暴漏给调用端,而是通过调用路由层进行业务隔离,以达到不同的业务调用对应的服务模块。

    小傅哥
  • springcloud学习手册-什么是springcloud?

    了解springcloud前先简单了解一下springboot框架。

    程序源代码
  • 8月份Github上最热门的Java开源项目

    https://github.com/xkcoding/spring-boot-demo Star 4779

    Java团长

扫码关注腾讯云开发者

领取腾讯云代金券