前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10分钟看懂SpringCloud微服务

10分钟看懂SpringCloud微服务

作者头像
程序大视界
修改2020-08-01 13:07:56
3.8K0
修改2020-08-01 13:07:56
举报
文章被收录于专栏:程序大视界程序大视界
前言

传统的单体式架构系统,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 删除

本文分享自 程序大视界 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 组成
  • 参考英文官网列举的20个主要项目:
  • 相关技术栈
  • 3、优缺点
  • 优点
  • 缺点
    • 官方推荐使用:Spring Tool Suite(STS)-- 它是eclipse对Spring插件的集成版,内置了Spring框架使用起来方便。
    相关产品与服务
    微服务引擎 TSE
    微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档