几张图看懂SpringCloud微服务

认识微服务:

微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发 面向服务:微服务对外暴露业务接口 自治:团队独立、技术独立、数据独立、部署独立 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。

SpringCloud核心组件及关系图解:

Eureka 服务注册中心、Feign 服务调用、Zuul 微服务网关、Hystrix 熔断器、Ribbon 负载均衡;

微服务调用方式:

基于RestTemplate发起的http请求实现远程调用 http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可。

 Eureka注册中心:

        在Eureka架构中,微服务角色有两类: EurekaServer:服务端,注册中心 记录服务信息 心跳监控 EurekaClient:客户端 Provider:服务提供者,例如案例中的 user-service 注册自己的信息到EurekaServer 每隔30秒向EurekaServer发送心跳 consumer:服务消费者,例如案例中的 order-service 根据服务名称从EurekaServer拉取服务列表 基于服务列表做负载均衡,选中一个微服务后发起远程调用。

        搭建EurekaServer :引入eureka-server依赖, 添加@EnableEurekaServer注解, 在application.yml中配置eureka地址 ;

        服务注册: 引入eureka-client依赖, 在application.yml中配置eureka地址;

         服务发现: 引入eureka-client依赖, 在application.yml中配置eureka地址, 给RestTemplate添加@LoadBalanced注解 用服务提供者的服务名称远程调用。

Ribbon负载均衡:

Ribbon负载均衡规则: 规则接口是IRule ,默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询;

负载均衡自定义方式: 代码方式:配置灵活,但修改时需要重新打包发布 配置方式:直观,方便,无需重新打包发布,但是无法做全局配置 ;

饥饿加载:开启饥饿加载, 指定饥饿加载的微服务名称。

Nacos注册中心:

Nacos服务搭建: 下载安装包 解压, 在bin目录下运行指令:startup.cmd -m standalone ;

Nacos服务注册或发现: 引入nacos.discovery依赖, 配置nacos地址spring.cloud.nacos.server-addr。

Nacos注册中心-Nacos服务分级模型:

Nacos服务分级存储模型:

一级是服务,例如userservice ;

二级是集群,例如杭州或上海 ;

三级是实例,例如杭州机房的某台部署了userservice的服务器 ;

如何设置实例的集群属性: 修改application.yml文件,添加spring.cloud.nacos.discovery.cluster-name属性即可。

Nacos与eureka的共同点:
都支持服务注册和服务拉取, 都支持服务提供者心跳方式做健康检测;

 Nacos与Eureka的区别: Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式 ;临时实例心跳不正常会被剔除,非临时实例则不会被剔除; Nacos支持服务列表变更的消息推送模式,服务列表更新更及时; Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式。

猜你喜欢

转载自blog.csdn.net/shugyin/article/details/127467100