springCloud_项目框架搭建

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: springCloud_项目框架搭建

实现跨服务的远程调用(RestTemplate)

业务场景:在返回订单信息数据中显示用户信息
实现思路:基于RestTemplate发起的http请求实现远程调用
1.注册RestTemplate
在order-service的启动类中注册RestTemplate的Bean

 @Bean
 public RestTemplate restTemplate(){
     return new RestTemplate();
 }
AI 代码解读
2.改造OrderController
2.1:注入RestTemplate
@Autowired
private RestTemplate restTemplate;
AI 代码解读
2.2:修改业务代码
    @GetMapping("{orderId}")
    public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
        // 根据id查询订单并返回
        Order order = orderService.queryOrderById(orderId);
        //利用RestTemplate发起http请求查询用户信息
        User user = restTemplate.getForObject("http://localhost:8091/user/" + order.getUserId(), User.class);
        //封装user信息到返回值中
        order.setUser(user);
        return order;
    }
AI 代码解读

提供者和消费者

服务提供者:一次业务中,被其他微服务调用的服务(提供接口给其他微服务) 如上的user微服务
服务消费者:一次业务中,调用其他微服务的服务(调用其他微服务提供的接口) 如上的order微服务

服务A调用服务B,服务B调用服务C,那么服务B是什么角色?
    答案:要看B相对谁而言,一个服务既可以是提供者又可以是消费者,因为提供者和消费者的角色是相对的.
AI 代码解读

Eureka注册中心

在这里插入图片描述

内部协调原理
消费者该如何获取服务提供者具体信息?
    1.服务提供者启动时向eureka注册自己的信息
    2.eureka保存这些信息
    3.消费者根据服务名称向eureka拉取提供者信息

如果有多个服务提供者,消费者该如何选择?
    1.服务消费者利用负载均衡算法,从服务列表中挑选一个
    
消费者如何感知服务提供者健康状态?
    1.服务提供者会每隔30s向eurekaServer发送心跳请求,报告健康状态
    2.eureka会更新记录服务列表信息,心跳不正常会被剔除
    3.消费者就可以拉到最新的信息
AI 代码解读
Eeruka原理
在Eureka架构中,微服务角色有两类
1:EurekaServer: 服务端 注册中心
    记录服务信息
    心跳监控
2:EurekaClient:客户端
    Privider: 服务提供者,案例中的user-service
        注册自己的信息到EurekaServer
        每隔30s向EurekaServer发送心跳
    consumer: 服务消费者 案例中的order-service
        根据服务名称从EurekaServer拉取服务列表
        基于服务列表做负载均衡,选中一个微服务后发起远程调用
AI 代码解读
搭建Eeruka
1.创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
AI 代码解读
2.编写启动类,添加@EnableEurekaServer注解
3.添加application.yml文件,编写下面的配置
server:
  port: 10086 #服务端口
spring:
  application:
    name: eurekaserver #eureka的服务名称
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone:http://127.0.0.1:10086/eureka
AI 代码解读
Eeruka-服务注册
将user-service服务注册到EurekaServer
1.在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
<!--eureka客户端依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
AI 代码解读
2.在application.yml文件,编写下面的配置
spring:
  application:
    name: userservice  #eureka客户端 的服务名称
    
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka
AI 代码解读
将order-service服务注册到EurekaServer 重复上述1、2操作
Eeruka-服务发现
在order-service完成服务拉取
服务拉取基于服务名称获取服务列表,然后对服务类表做负载均衡

1.修改OrderService代码,修改访问的url路径,用服务名代替ip,端口
    String url="http://userservice/user/"+order.getUerId();
2.在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解
    @Bean
    @LoadBalanced /*添加的注解*/
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
AI 代码解读
需要项目代码联系博主.
相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
124 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
Spring Boot 便利店销售系统项目分包设计解析
本文深入解析了基于Spring Boot的便利店销售系统分包设计,通过清晰的分层架构(表现层、业务逻辑层、数据访问层等)和模块化设计,提升了代码的可维护性、复用性和扩展性。具体分包结构包括`controller`、`service`、`repository`、`entity`、`dto`、`config`和`util`等模块,职责分明,便于团队协作与功能迭代。该设计为复杂企业级应用开发提供了实践参考。
51 0
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
32 0
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——使用Logger在项目中打印日志
本文介绍了如何在项目中使用Logger打印日志。通过SLF4J和Logback,可设置不同日志级别(如DEBUG、INFO、WARN、ERROR)并支持占位符输出动态信息。示例代码展示了日志在控制器中的应用,说明了日志配置对问题排查的重要性。附课程源码下载链接供实践参考。
76 0
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
171 70
|
5天前
|
Spring框架的学习与应用
总的来说,Spring框架是Java开发中的一把强大的工具。通过理解其核心概念,通过实践来学习和掌握,你可以充分利用Spring框架的强大功能,提高你的开发效率和代码质量。
56 20
深入理解 Spring Boot 项目中的分页与排序功能
本文深入讲解了在Spring Boot项目中实现分页与排序功能的完整流程。通过实际案例,从Service层接口设计到Mapper层SQL动态生成,再到Controller层参数传递及前端页面交互,逐一剖析每个环节的核心逻辑与实现细节。重点包括分页计算、排序参数校验、动态SQL处理以及前后端联动,确保数据展示高效且安全。适合希望掌握分页排序实现原理的开发者参考学习。
43 4
两种Spring Boot 项目启动自动执行方法的实现方式
在Spring Boot项目启动后执行特定代码的实际应用场景中,可通过实现`ApplicationRunner`或`CommandLineRunner`接口完成初始化操作,如系统常量或配置加载。两者均支持通过`@Order`注解控制执行顺序,值越小优先级越高。区别在于参数接收方式:`CommandLineRunner`使用字符串数组,而`ApplicationRunner`采用`ApplicationArguments`对象。注意,`@Order`仅影响Bean执行顺序,不影响加载顺序。
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
第二届开放原子大赛 Spring AI Alibaba 应用框架挑战赛决赛于 2 月 23 日在北京圆满落幕。
166 24
Spring框架初识
Spring 是一个分层的轻量级开源框架,核心功能包括控制反转(IOC)和面向切面编程(AOP)。主要模块有核心容器、Spring 上下文、AOP、DAO、ORM、Web 模块和 MVC 框架。它通过 IOC 将配置与代码分离,简化开发;AOP 提供了声明性事务管理等增强功能。
101 21
Spring框架初识
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等