spring cloud 框架搭建

article/2025/10/27 22:37:22

 

一、spring cloud简介

Spring Cloud为开发人员提供了用于快速构建分布式系统中某些常见模式的工具(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调产生了样板模式,并且使用Spring云开发人员可以快速支持实现这些模式的服务和应用程序。

二、spring cloud搭建

1.创建空项目

2.创建注册中心

1.创建模块

2.添加配置

01.添加注解

@EnableEurekaServer

02.添加配置 

server.port #端口

eureka.client.service-url.defaultZone      #指定当前eureka客户端的注册地址
eureka.client.register-with-eureka           #自身 不在向eureka注册
eureka.client.fetch-registry                      #启动时禁用client的注册
eureka.instance.hostname                      #指定应用名称

server.port=8762
eureka.instance.hostname=eureka-server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone= http://${eureka.instance.hostname}:${server.port}/eureka/

03.运行项目,项目启动后根据您自定义的端口到浏览器访问,如出现以下图片内容,注册中心配置搭建完成

三、创建服务提供者

1.创建模块

 2.添加配置

01.添加注解 

 

 02.添加配置

server.port # 服务端口号
spring.application.name #服务名称 - 服务之间使用名称进行通讯
eureka.instance.hostname= localhost
eureka.client.register-with-eureka #是否需要将自己注册到注册中心
eureka.client.fetch-registry #需要搜索服务信息
eureka.client.service-url.defaultZone # 注册中心服务器地址
server.port=8071
spring.application.name=servicesuppot
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.instance.hostname= localhost
eureka.client.service-url.defaultZone= http://${eureka.instance.hostname}:8763/eureka

03.运行提供者服务,项目启动后去到原先注册中心网页上如出现以下图片内容,微服务配置搭建完成

四、创建服务消费者

同上创建另一个微服务项目,添加注解与配置

server.port=8073
spring.application.name=serviceconsume
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.instance.hostname= localhost
eureka.client.service-url.defaultZone= http://${eureka.instance.hostname}:8763/eureka

五、服务与服务之前通讯

1.创建接口

@RestController
@RequestMapping("/Hello")
public class Controller {@RequestMapping("/World")public String helloWorld(String s) {System.out.println("名字为:" + s);return "名字为:" + s;}
}

重起服务

 接口调用成功返回

2.调用服务

01.restTemplate+ribbon

需要一个@Bean的注解自动注入并直接调用restTemplate对象调用服务

@Configuration
public class Beans {//管理简单对象@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}
}

@RestController
@RequestMapping("/Hello")
class ConsumerController {@Autowiredprivate LoadBalancerClient loadBalancerClient;@Autowiredprivate RestTemplate restTemplate;@RequestMapping("/Consumer")@HystrixCommand(fallbackMethod = "errorcode")public String helloWorld(String s){System.out.println("传入的值为:"+s);String forObject = restTemplate.getForObject("http://client001/Hello/World?s=" + s, String.class);return forObject;}

 02.feign

..........................................

六、关于Feign

Feign是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求。Spring Cloud引入 Feign并且集成了Ribbon实现客户端负载均衡调用。

1.添加依赖

 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.1.1.RELEASE</version></dependency>

2.添加注解

@EnableFeignClients

3.创建service

@FeignClient("servicesuppot")
@Service
public interface HollerService {@PostMapping("/Hello/World")public String helloWorld(@RequestParam(value = "s") String s);
}

4.创建接口

@RestController
@RequestMapping("/Hello")
class ConsumerController {@AutowiredHollerService hollerService;@RequestMapping("/say")public String sayHelloWorld(String s){System.out.println("传入的值为:"+s);return hollerService.helloWorld(s)+"   sayHelloWorld";}
}

重启服务,网页再访问

七、关于Ribbon

Ribbon是一个客户端负载均衡器,它提供了对HTTP和TCP客户端的行为的大量控制。实现Feign调用Ribbon负载均衡的服务提供者

1.添加依赖

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

2.添加配置

该配置之前已添加过了,只需要重要关注  @LoadBalanced

@Configuration
public class Beans {//管理简单对象@Bean@LoadBalancedpublic RestTemplate getRestTemplate(){return new RestTemplate();}
}

3.服务测试

服务之间的相互访问完成了 到这里springcloud最基本的环境搭建就完成了,现在我们来创建几个服务来供消费服务去调用

01.启动注册中心服务

02.修改接口

修改一个接口调用端口信息

@RestController
@RequestMapping("/Hello")
public class Controller {@Value("${server.port}")String port;@RequestMapping("/World")public String helloWorld(String s) {System.out.println("名字为:" + s);return "出于端口为"+port+",名字为:" + s;}
}

03.创建多个服务

 04.启动提供服务

启动第一个服务,将prperties配置端口设为:8073 再启动服务

启动第一个服务,将prperties配置端口设为:8072 再启动服务

 启动第一个服务,将prperties配置端口设为:8071 再启动服务

 到注册中心可以看到同一个服务名称开启了三个端口独立运行服务都顺利运行了

 05.启动消费服务

  06.接口访问

 

八、关于Hystrix

Hystrix是供分布式系统使用,提供延迟和容错功能,隔离远程系统、访问和第三方程序库的访问点,防止级联失败,保证复杂的分布系统在面临不可避免的失败时,仍能有其弹性。

意思是:上面我们建立了两个服务eureka-servicesuppot、eureka-serviceconsume ,我们以A,B来称呼。Hystrix 负责监控服务之间的调用情况,当B服务去调用A服务连续多次失败的情况。当调用的服务出现故障时,出现请求堆积、资源占用,慢慢扩散到所有微服务,引发雪崩效应。Hystrix 会进行熔断,调用保护的方法就是使用 Fallback,就可以使用 Fallback 方法的返回值;Hystrix 间隔时间会再次检查故障的服务,如果故障服务恢复,将继续使用服务。

1.添加依赖

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><version>2.2.8.RELEASE</version></dependency>

 2.添加配置

@EnableHystrix

3.创建fallback方法并添加注解

    @HystrixCommand(fallbackMethod = "errorcode")
    public String errorcode(String s){return s+"error request";}

4.调用服务

项目中的两个微服务eureka-servicesuppot【A服务】、eureka-serviceconsume【B服务】,假定B服务要调用A服务,当A服务异常,此时B服务调用A服务的时候,B服务Hystrix 会进行熔断,调用fallback

1.启动服务

 2.调用服务

在这时候会发现此时B服务调用A服务的时候出现故障,就使用 Fallback 方法的返回值;Hystrix 间隔时间会再次检查故障的服务,如果故障服务恢复,将继续使用服务。


http://chatgpt.dhexx.cn/article/P46Cpe4Z.shtml

相关文章

spring boot框架新手搭建

使用maven搭建基本的spring boot框架 先创建一个maven项目&#xff0c;基本流程可查看&#xff1a;https://blog.csdn.net/yuguiyang1990/article/details/8796726 …

spring框架介绍及搭建

介绍 Spring是一个开源框架&#xff0c;它由Rod Johnson创建。它是为了使企业应用开发更简单。Spring使用基本的JavaBean替代以前只可能由EJB完成的事情。 spring主要起到解耦合的作用 spring主要学习AOP和IOC概念 IOC :inverse of control 控制反转或者依赖注入 控制反转&…

spring boot项目框架的搭建

spring boot项目框架的搭建 一、实验目的要求二、实验环境三、实验内容任务一 JDK的安装与配置任务二 maven组件的安装与配置任务三 设置localRepository任务四 测试任务五 eclipse中的设置任务六 spring项目的构建与运行任务七 jsp页面的部署任务八 问题与解决方案 一、实验目…

spring 框架简介与搭建

Spring的一个最大的目的就是使J2EE开发更加容易。同时&#xff0c;Spring之所以与Struts、Hibernate等单层框架不同&#xff0c;是因为Spring致力于提供一个以统一的、高效的方式构造整个应用&#xff0c;并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说S…

SpringBoot框架搭建

SpringBoot是一种开源&#xff0c;轻量级开发框架 为了解决企业级应用开发的复杂性而创建的&#xff0c;简化开发 如何简化开发的&#xff1f; 基于POJO的轻量级和最小侵入性编程通过IOC&#xff0c;依赖注入和面向接口实现松耦合基于切面AOP和管理进行声明式编程通过切面和…

Spring框架详解

简介 Spring5框架 内容介绍&#xff1a; 1.Spring概念 2.IOC容器 3.Aop 4.JDBCTEmplate 5.事物管理 6.Spring5新特性 一.Spring框架概述 1.概述 1.Spring框架是轻量级的JavaEE框架 2.Spring可以解决企业应用开发的复杂性 3.Spring有两个核心部分&#xff1a;IOC和Aop…

如何搭建一个Spring框架超详细

如何搭建一个Spring框架&#xff0c;首先我们要先了解Spring的核心构成部分 1.Spring 的构成 IOC 控制反转 spring 框架最核心的部分 DAO spring 对 访问数据库的支持 MVC spring 对 mvc设计模式的支持 ORM 对象关系映射 (数据库中的数据映射成对象的技术) 也有针对其它的ORM的…

Eclipse搭建Spring框架(绝对成功!)

花了许久才把Spring框架搭建完成&#xff0c;一把辛酸泪。。。。。。。。。。 一、首先下载好全部所需要的工具和jar包 1 安装 springsource-tool-suite: &#xff08;1&#xff09;打开eclipse-help-marketplace search中输入spring&#xff0c;下载 按install&#xff0c;…

Spring框架的介绍以及搭建

Spring框架的介绍以及搭建 1、框架和架构1.1、什么是框架1.2 架构的发展历程 2、Spring2.1、Spring框架的优势 3、IOC3.1、什么是IOC 4、Maven4、搭建Spring4.1、基于导入jar包和xml配置4.2、基于maven和xml配置4.2.1、本地搭建一个maven4.2.2、创建一个基于Maven的项目4.2.3、…

Spring 框架搭建

1 Spring 框架搭建 第一步&#xff1a;新建 Maven 项目、设置项目坐标以及Maven环境&#xff1a; 设置项目的名称和存放的工作空间&#xff1a; 第二步&#xff1a; 调整JDK版本 <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEnc…

Spring框架介绍与搭建

文章目录 1. 简介1.1 什么是Spring1.2 为什么用Spring1.3 Spring5的特性 2. Spring框架核心2.1 IOC&#xff08;控制反转&#xff09;2.2 AOP(面向切面编程&#xff09;2.3 Spring 中 bean 的作用域2.4 Spring 中 bean 生命周期 3. Spring快速搭建3.1 官方提供的搭建方式3.2 使…

Spring框架搭建

Spring是一个轻量级的开源的控制反转&#xff08;IOC&#xff09;和面向切面编程&#xff08;AOP&#xff09;的框架&#xff0c;是很多程序员必须学的一个框架&#xff0c;所有我们使用他的第一个步骤就是导入框架&#xff0c;本文使用的是idea导入。 Spring有以下几个优点&am…

Python模块——glob模块详解

本文大纲 glob模块也是Python标准库中一个重要的模块&#xff0c;主要用来查找符合特定规则的目录和文件&#xff0c;并将搜索的到的结果返回到一个列表中。使用这个模块最主要的原因就是&#xff0c;该模块支持几个特殊的正则通配符&#xff0c;用起来贼方便&#xff0c;这个…

python—glob模块函数(搜索目录文件)

目录 glob函数 iglob函数 glob模块函数用于从目录通配符搜索中生成文件列表&#xff0c;可以快速获取一定格式的文件夹或文件路径的列表。glob匹配模式较少&#xff0c;一共有三种通配符&#xff1a;*、?、[]&#xff0c;属于轻量级。路径分隔符(Unix的/&#xff0c;Windows…

pathlib.Path模块下的glob、rglob,glob模块下的glob、iglob

1、导入所需模块 from pathlib2 import Path import glob2 as gb 2、当前所在路径 # D:\02周报 p Path.cwd()3、比较Path模块中的glob(*)、glob(**)、rglob(*)、rglob(**) # from pathlib2 import Path# D:\02周报 # p Path.cwd()type(p.glob(r"*")) print("P…

python中的glob.glob()(包含详细实例)

在网上搜了半天没搜到满意的解释&#xff0c;最终选择去原英文文档里寻找其释义&#xff0c;具体如下&#xff1a; glob.glob(pathname, *, root_dirNone, dir_fdNone, recursiveFalse) 其功能是返回一个与pathname匹配的路径名列表&#xff08;该列表可以为空&#xff0c;必…

python 的标准库模块glob使用教程,主要为glob.glob()使用与glob.iglob()使用

欢迎大家关注笔者&#xff0c;你的关注是我持续更博的最大动力 原创文章&#xff0c;转载告知&#xff0c;盗版必究 python 的标准库模块glob使用教程&#xff0c;主要为glob.glob函数使用与glob.iglob函数使用 文章目录&#xff1a; 1 glob模块介绍2 glob模块的具体使用2.1 查…

glob.glob()

glob.glob()函数 glob.glob()含有的内容非常少&#xff0c;其功能是查找符合特定规则的文件路径。例如&#xff08;F:/Python/Hello&#xff09;。 功能类似于Windows的文件搜索。 查找文件只用到三个匹配符&#xff1a;" “,”?", “[]”。 " "&#x…

glob函数

查找符合自己要求的文件 glob.glob() 返回一个列表&#xff0c;列表里的元素是符合要求的文件名&#xff08;字符串&#xff09; 三个匹配符&#xff1a; ”*”匹配任意0个或多个字符 ”?”匹配任意单个字符 ”[ ]”匹配指定范围内的字符 例子1&#xff1a; glob.glob(&q…

python 中的 glob.glob()

1. glob方法&#xff1a; glob模块的主要方法就是glob,该方法返回所有匹配的文件路径列表&#xff08;list&#xff09;&#xff1b; 该方法需要一个参数用来指定匹配的路径字符串&#xff08;字符串可以为绝对路径也可以为相对路径&#xff09;&#xff0c;其返回的文件名只…