简析微服务架构(Spring Cloud)
参考网上的开源你项目,自己开发一个《在线教育系统》,涉及到Spring Cloud 的一些相关知识,通过查阅资料,写一下自己的理解,如有不当之处,敬请指正,不胜感激!
文章目录
- 1.微服务简介
- 1.1 微服务架构和单体结构的区别
- 1.2 换种方式理解微服务架构
- 1.3 常用微服务的开发框架
- 2.Spring Cloud 简介
- 2.1 简介
- 2.2 Spring Cloud 相关基础服务组件
- 2.3 常用注册中心
- 2.3 Spring Cloud 调用接口的过程
1.微服务简介
简单来说:
- 微服务是一种架构风格
- 把一个项目拆分成独立的多个服务,多个服务是独立运行的,每个服务占用独立进程
1.1 微服务架构和单体结构的区别
- 耦合度
- 单体架构所有的模块全都耦合在一块,代码量大,维护困难。
- 微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。
- 数据库
- 单体架构所有的模块都共用一个数据库,存储方式比较单一。
- 微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。
- 开发技术
- 单体架构所有的模块开发所使用的技术一样。
- 微服务每个模块都可以使用不同的开发技术,开发模式更灵活。
1.2 换种方式理解微服务架构
- 单体架构:一个会语数外全能的老师,为学生服务,这个老师生病了,那全校听课;
- 微服务架构:学校有了数学教研组、语文教研组、英语教研组,每个教研组有一群老师负责某科的教学,缺了谁,学校都照样运转。
1.3 常用微服务的开发框架
目前微服务的开发框架,最常用的有以下四个:
- Spring Cloud(现在非常流行的微服务架构)
- Dubbo
- Dropwizard关注单个微服务的开发)
- Consul(微服务的模块)
2.Spring Cloud 简介
2.1 简介
- SpringCloud 并不是一种技术,是很多技术的总称,很多框架的集合;
- SpringCloud里面有很多框架(技术),使用SpringCloud里面的这些框架实现微服务的操作;
- 使用SpringCloud,必须依赖于SpringBoot技术
2.2 Spring Cloud 相关基础服务组件
- 服务发现——Netflix Eureka (Nacos)
- 服务调用——Netflix Feign
- 熔断器——Netflix Hystrix
- 服务网关——Spring Cloud GateWay
- 分布式配置——Spring Cloud Config (Nacos)
- 消息总线 —— Spring Cloud Bus (Nacos)
2.3 常用注册中心
- Eureka(原生,2.0遇到性能瓶颈,停止维护)
- Zookeeper(支持,专业的独立产品。例如:dubbo)
- Consul(原生,GO语言开发)
- Nacos
简要说明一下注册中心 Eureka(Nacos):
- 每个教研组就是一个微服务集群,注册中心存放这个教研组老师名单的地方,学生们要先访问这个注册中心获取教师名单,再去访问老师。
2.3 Spring Cloud 调用接口的过程
- Feign – 服务调用
- 定义和实现依赖服务接口的定义。在Spring Boot中绑定服务提供发的接口
- Hystrix
- 熔断处理机制 Feign的调用关系,会被Hystrix代理拦截,对每一个Feign调用请求。如果请求判断需要熔断,则Hystrix直接熔断,抛出异常或者使用FallbackFactory返回熔断Fallback结果;如果通过,则将调用请求传递给Ribbon组件。
- 简单理解一下:Hystrix 可以当作学校的志愿者,当一个教研组集体罢课以后,学生找不到老师了,这些志愿者及时地告诉来访问的学生,相应的结果,异常信息等,免得大量的学生在学校等待,这些志愿者赶快把等待的学生梳理出去。
- Ribbon – 负载均衡
- 根据服务的服务质量,如平均响应时间,Load等,结合特定的规则,从列表中挑选合适的服务实例,选择好机器之后,然后将机器实例的信息请求传递给Http Client客户端,HttpClient客户端来执行真正的Http接口调用;
- 简单理解一下:学生根据负载均衡的方法去访问各自的老师,不至于让集群中的某一个老师累死,也不会让某一个老师太闲。
- http client
- Http客户端,真正执行Http调用根据上层Ribbon传递过来的请求,已经指定了服务地址,则HttpClient开始执行真正的Http请求;
- 简单理解一下:分配端口。
简析微服务架构(Spring Cloud)相关推荐
- 全网最全微服务架构—Spring Cloud详解,没有比这更详细的了!
原文地址: https://blog.51cto.com/14570694/2482244 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景 ...
- SpringCloud微服务架构,Spring Cloud 服务治理(Eureka,Consul,Nacos),Ribbon 客户端负载均衡,RestTemplate与OpenFeign实现远程调用
什么是SpringCloud 微服务架构 • "微服务"一词源于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到 http://mar ...
- 微服务架构spring cloud - 分布式配置中心config(七)
1.什么是spring-cloud-config 用来为分布式系统中的基础设施和微服务应用提供集体化的外部配置支持,它分为服务端和客户端.服务端也就是config服务,客户端就是其他的微服务. spr ...
- 微服务架构Spring Cloud和Dubbo 还有EDAS
现在 分布式项目 不用dubbo 都不好意思开口说架构. 出去面试 分布式服务必谈dubbo: 近几年来了 Spring Cloud; 然后最近 发现 阿里云推出了 EDAS,为你的dubbo服务安个 ...
- 微服务架构spring cloud - gateway网关限流
1.算法 在高并发的应用中,限流是一个绕不开的话题.限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击. 一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池.线程池). ...
- 微服务等于Spring Cloud?一文告诉你微服务到底是什么
作者:TIM XU 原文:https://xiaoxubeii.github.io/articles/microservices-architecture-introduction/ 1 微服务初探 ...
- 微服务等于Spring Cloud?了解微服务架构和框架
作者:TIM XU 来源:https://xiaoxubeii.github.io/articles/microservices-architecture-introduction/ 微服务初探 什么 ...
- 微服务等于 Spring Cloud?了解微服务架构和框架
点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 8:55 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | J ...
- 十年架构师带你详解微服务:Spring Cloud原理及核心
研究了一段时间Spring Boot了准备向Spring Cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Cloud从技术架构上降低了对大型系统 ...
最新文章
- MySQL数据库之索引的应用
- [Head First设计模式]山西面馆中的设计模式——观察者模式
- Android博客文章整理
- 尴尬君正,是如何被“创新”带到沟里去的?
- flex 修改生成html,CSS Flex –动画教程
- 7.王道考研数据结构-队列
- (转)fiddler使用简介--其二
- 前端学习---移动端vue开发踩坑记
- python根据经纬度算距离 怎么输出_python根据经纬度计算距离示例
- 一个稳定、快速的云服务器——萤光云
- 修改封装系统的默认壁纸、锁屏和OEM信息
- Java FTP下载文件
- scikit-learn中的KMeans聚类实现
- HTML5常用的文本标签及css字体样式属性
- 分数段统计函数c语言,Excel 五个函数统计学生期末考试分数段
- Ubuntu16.04配置deeplabv3+的pytorch版本
- 网络趣事 ❀ 为什么人们喜欢机械键盘
- SGX初始化中ELF文件解析
- SQL Server数据库入门学习
- watermark-removal: 一款超赞的开源图片去水印解决方案