程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(4)

简析微服务架构(Spring Cloud)

发布于2021-05-29 19:55     阅读(976)     评论(0)     点赞(8)     收藏(4)


参考网上的开源你项目,自己开发一个《在线教育系统》,涉及到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



所属网站分类: 技术文章 > 博客

作者:helloworld

链接:http://www.javaheidong.com/blog/article/207053/f9028acd23743defd1b5/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

8 0
收藏该文
已收藏

评论内容:(最多支持255个字符)