【Spring Cloud】全家桶介绍(一)
一、微服务架构
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全家桶
- 首先为了提供微服务之间的发现和注册,需要服务注册中心提供注册与发现功能,采用Eureka组件。
- 消费者从注册中心拿到服务提供者的注册地址信息列表,为了从中选择一个提供方,避免流量集中在某台机,需要客户端负载均衡组件Ribbon。
- 消费者得到具体提供方的地址信息后,发起远程调用,通过声明式调用组件Feign,将远程RestFul调用封装成接口调用。
- 在微服务架构中,为了避免某个服务挂掉后引起服务雪崩,以及做到服务端失败后快速响应,提供了服务熔断以及降级机制Hystrix组件。
- 为了对外屏蔽内部服务调用细节,在最前沿加入网关组件,提供流量控制、身份鉴别、负载均衡等安全防护功能,采用API网关Zuul组件。
- 随着系统访问量的增加,为避免单点的注册中心成为系统性能瓶颈,注册中心采用Eureka集群方式部署。
- 随着系统扩大,Eureka集群的部署以及服务模块的增多,每个模块维护各自的配置信息,复杂且容易出错,引入配置中心SpringCloud Config组件,提供统一的配置信息管理。
- 为了避免每次配置信息的变更都需要重启服务才能生效,引入消息总线Bus组件,提供无需重启、实时刷新配置信息等功能。
后续也会按照这个顺序逐个介绍各组件,以及各组件demo的开发搭建,最终完成一个SpringCloud全家桶demo......
【Spring Cloud】全家桶介绍(一)的更多相关文章
- Spring Cloud全家桶主要组件及简要介绍
一.微服务简介 微服务是最近的一两年的时间里是很火的一个概念.感觉不学习一下都快跟不上时代的步伐了,下边做一下简单的总结和介绍. 何为微服务?简而言之,微服务架构风格这种开发方法,是以开发一组小型服务 ...
- 【转载】Spring Cloud全家桶主要组件及简要介绍
https://blog.csdn.net/xlgen157387/article/details/77773908
- Vue全家桶介绍
一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...
- Spring Cloud Alibaba-MyShop-项目介绍
本节视频 [视频]Spring Cloud Alibaba-MyShop-项目介绍 开发环境 操作系统:Windows 10 Enterprise 开发工具:Intellij IDEA 数据库:MyS ...
- Spring Cloud 入门概括介绍
出处: 拜托!面试请不要再问我Spring Cloud底层原理 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring ...
- SpringCloud全家桶介绍及手绘架构
文章目录 概述 一.业务场景介绍 二.Spring Cloud核心组件:Eureka 三.Spring Cloud核心组件:Feign 四.Spring Cloud核心组件:Ribbon 五.Spri ...
- Vue 全家桶介绍
Vue有著名的全家桶系列,包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https: ...
- spring cloud之简单介绍
以下是来自官方的一篇简单介绍: spring Cloud provides tools for developers to quickly build some of the common patte ...
- spring cloud 微服务介绍(转)
一.理解微服务 我们通过软件架构演进过程来理解什么是微服务,软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1. 单体架构 1.1 特点(1)所有的功能集成在一个项目工程 ...
随机推荐
- 从零开始入门 K8s| 阿里技术专家详解 K8s 核心概念
作者| 阿里巴巴资深技术专家.CNCF 9个 TCO 之一 李响 一.什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台.Kubernetes 这个 ...
- jmeter linux压测报错:Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/home/server/ptest/disk_out.jmx'.
1.linux环境jmeter与win环境编写脚本的jmeter版本不一致,版本改为一致 2.脚本中存在中文,去除中文 3.脚本中存在类似于jp@gc - Active Threads Over Ti ...
- day 12 特殊权限
1.suid (set uid) 特殊权限 suid优点: 可以让普通用户执行无法执行的命令 方便 suid缺点: 如果rm 为suid, 无论谁执行该命令,都能删除系统的任何 资源 set uid ...
- 浅谈HDFS(二)之NameNode与SecondaryNameNode
NN与2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 假设存储在NameNode节点的硬盘中,因为经常需要随机访问和响应客户请求,必然效率太低,所以是存储在内存中的 但是,如果存储在 ...
- MyBatis 插件使用-简单的分页插件
目录 1 分页参数的传递 2 实现 Interceptor 接口 2.1 Interceptor 接口说明 2.1 注解说明 2.3 实现分页接口 PageInterceptor 3. 更改配置 4 ...
- HNU_小中初数学学习软件(可视化编程)_结对项目总结与体会
前言 经过将近一周的共同努力,HnuLyx和我终于完成了项目,期间心酸苦辣,受益良多,请允许我一一道来. 问题(需求要求的
- 深度汉化GCompris-qt,免费的幼儿识字软件
1 需求 因为有个小孩上幼儿园了,想开始教他一些汉语拼音和基本的汉字,但通过一书本和卡片又有些枯燥乏味,于上就上网搜索一些辅助认字的应用,还购买了悟空识字APP,在用的过程中发现他设置了很严格的关卡, ...
- 转 Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select ...
- 一起来学Java注解(Annotation)
目录 一. 什么是Annotation 二. Annotation的作用 2.1 编译器使用到的注解 2.2 .class文件使用到的注解 2.3 运行期读取的注解 三. 定义Annotation 3 ...
- ping本地局域网
#!/bin/bash for i in `seq 1 254` do ping -c 1 192.168.192.$i > /dev/null if [ $? -eq 0 ];then ech ...