0
点赞
收藏
分享

微信扫一扫

SpringCloudⅠ服务注册与拉取

目录

微服务架构

将单一的应用程序拆分成小的服务,每个服务运行在独立的进程中,服务之间通过轻量级的通信机制相互协调、互相配合。

特征:高内聚低耦合

  1. 单一职责:每个服务对应唯一业务能力
  2. 面向服务:服务对外暴露业务接口
  3. 自治:团队独立、技术独立、数据独立、部署独立
  4. 隔离性强:避免级联问题

项目架构
在这里插入图片描述
自动化部署
在这里插入图片描述

SpringCloud简介

分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体

所用技术组件升级
在这里插入图片描述

结构搭建

  1. 一个服务内包含多个springboot服务
    在这里插入图片描述
  2. 数据库拆分,一个springboot连接一个数据库
    在这里插入图片描述

服务远程调用

我现在要关联查询,数据库是分开的,就得调用另一个服务

通过订单服务向 用户服务发起一个http请求来获取用户信息
在这里插入图片描述

RestTemplate

spring提供了一个RestTemplate,通过它可以发起http请求

  1. 将RestTemplate注入spring容器
    在这里插入图片描述
  2. 在controller注入
@Autowired
    private RestTemplate restTemplate;
  1. 使用restTemplete调用user服务
    在这里插入图片描述

测试成功
在这里插入图片描述

提供者和消费者

在这里插入图片描述
提供和消费是相对的,一个服务既可以是提供者,也可以是消费者

Eureka

作用

  1. 启动的服务都会在eureka-server注册
  2. 消费者使用时会在注册中心拉取服务,并做负载均衡,挑选一个服务后进行远程调用
  3. 服务心跳续约,每隔30秒1次
    在这里插入图片描述
    在这里插入图片描述

服务注册

EurekaServer
  1. 新建一个项目eureka-service
  2. 导入pom依赖
<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 创建启动类
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}
  1. 添加application.yml配置类
server:
  port: 10088
spring:
  application:
    # 服务名称
    name: eurekaserver
eureka:
  client:
    service-url:
      # eureka地址信息:以后集群会用到
      defaultZone: http://localhost:10088/eureka
EurekaClient
  1. 引入pom依赖
<!--eureka客户端-->
<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 加配置
spring:
  application:
    # user服务的服务名称
    name: orderservice
eureka:
  client:
    service-url:
      # eureka地址信息:以后集群会用到
      defaultZone: http://localhost:10088/eureka

服务注册列表
在这里插入图片描述

服务拉取

在这里插入图片描述
总结
在这里插入图片描述

Ribbon

负载均衡流程

在这里插入图片描述

负载均衡策略

在这里插入图片描述

  • 直接轮询
  • 根据服务健壮性轮询
  • 加权轮询
  • 随机
  • 重试

负载均衡策略配置

在这里插入图片描述

饥饿策略

在这里插入图片描述

Nacos

在这里插入图片描述

搭建

  1. https://github.com/alibaba/nacos/tags找到版本下载
  2. 解压到D:\Program Files\nacos
  3. Program Files\nacos\bin
    startup.cmd -m standalone
  4. http://192.168.52.1:8848/nacos/index.html登录
  5. 用户名:nacos 密码:nacos
    在这里插入图片描述

注册服务

  1. 引入父项目pom依赖
<!-- springCloud Alibaba -->
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-alibaba-dependencies</artifactId>
           <version>2.2.5.RELEASE</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
  1. 引入子服务pom依赖
<!-- nacos客户端依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

查看服务
在这里插入图片描述

服务分级存储模型

在这里插入图片描述
配置集群
在这里插入图片描述

服务本不会优先选择本地集群中服务,可以配置;如果本地没有服务,会跨集群访问

配置优先访问本地集群服务:
在这里插入图片描述
可在Nacos界面通过修改权重,调整同一集群下负载均衡;权重从0-1;按比例分配;权重为0,不会被访问(服务平滑升级)

环境隔离

用namespace来做,每个namespace都有唯一id

实现服务隔离,不在一个空间的服务不能互相访问

配置:spring: cloud: discovery: namespace: (命名空间id)

Eureka和Nacos

相同点

  1. 都支持服务注册和服务拉取
  2. 服务提供者会有心跳方式做健康检测

不同点

  1. Nacos支持主动检测:临时实例 心跳模式;非临时实例 主动检测
  2. 临时实例心跳不正常会剔除;非临时不会
  3. 服务列表变更会推送 服务更新提醒
  4. Nacos集群默认为AP模式,集群中有非临时实例采用CP模式;Eureka为AP
举报

相关推荐

0 条评论