小言_互联网的博客

简析微服务架构(Spring Cloud)

266人阅读  评论(0)

参考网上的开源你项目,自己开发一个《在线教育系统》,涉及到Spring Cloud 的一些相关知识,通过查阅资料,写一下自己的理解,如有不当之处,敬请指正,不胜感激!


1.微服务简介

简单来说:

  • 微服务是一种架构风格
  • 把一个项目拆分成独立的多个服务,多个服务是独立运行的,每个服务占用独立进程

1.1 微服务架构和单体结构的区别

  • 耦合度
  1. 单体架构所有的模块全都耦合在一块,代码量大,维护困难。
  2. 微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。
  • 数据库
  1. 单体架构所有的模块都共用一个数据库,存储方式比较单一。
  2. 微服务每个模块都可以使用不同的存储方式(比如有的用redis,有的用mysql等),数据库也是单个模块对应自己的数据库。
  • 开发技术
  1. 单体架构所有的模块开发所使用的技术一样。
  2. 微服务每个模块都可以使用不同的开发技术,开发模式更灵活。

1.2 换种方式理解微服务架构

  • 单体架构:一个会语数外全能的老师,为学生服务,这个老师生病了,那全校听课;
  • 微服务架构:学校有了数学教研组、语文教研组、英语教研组,每个教研组有一群老师负责某科的教学,缺了谁,学校都照样运转。

1.3 常用微服务的开发框架

目前微服务的开发框架,最常用的有以下四个:

  • Spring Cloud(现在非常流行的微服务架构)
  • Dubbo
  • Dropwizard关注单个微服务的开发)
  • Consul(微服务的模块)

2.Spring Cloud 简介

2.1 简介

  1. SpringCloud 并不是一种技术,是很多技术的总称,很多框架的集合;
  2. SpringCloud里面有很多框架(技术),使用SpringCloud里面的这些框架实现微服务的操作;
  3. 使用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)

  1. 每个教研组就是一个微服务集群,注册中心存放这个教研组老师名单的地方,学生们要先访问这个注册中心获取教师名单,再去访问老师。

2.3 Spring Cloud 调用接口的过程

  • Feign – 服务调用
  1. 定义和实现依赖服务接口的定义。在Spring Boot中绑定服务提供发的接口
  • Hystrix
  1. 熔断处理机制 Feign的调用关系,会被Hystrix代理拦截,对每一个Feign调用请求。如果请求判断需要熔断,则Hystrix直接熔断,抛出异常或者使用FallbackFactory返回熔断Fallback结果;如果通过,则将调用请求传递给Ribbon组件。
  2. 简单理解一下:Hystrix 可以当作学校的志愿者,当一个教研组集体罢课以后,学生找不到老师了,这些志愿者及时地告诉来访问的学生,相应的结果,异常信息等,免得大量的学生在学校等待,这些志愿者赶快把等待的学生梳理出去。
  • Ribbon – 负载均衡
  1. 根据服务的服务质量,如平均响应时间,Load等,结合特定的规则,从列表中挑选合适的服务实例,选择好机器之后,然后将机器实例的信息请求传递给Http Client客户端,HttpClient客户端来执行真正的Http接口调用;
  2. 简单理解一下:学生根据负载均衡的方法去访问各自的老师,不至于让集群中的某一个老师累死,也不会让某一个老师太闲。
  • http client
  1. Http客户端,真正执行Http调用根据上层Ribbon传递过来的请求,已经指定了服务地址,则HttpClient开始执行真正的Http请求;
  2. 简单理解一下:分配端口。

转载:https://blog.csdn.net/Kc635908933/article/details/117339428
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场