一、微服务架构

1、微服务架构简介

  1.1、分布式:不同的功能模块部署在不同的服务器上,减轻网站高并发带来的压力。

  1.2、集群:多台服务器上部署相同应用构成一个集群,通过负载均衡共同向外提供服务。

  1.3、微服务:微服务架构模式就是将web应用拆分为一系列小的服务模块,这些模块可以独立地编译、部署,并通过各自暴露的API接口通讯,共同组成一个web应用。

  1.4、SpringCloud是基于SpringBoot的一整套微服务框架,提供了一系列可配置的组件,如配置管理服务发现负载均衡熔断器断路器智能路由微代理控制总线全局锁决策竞选分布式会话集群状态管理等。

2、微服务的特点

  • 单一职责:每一个服务模块都对应单一的业务实现
  • 微:服务拆分的颗粒度很小
  • 面向服务:每个服务对外仅暴露服务接口API即可,不关心服务的技术实现,与技术、语言和平台无关
  • 自治:服务间互相独立、互不干扰
    • 团队独立
    • 技术独立:提供Rest接口,面向服务即可
    • 前后端分离
    • 数据库分离:每个服务使用自己的数据源
    • 部署独立:每个服务都是独立的组件,可复用,可替换,降低服务间的耦合

3、三者的关系

微服务是一种结构理念,设计原则,提供理论指导;

Spring Boot专注于快速、方便集成的单个微服务个体,可以基于Spring Boot快速开发单个微服务;

Spring Cloud是一个基于Spring Boot实现的服务工具治理包,专注于全局的服务治理框架。

二、Spring Cloud

1、Spring Cloud组件架构

上图中各组件的组件和运行流程如下:

    • 所有请求都通过API网关来访问内部服务;
    • 网关接受请求后,从注册中心获取可用服务模块;
    • 由Ribbon进行负载均衡后,分发到后台的具体实例;
    • 各个服务模块之间通过Feign进行通信处理业务;
    • Hystrix负责处理服务超时熔断;
    • Turbine监控服务间的调用和熔断相关指标。

再来看一个具体实例上的Spring Cloud服务流程:

2、Spring Cloud组件简介

2.1、主要组件简介

  • Eureka,服务注册中心
  • Zuul,API服务网关
  • Config,分布式配置中心,支持本地仓库、SVN、Git、Jar包内配置等模式
  • Dashboard,Hystrix仪表盘,监控集群模式和单点模式,其中集群模式需要收集器Turbine配合
  • Ribbon,客户端负载均衡
  • Feign,声明式服务调用
  • Bus,消息总线

2.2、组件主要功能

Eureka和Ribbon,一个注册服务,一个消费服务。

  Hystrix,为了优化Ribbon,防止整个微服务架构因为某个服务节点的问题导致崩溃,起到保险丝的作用。

Dashboard,给Hystrix统计和展示用,而且监控服务节点的整体压力和健康情况。

  Turbine,集群收集器,服务于Dashboard。

Zuul,加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点IP端口信息,加强安全保护。

Config,为了解决所有微服务各自维护各自的配置,设置一个统一的配置中心,方便修改配置。

  Bus是因为config修改完配置后各个结点都要refresh才能生效实在太麻烦,所以交给bus来通知服务节点刷新配置的。

3、SpringCloud全家桶

  1. 首先为了提供微服务之间的发现和注册,需要服务注册中心提供注册与发现功能,采用Eureka组件
  2. 消费者从注册中心拿到服务提供者的注册地址信息列表,为了从中选择一个提供方,避免流量集中在某台机,需要客户端负载均衡组件Ribbon
  3. 消费者得到具体提供方的地址信息后,发起远程调用,通过声明式调用组件Feign,将远程RestFul调用封装成接口调用。
  4. 在微服务架构中,为了避免某个服务挂掉后引起服务雪崩,以及做到服务端失败后快速响应,提供了服务熔断以及降级机制Hystrix组件
  5. 为了对外屏蔽内部服务调用细节,在最前沿加入网关组件,提供流量控制、身份鉴别、负载均衡等安全防护功能,采用API网关Zuul组件
  6. 随着系统访问量的增加,为避免单点的注册中心成为系统性能瓶颈,注册中心采用Eureka集群方式部署。
  7. 随着系统扩大,Eureka集群的部署以及服务模块的增多,每个模块维护各自的配置信息,复杂且容易出错,引入配置中心SpringCloud Config组件,提供统一的配置信息管理。
  8. 为了避免每次配置信息的变更都需要重启服务才能生效,引入消息总线Bus组件,提供无需重启、实时刷新配置信息等功能。

