栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

微服务学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微服务学习笔记

第一天:微服务(20220321)

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

01.微服务远程调用 1.注册RestTemplate,在order-servcie中的OrderApplication中注册RestTemplate
package cn.itcast.order;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
    
    
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }


}
2.服务远程调用RestTemplate,修改order-service中的OrderService的queryOrderById方法:
 @Resource
    private OrderMapper orderMapper;

    @Resource
    private RestTemplate restTemplate;

    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        String url = "http://localhost:8081/user/"+order.getUserId();
        //2.查询用户
        User user = restTemplate.getForObject(url, User.class);
        //3.封装user信息
        order.setUser(user);
        // 4.返回
        return order;
    }

02.服务调用关系

服务提供者:暴露接口给其他微服务调用服务消费者:调用其他微服务提供的接口提供者与消费者的角色是相对的一个服务可以同时是服务提供者和服务消费者


03 Eureka注册中心

在Eureka架构中,微服务角色有两类:

EurekaServer:服务端,注册中心

记录服务信息心跳监控 EurekaClient:客户端

Provider:服务提供者。例如案例中的user-service

注册自己的信息到EurekaServer每间隔30s向Eureka发送心跳 consumer:服务消费者。例如案例中的order-service

根据服务名称从EurekaServer中拉取服务列表基于服务列表做负载均衡,选中一个微服务后发起远程调用 搭建EurekaServer(20220322)

引入eureka-server依赖添加@EnableEurekaServer注解在application.yml中配置Eureka地址服务注册

引入eureka-client依赖在application.yml中配置Eureka地址 服务发现

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


04 Ribbon负载均衡

- 规则接口是IRule
- 默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询

设置ribbon负载均衡的两种方式:

代码方式:在order-service中的OrderApplication类中,定义一个新的Rule:
(配置灵活,但修改时需要重新打包发布)

    @Bean
   public IRule randomRule(){
       return new RandomRule();
   }

配置文件方式:在order-service中的application.yml中,添加新的配置:
(直观、方便 - 无需重新打包发布,但是无法做全局配置)

userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
 ribbon:
   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 
Ribbon饥饿加载
ribbon:
  eager-load:
    enabled: true
    clients: userservice
      #- userservice  多个服务
      #- xxservice

05 Nacos注册中心

服务搭建:

下载安装包解压运行startup.cmd -m standalone(单机启动) Nacos服务注册或发现

引入nacos.discovery依赖配置nacos地址spring.cloud.nacos.server-addr:localhost:8848 Nacos服务分级模型

Nacos服务分级存储模型

一级是服务,例如userservice二级是集群,例如杭州或上海三级是实例,例如杭州机房某台部署了userservice的服务器 如何设置实例的集群属性

修改application.yml文件,添加spring.cloud.nacos.discovery.cluster-name属性(配置集群)
Nacos环境隔离

namespace用来做环境隔离每个namespace都有唯一ID不同namespace下的服务不可见 Nacos与eureka的共同点

都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测 Nacos与Eureka的区别

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号