CGB2005 0924 SpringCloud03

复习
在这里插入图片描述
上午
在这里插入图片描述
在这里插入图片描述

自我实验 提供者服务器的高可用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果8001宕机
在这里插入图片描述

等待30s(延迟)

在这里插入图片描述

eureka的高可用

在这里插入图片描述
老师测试

增加eureka集群
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动配置加两个参数
在这里插入图片描述

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

纠正 加上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自我实现

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加注释玩玩
在这里插入图片描述

eureka集群高可用分析

这个错误 是互相没完全启动完 等两个eureka完全启动完的话 就没错了

不是选举制 (一一相对的) 不需要考虑奇偶数量
在这里插入图片描述

在这里插入图片描述

修改2,3,4服务器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试开始

当一个 eureka 服务宕机时,仍可以连接另一个 eureka 服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
调用RestTemplate (web消费者)发送一个http协议请求(提供者 ) 然后提供者向我们返回一个json数据? 然后把json转换成java对象来使用

在这里插入图片描述
RestTemplate 请求响应 封装json一步完成

在这里插入图片描述

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

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

RestTemplate 是用来调用其他微服务的工具类,封装了远程调用代码,提供了一组用于远程调用的模板方法,例如:getForObject()、postForObject() 等

主程序
创建 RestTemplate 实例
在这里插入图片描述
在这里插入图片描述
都配置成功
在这里插入图片描述

实现远程调用

写controller层
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

自我测试 ribbon服务器去访问item服务器 ribbon远程调用

脚手架 sp06-ribbon消费者

package cn.tedu.sp06.ribbon.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import cn.tedu.sp01.pojo.Item;
import cn.tedu.sp01.pojo.Order;
import cn.tedu.sp01.pojo.User;
import cn.tedu.web.util.JsonResult;

@RestController
public class RibbonController {
    @Autowired
    private RestTemplate rt;

    @GetMapping("/item-service/{orderId}")
    public JsonResult<List<Item>> getItems(@PathVariable String orderId) {
        //向指定微服务地址发送 get 请求,并获得该服务的返回结果
        //{1} 占位符,用 orderId 填充
        return rt.getForObject("http://localhost:8001/{1}", JsonResult.class, orderId);
    }

    @PostMapping("/item-service/decreaseNumber")
    public JsonResult decreaseNumber(@RequestBody List<Item> items) {
        //发送 post 请求
        return rt.postForObject("http://localhost:8001/decreaseNumber", items, JsonResult.class);
    }

在这里插入图片描述

item商品实现类 提供者

package cn.tedu.sp02.item.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import cn.tedu.sp01.pojo.Item;
import cn.tedu.sp01.service.ItemService;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@Service
public class ItemServiceImpl implements ItemService {

    @Override
    public List<Item> getItems(String orderId) {
        ArrayList<Item> list = new ArrayList<Item>();
        list.add(new Item(1, "商品 1",1));
        list.add(new Item(2, "商品 2",2));
        list.add(new Item(3, "商品 3",3));
        list.add(new Item(4, "商品 4",4));
        list.add(new Item(5, "商品 5",5));
        return list;

    }

    @Override
    public void decreaseNumbers(List<Item> list) {
        for(Item item : list) {
            log.info("减少库存 - "+item);
        }
    }
}

sp01-common接口

package cn.tedu.sp01.service;

import java.util.List;

import cn.tedu.sp01.pojo.Item;

public interface ItemService {
    List<Item> getItems(String orderId);

    void decreaseNumbers(List<Item> list);
}

package cn.tedu.sp01.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Item {
    private Integer id;
    private String name;
    private Integer number;
}

远程调用页面实现

在这里插入图片描述

post 远程调用成功 用的是8001服务器

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

轻测试 如果8001服务器宕机的话

在这里插入图片描述
在这里插入图片描述
好像要等30s
在这里插入图片描述
在这里插入图片描述
配置没错 等待解答 下午会讲到负载均衡
在这里插入图片描述
晚上回看http 刚讲远程调用的时候模块 不知道什么协议

下午

自我实现 添加用户,订单模块远程调用
在这里插入图片描述

都实现完成了

restTemplate 远程调用
在这里插入图片描述

ribbon增强了远程调用的功能 还能重试和负载均衡

在这里插入图片描述

Ribbon负载均衡

在这里插入图片描述

自我实现

在这里插入图片描述

RestTemplate 设置 @LoadBalanced

@LoadBalanced 负载均衡注解,会对 RestTemplate 实例进行封装,创建动态代理对象,并切入(AOP)负载均衡代码,把请求分发到集群中的服务器
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

远程调用+轮询 负载均衡成功

尝试高可用性 8001服务器宕机

在这里插入图片描述
访问商品模块 自动切换至8002服务器
在这里插入图片描述
更新 和拉取 不能实时
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
宕机后 负载均衡的高可用性成功

二、什么是高可用?

首先了解什么是高可用?

这是 CAP 定理是分布式系统的基础,也是分布式系统的 3 个指标:

Consistency(一致性)

Availability(可用性)

Partition tolerance(分区容错性)

那高可用(High Availability)是什么?高可用,简称 HA,是系统一种特征或者指标,通常是指,提供一定性能上的服务运行时间,高于平均正常时间段。反之,消除系统服务不可用的时间。

衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。

举个例子,一些知名的网站保证 49 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如电商网站有赞,服务不可用会造成商家损失金钱和用户。那么在提高可用性基础上同时,对系统宕机和服务不可用会有补偿。

ribbon 重试 容错方式

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

出错情况

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小案例
在这里插入图片描述
初始请求 失败 就更换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自我实现

依赖
在这里插入图片描述

yml配置文件
在这里插入图片描述
主启动类
在这里插入图片描述
在这里插入图片描述

模拟了一段延迟效果
在这里插入图片描述
在这里插入图片描述

实现完成

02服务器的控制层看日志
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

页面及控制台效果

好活 全失败了 一共六次请求
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
再次访问
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
8001 延迟213的 接收到了请求并返回了回去

再玩一次
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
eureka总结 类似ribbon
在这里插入图片描述

克隆项目

在这里插入图片描述
升级虚拟机
导入镜像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值