后续也会按照这个顺序逐个介绍各组件,以及各组件demo的开发搭建,最终完成一个SpringCloud全家桶demo......

【Spring Cloud】全家桶介绍(一)的更多相关文章

  1. Spring Cloud全家桶主要组件及简要介绍

    一.微服务简介 微服务是最近的一两年的时间里是很火的一个概念.感觉不学习一下都快跟不上时代的步伐了,下边做一下简单的总结和介绍. 何为微服务?简而言之,微服务架构风格这种开发方法,是以开发一组小型服务 ...

  2. 【转载】Spring Cloud全家桶主要组件及简要介绍

    https://blog.csdn.net/xlgen157387/article/details/77773908

  3. Vue全家桶介绍

    一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...

  4. Spring Cloud Alibaba-MyShop-项目介绍

    本节视频 [视频]Spring Cloud Alibaba-MyShop-项目介绍 开发环境 操作系统:Windows 10 Enterprise 开发工具:Intellij IDEA 数据库:MyS ...

  5. Spring Cloud 入门概括介绍

    出处: 拜托!面试请不要再问我Spring Cloud底层原理 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring ...

  6. SpringCloud全家桶介绍及手绘架构

    文章目录 概述 一.业务场景介绍 二.Spring Cloud核心组件:Eureka 三.Spring Cloud核心组件:Feign 四.Spring Cloud核心组件:Ribbon 五.Spri ...

  7. Vue 全家桶介绍

    Vue有著名的全家桶系列,包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https: ...

  8. spring cloud之简单介绍

    以下是来自官方的一篇简单介绍: spring Cloud provides tools for developers to quickly build some of the common patte ...

  9. spring cloud 微服务介绍(转)

    一.理解微服务   我们通过软件架构演进过程来理解什么是微服务,软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1. 单体架构 1.1 特点(1)所有的功能集成在一个项目工程 ...

随机推荐

  1. 树莓派4B安装docker-compose(64位Linux)

    准备工作 树莓派4B已装好64位Linux,并且装好了19.03.1版本的Docker,具体的安装步骤请参考<树莓派4B安装64位Linux(不用显示器键盘鼠标)> 安装docker-co ...

  2. Android嵌入式开发初学者的几个注意点

    一:首先你必须了解ARM平台 Android 移植与驱动核心开发,当然也可以是X86和其他的平台,不过其他平台的Android智能终端开发并不是很多. Android嵌入式智能操作系统是基于Linux ...

  3. LCX使用心得

    最近在搞内网渗透,碰到 端口转发&边界处理 的时候,我们就可以借助一些小工具了,这类工具有很多,这里主要说明lcx的用法. lcx是个很老的端口转发工具,而它的使用也很简单.不过想要把lcx玩 ...

  4. python正则表达式字符记录

    代码 功能 . 匹配任意1个字符(除了\n) [] 匹配[]中列举的字符 \d    匹配数字,即0-9 \D   匹配非数字, 即不是数字 \s 匹配空白,即空格,tab键 \S 匹配非空白 \w ...

  5. vs加调试代码的正确姿势

    为了方便,我们会在系统中加入一些调试代码,比如自动登录,这样会省掉很多精力时间,但用的姿势不对, 第一重姿势:打包注释 我看一些人在vs中加调试代码(比如自动登录),然后打包的时候注释掉,这样操作是省 ...

  6. 大数据处理中的Lambda架构和Kappa架构

    首先我们来看一个典型的互联网大数据平台的架构,如下图所示: 在这张架构图中,大数据平台里面向用户的在线业务处理组件用褐色标示出来,这部分是属于互联网在线应用的部分,其他蓝色的部分属于大数据相关组件,使 ...

  7. 深入理解什么是Java泛型?泛型怎么使用?【纯转】

    本篇文章给大家带来的内容是介绍深入理解什么是Java泛型?泛型怎么使用?有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助. 一.什么是泛型 “泛型” 意味着编写的代码可以被不同类型的对象所 ...

  8. jQuery常用方法(六)-jQuery 工具

    JQuery Utilities 方法说明 jQuery.browser .msie 表示ie jQuery.browser.version 读取用户浏览器的版本信息 jQuery.boxModel ...

  9. wordpress发送邮件

    首先在wordpress内添加SMTP协议的插件,我这里用的是WP Mail SMTP 配置如下 配置完成之后测试一下,一定要测试能否发邮件

  10. jobs后台任务

    前台作业:占据了命令提示符,就是你当前可以操作的作业后台作业:启动之后,释放命令提示符,后续的操作在后台完成 前台——>后台 ctrl+z:把正在前台的作业送往后台,这时作业的状态是暂停. CO ...