当前位置: 首页 > news >正文

4.SpringCloud

1.SpringCloud概述

        Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,集群状态。(用来管理项目)

2.注册中心Eureka

        Spring Cloud Eureka 是对Netflix公司的Eureka的二次封装,它实现了服务治理的功能,Spring Cloud Eureka提供服务端与客户端,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。服务端和客户端均采用Java语言编写。

        服务器将自己的信息(IP、端口号、服务类) 提供给注册中心,然后每个服务器将所有存在注册中心的注册信息保存一份在自己服务器中,从而实现服务器之间的交流

3. 分布式项目搭建

        在一个分布式项目中,通常会采用父项目和子项目的方式来进行模块化开发和管理。父项目用于管理整个项目的共享依赖和配置,而子项目则代表着项目的不同模块或子系统。

3.1 创建父项目

         可以删除父项目中的src,父项目不需要写代码

        在父项目pom.xml中指定打包方式为pom

<packaging>pom</packaging>

3.2 创建子项目

        子项目pom.xml中指定父项目

 <parent>
           <artifactId>springcloud-teach</artifactId>
           <groupId>com.luobei</groupId>
           <version>1.0</version>
</parent>

        父项目pom.xml中指定子项目 

<modules>
            <module>eureka-server</module>
</modules>

        配置yml配置文件

server:port: 8081
spring:application:name: goods   #微服务可以根据微服务的名字自动形成集群,微服务的名字中不要出现下划线
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/    #向这个接口注册instance:instance-id: goods-8081     #指定当前微服务在注册中心中的id

        主启动类上开启 @EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}
}

3.2.1 创建注册中心

        注册中心其实就是一个特殊的子项目,除yml配置不同,其他与别的子项目一致

server:port: 8761
spring:application:name: eureka-server   #微服务可以根据微服务的名字自动形成集群,微服务的名字中不要出现下划线
eureka:instance:hostname: localhostclient:register-with-eureka: false   #是否将当前服务器注册到注册中心fetch-registry: false    #是否将注册列表的信息拉取到本地service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}    #注册中心的接口,其他微服务器通过该接口进行注册

        主启动类上开启@EnableEurekaServer

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

4.微服务调接口

        在微服务架构中,服务之间的通信是通过调用接口来实现的。这些接口可以是 RESTful API、gRPC、消息队列等方式实现的。

4.1 RestTemplate(仅了解)

        属于SpringBoot

        缺点:put、delete请求得不到返回的结果,使用、维护不方便

4.2 openfeign

        OpenFeign 是一个基于 Java 的声明式 HTTP 客户端,通常用于微服务架构中不同服务之间的接口调用。它允许开发者通过注解的方式定义接口,然后由 OpenFeign 自动生成具体的实现。这样可以简化服务之间的通信,让接口调用看起来更像是本地方法调用。

4.2.1 导入依赖

        父项目:

  <dependencyManagement><dependencies><!--openfeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-core</artifactId><version>2.2.6.RELEASE</version></dependency></dependencies></dependencyManagement>

        公共模块:

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

        子项目:

<!--openfeign-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-core</artifactId>
</dependency>

4.2.2 编写接口

        若接口将会被多个微服务调用则写在commons中

@FeignClient(name="GOODS",path="/goods")
public interface FeignGoodsService {@PutMapping("/updateStock")ResponseResult<List<Goods>> del(@RequestBody List<OrderGoodsVo> orderGoodsVoList);
}

        @FeignClient(name = "GOODS",path = "/goods") 中name为被调用微服务的名字,path为路径前缀,将要调用的接口方法的声明、请求方式全部拷贝过来

4.2.3 使用接口

        在需要使用接口的微服务的主启动类上扫描feign接口

@EnableFeignClients(basePackages = "com.luobei.commons.service")

        然后在需要使用的地方注入就行了

@Resource
private FeignGoodsService feignGoodsService;
@Override
public OrderVo add(Integer uid, AddOrderVo orderVo) throws OutOffStockException {ResponseResult<List<Goods>> del = feignGoodsService.del(Arrays.asList(orderGoodsVo));return del;
}
http://www.lryc.cn/news/127173.html

相关文章:

  • OLED透明屏采购指南:如何选择高质量产品?
  • 机器学习编译系列
  • MySQL 数据库巡检系统的设计与应用
  • 工程项目管理系统源码+功能清单+项目模块+spring cloud +spring boot em
  • 前端笔试+面试分享
  • C Language Handout
  • 数据结构——栈(C语言)
  • Linux 内核内存管理 page_address 函数
  • macOS使用ffmpeg与QT进行音视频推拉流
  • ARTS打卡:双指针的尝试
  • JavaWeb-DAO设计模式
  • 重温git和GitHub
  • C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
  • Hi-TRS:骨架点视频序列的层级式建模及层级式自监督学习
  • FPGA 之 xilinx DDS IP相位控制字及频率控制字浅析
  • [鹏城杯 2022]简单包含
  • Required request parameter ‘XXX‘ for method parameter type XXX is not present问题
  • centOS 快速安装和配置 NVIDIA docker Container Toolkit
  • 编程练习(2)
  • 利用Figlet工具创建酷炫Linux Centos8服务器-登录欢迎界面-SHELL自动化编译安装代码
  • Git Cherry-pick使用
  • 红帽8.5 ansible 安装和部署 |(简单版)
  • Visual Studio 2019 c++ 自定义注释 ----doxygen
  • 面试题. 零矩阵
  • 易语言下载器
  • 原生js获取今天、昨天、近7天的时间(年月日时分秒)
  • 最强自动化测试框架Playwright(29)-文件选择对象
  • 【烂尾】K8S部署
  • 电机故障诊断(python程序,模型为MSCNN结合LSTM结合注意力机制模型,有注释)
  • 二叉树(ACM版)