【java、微服务、spring】SpringCloud

服务拆分

1. 不同微服务,不要重复开发相同业务

2.微服务数据独立,不要访问其它微服务的数据库

3.微服务可以将自己的业务暴露为接口,供其它微服务调用

远程调用

提供者与消费者

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)

服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

提供者与消费者角色其实是相对的

一个服务可以同时是服务提供者和服务消费者

RestTemplate

1.在模块中注册RestTemplate

如在order-service中的OrderApplicaiton中编写

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);}/*** Spring Boot中使用RestTemplate,我们通常需要注入它。我们可以通过使用@Bean注解来实现。*/@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

2.发送请求

进入service模块

package cn.itcast.order.service;import cn.itcast.order.mapper.OrderMapper;
import cn.itcast.order.pojo.Order;
import cn.itcast.order.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);String url = "http://localhost:8081/user/" + order.getUserId();User user = restTemplate.getForObject(url, User.class);order.setUser(user);// 4.返回return order;}
}

Eureka

作用

(1)注册服务信息

(2)拉取服务user-service的信息(服务不会挂,有心跳续约,每30秒1次,不跳就剔除)

(3)负载均衡(多个服务端口任意挑一个)

(4)远程调用

1.搭建注册中心

创建eureka-server模块

增加依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

创建EurekaApplication

package org.example.eureka;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}

编写yml文件

server:port: 10086
spring:application:name: eurekaserver #注册的服务名称
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka

搭建结构 

2.注册服务

引入依赖(以user-server模块为例子)

 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>

改写yml(插入、整合)

spring:application:name: userservicer #注册的服务名称
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka

3. 服务拉取(发现)

服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡

1. 修改OrderService的代码,修改访问的url路径,用服务名代替ip、端口:

String url = "http://userservice/user/" + order.getUserId();

2. 在order-service项目的启动类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.cloud.client.loadbalancer.LoadBalanced;
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);}/*** Spring Boot中使用RestTemplate,我们通常需要注入它。我们可以通过使用@Bean注解来实现。*/@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
}
负载均衡原理

Robbon负载均衡

 Nacos(2.3.0)

到bin目录执行命令启动:

.\startup.cmd startup.cmd -m standalone

注册服务

1.增加依赖

父模块

<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>

服务模块

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

在yml文件里增加

spring:cloud:nacos:server-addr: localhost:8848

学习笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505191.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

b站小土堆pytorch学习记录——P9-P10 transforms的使用

文章目录 一、前置知识1.torchvision简要介绍2.transforms简要介绍 二、代码 一、前置知识 1.torchvision简要介绍 torchvision 是 PyTorch 提供的一个专门针对计算机视觉任务的软件包&#xff0c;它为用户提供了一系列用于处理图像和视频数据的工具和实用函数。 torchvision…

【C语言结构体】用户自定义类型--结构体,结构体传参,位段,联合体和枚举【图文详解】

欢迎来CILMY23的博客喔&#xff0c;本篇为【C语言结构体】用户自定义类型--结构体&#xff0c;结构体传参&#xff0c;位段&#xff0c;联合体和枚举【图文详解】&#xff0c;感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 前言 上一篇&#xff08;ht…

Java 数组(详细)

目录 一、数组的概述 1. 数组的理解&#xff1a; 2. 数组相关的概念&#xff1a; 3. 数组的特点&#xff1a; 4. 数组的分类&#xff1a; 5.数据结构&#xff1a; 二、一维数组 1. 一维数组的声明与初始化 2. 一维数组元素的引用&#xff1a; 3. 数组的属性&#xff1…

二百二十五、海豚调度器——用DolphinScheduler调度执行Flume数据采集任务

一、目的 数仓的数据源是Kafka&#xff0c;因此离线数仓需要用Flume采集Kafka中的数据到HDFS中 在实际项目中&#xff0c;不可能一直在Xshell中启动Flume任务&#xff0c;一是项目的Flume任务很多&#xff0c;二是一旦Xshell页面关闭Flume任务就会停止&#xff0c;这样非常不…

第17章-文件传输协议

1. 概述 2. FTP协议 2.1 定义 2.2 端口 2.3 数据传输方式 2.4 文件传输模式 3. TFTP协议 3.1 定义&#xff1a; 4. 常用命令 1. 概述 场景&#xff1a;远端主机和本地服务器 2. FTP协议 2.1 定义 FTP(File Transfer Protocol)&#xff1a;文件传输协议&#xff1b;…

jupyter调用envs环境——jupyter内核配置虚拟环境

1.jupyter无法使用envs环境 pycharm的终端打开jupyter notebook&#xff1a; 在kernel下找不到上面的Pytorch_GPU环境&#xff1a; 2.解决方法 在对应的envs环境中安装ipykernel&#xff1a; 将该环境写入jupyter&#xff1a; python -m ipykernel install --user --name Py…

svn介绍 4.0

一、svn介绍&#xff08;版本控制工具&#xff09; 1、svn的定义&#xff1a; svn是一个开放源代码的版本控制系统&#xff0c;通过采用分支管理系统的高效管理&#xff0c;简而言之就是用于多个人共同开发同一个项目&#xff0c;实现共享资源&#xff0c;实现最终集中式个管…

SpringBoot原理-配置优先级(黑马学习笔记)

配置优先级 在我们前面的课程当中&#xff0c;我们已经讲解了SpringBoot项目当中支持的三类配置文件&#xff1a; ● application.properties ● application.yml ● application.yaml 在SpringBoot项目当中&#xff0c;我们要想配置一个属性&#xff0c;可以通过这三种方…

2024年最新腾讯云学生专属的服务器优惠活动申请流程

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

AI之T2I:Stable Diffusion 3的简介、安装和使用方法、案例应用之详细攻略

AI之T2I&#xff1a;Stable Diffusion 3的简介、安装和使用方法、案例应用之详细攻略 目录 Stable Diffusion 3的简介 1、效果测试 官方demo 网友提供 Stable Diffusion 3的安装和使用方法 1、安装 2、使用方法 Stable Diffusion 3的案例应用 1、基础案例 Stable Diff…

【YOLO v5 v7 v8 小目标改进】中心化特征金字塔(CFP) = 特征金字塔 + 显式视觉中心(EVC)+ 全局集中调节(GCR)

中心化特征金字塔&#xff08;CFP&#xff09; 特征金字塔 显式视觉中心&#xff08;EVC&#xff09; 全局集中调节&#xff08;GCR&#xff09; 提出背景中心化特征金字塔&#xff08;CFP&#xff09;CFP 架构图问题&#xff1a;不同尺度的对象检测问题&#xff1a;有限感受…

相纸尺寸和相纸分类解释

相纸分类 高光 高光相纸俗称光面相纸&#xff0c;适用一般的证件用照和生活照片&#xff0c;表面平滑光亮。 绒面 绒面相纸(也称哑光相纸或哑光相纸)&#xff0c;因为绒面革相纸的表面粗糙&#xff0c;所以绒面相纸的质地很好&#xff0c;表面有哑光感&#xff0c;没有反光…