Spring Cloud 学习1- 搭建简单的微服务工程

深入理解微服务架构:从零搭建 Spring Cloud 微服务项目 通过本篇文章,你已掌握微服务的基本架构和核心技术,下一步可以深入研究。创建一个 Spring Boot 项目,添加。请求会自动转发到 order-service。等关键技术,助你掌握微服务的核心思想!:服务间解耦,某个服务崩溃不会影响整个系统。,每个服务专注于某个业务功能,并通过。随着互联网业务的不断增长,传统的。会自动将请求均匀分配到多个实例。,将一个应用拆分为多个。:不同微服务可以使用。 阅读详情

一、微服务特点:

 一个简单的微服务工程一般会有三种角色:

  1. 注册中心         在注册中心维护了服务列表
  2. 服务提供方      服务提供方启动的时候会把自己注册到注册中心
  3. 服务消费方      服务消费方启动的时候,把获取注册中心的服务列表,然后调用的时候从这个服务列表中选择某一个去调用。

微服务工程的特点:

  1. 扩展灵活
  2. 每个应用都规模不大
  3. 服务边界清晰,各司其职
  4. 打包应用变多,往往需要借助 CI 持续集成工具

二、简单的微服务工程的搭建

1、创建主工程

我们采用 Maven 的多 Module 结构来构建工程。整体结构如下:

  •  创建springcloud的主工程,用来管理版本。主工程pom.xml 中 jar 包依赖如下:
<!--springcloud 工程是基于 springboot 工程的-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.5.RELEASE</version>
    </parent>
    <!--使用 dependencyManagement 来管理 Spring Cloud 的版本-->
    <dependencyManagement>
        <dependencies>
            <!--在主工程中使用 dependencyManagement 声明 Spring Cloud 的版本,
            这样工程内的 Module 中引入 Spring Cloud 组件依赖时,就不必在声明组件的版本信息
            保证 Spring Cloud 各个组件一致性-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2、注册中心搭建

   Springcloud 中,我们选择 eureka 作为注册中心。

  •  在主工程下创建一个名为 springcloud-eureka 的 Module 作为服务注册中心,并在其 pom.xml 中引入以下依赖。
<!--Eureka 服务端启动器导入-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
  • 在 springcloud-eureka 的resouces 目录下,添加配置文件 application.yml,配置内容:
server:
  port: 8763  # 服务端口号

eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称,
  client:
    register-with-eureka: false #是否注册到eureka  不向注册中心注册自己
    fetch-registry: false #是否从eureka中拉取注册信息  自己就是注册中心,负责维护实例,不需要检索实例。
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #暴露eureka服务的地址

  server:
    #自我保护模式,当出现出现网络分区、eureka在短时间内丢失过多客户端时,会进入自我保护模式,即一个服务长时间没有发送心跳,eureka也不会将其删除,默认为true
    enable-self-preservation: true
    #Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来
    renewal-percent-threshold: 0.85
    #eureka server清理无效节点的时间间隔,默认60000毫秒,即60秒
    eviction-interval-timer-in-ms: 60000
  • 启动类如下:
@SpringBootApplication
@EnableEurekaServer //开启Eureka服务注册功能
public class EurekApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekApplication.class,args);
    }
}

​

 
2、服务提供方


        服务提供方要把服务注册到eureka服务端,所以服务提供方就是 eureka 的客户端,所以需要导入 eureka 客户端的JAR包。

  • 在主工程下创建一个名为 springcloud-provider 的 Module,在其 pom.xml 中引入以下依赖
        <!--web 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入 Eureka Client 的依赖,将服务注册到 Eureka Server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  • application.yml配置文件如下:
spring:
  application:
    name: provider  #微服务名称,对外暴漏的微服务名称, 重要
server:
  port: 8081  # 服务端口号

eureka:
  client: #将客户端注册到 eureka 服务列表内
    service-url:
      defaultZone: http://localhost:8763/eureka/  #注册中心地址
  • 启动类
@SpringBootApplication
@EnableEurekaClient /// 开启客户端功能,本服务会注册到 Eureka Server 注册中心中
public class ProviderApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class,args);
    }
}
  • 我们还需要提供一个接口“/queryuser”实现具体业务,让后面的服务消费方来调用
@RestController
@RequestMapping("/")
public class UserController {

    @RequestMapping("/queryuser")
    public String queryUser(){
        /*业务逻辑*/
        return "服务提供者查到用户两条";
    }
}


3、服务消费方


       pom 和属性配置文件基本上差不多,消费要负责调用服务提供方,所以需要调用客户端。
服务调用的时候就根据服务提供方的服务名称来调用的。

  • 在主工程下创建一个名为 springcloud-consumer 的 Module,在其 pom.xml 中引入以下依赖
        <!--web 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入 Eureka Client 的依赖,将服务注册到 Eureka Server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
  • application.yml配置文件如下:
spring:
  application:
    name: consumer  #微服务名称,对外暴漏的微服务名称, 重要
server:
  port: 8082  # 服务端口号

eureka:
  client: #将客户端注册到 eureka 服务列表内
    service-url:
      defaultZone: http://localhost:8763/eureka/  #注册中心地址
  • 启动类
@SpringBootApplication
@EnableEurekaClient
public class ConsumerApplication {

    @Bean
    @LoadBalanced // 负责均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class,args);
    }
}
  • 服务调用:

服务提供方的名称,再加上服务提供方的接口名就可以完成调用了

@Controller
@RequestMapping("/test")
public class TestController {

    public static final String SERVERNAME = "provider"; //服务提供方名称
    @Autowired
    RestTemplate restTemplate;

    // http//127.0.0.1:8082/test/get
    @RequestMapping("/get")
    @ResponseBody
    public String test(){
        // 服务提供方的名称 provider ,再加上服务提供方的接口名queryuser 就可以完成调用了
        String result = restTemplate.getForObject("http://" + SERVERNAME + "/queryuser", String.class);
        System.out.println(result);
        return  result;
    }
}

4、启动

  • 先启动注册中心后启动其他服务。

        服务提供方和服务消费启动的时候都会往服务注册中心注册服务,eureka 服务端也可以通过
界面查看到服务注册情况:

  •  我们调用消费端的测试路径,可看到已经从服务提供方返回数据。

Spring Cloud微服务多模块架构:父子工程搭建实践 在现代微服务架构中,Spring Cloud提供了一整套工具和技术栈来简化分布式系统的开发。为了更好地组织和管理复杂的微服务项目,使用 Maven 多模块(父子工程) 是一种高效的方法。 阅读详情

相关推荐

【微服务 从0开始 】Spring Cloud 简单搭建一个微服务项目

【秒懂·云原生】目前主要更新微服务,一起学习一起进步。主要介绍Spring boot与Spring Cloud的关系,以及如何搭建一个微服务项目在构建第一个微服务之前,我们先了解一下Spring bootSpring框架功能很强大,但是就算是一个很简单的项目,开发者也需要进行大量的配置工作,因此在Spring 4.0之后出现了Spring Boot框架,它的作用很简单,就是帮助开发者自动配置Spring的相关依赖。

Ase5gqe的博客 965

使用Spring Cloud搭建微服务项目

使用Spring Cloud搭建微服务项目的案例,使用到Nacos、Dubbo、Sentinel、Seata、gateway等知识。

weixin_70452974的博客 3374

Java Microservices 和 Spring Cloud:介绍微服务架构,并使用Spring Cloud来说明其在Java中的实现

介绍 什么是微服务架构 微服务架构的优势和挑战 微服务架构基础 服务分解策略(如何决定服务的边界) 数据管理,如何在分散的服务之间维持数据一致性 服务之间的通信方式 Java Microservices 在Java环境中实现微服务架构的一般步骤 示例:使用Spring Boot创建一个微服务 Spring Cloud介绍 Spring Cloud所提供的功能和组件(如配置管理,服务发现,断路器等) 如何使用Spring Cloud来解决微服务中的某些常见问题 使用Spring Cloud实现微服务

哎 你看的博客 1310

SpringCloud(一)微服务项目搭建

SpringCloud是Spring提供的一套分布式解决方案,集合了一些大型互联网公司的开源产品,包括诸多组件,共同组成SpringCloud框架。并且,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、熔断机制、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

m0_64393446的博客 2769

简单Spring cloud微服务项目搭建

IDE开发工具:IntelliJ IDEA 14.0.2 版本管理:Maven 技术栈:SpringCloud 环境:JDK 1.8 一、创建Maven项目 1、File——>New Project ——>Maven 如图所示: 2、填写模块名称和项目路径 按照以上步骤,就简单的创建了一个Maven项目。 此时项目还不是SpringBoot项目 二、创建子项目 按同样方法创建子项目,注意组名后面需要在pom中声明。一个...

wjqsm的博客 2382

【Spring Cloud Alibaba】基于Spring Boot 3.x 搭建教程

本教程主要介绍如何基于搭建一个微服务项目,适合熟练使用框架,并且有进一步尝试新版本及学习搭建微服务项目的同学。致力于提供微服务开发的一站式解决方案。该项目包含开发分布式应用微服务的必需组件,方便开发者通过编程模型轻松使用这些组件来开发分布式应用服务。依托,我们只需要添加一些注解和少量配置,就可以将应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。此外,阿里云同时还提供了Spring Cloud Alibaba 企业版。

rkmhr_sef的博客 1014

SpringCloud微服务第1章

微服务(microservice)一词最早由MartinFowler与JamesLewis于2014年共同提出来的,它是一种新的软件架构风格,就是把一个大型应用程序分割成可以独立部署的小型服务,每个服务之间都是松耦合的,通过RPC或者是Rest协议来进行通信,可以按照业务领域来划分成独立的单元,比如一个电商系统可以分割成会员、订单、商品、积分、优惠券等不同的小型服务,有自动化运维、容错、快速演进的特点,它能够解决传统单体架构系统的痛点,同时也能满足越来越复杂的业务需求。组件的集合。启动器是基于。...

iijik55的博客 938

使用 Spring Cloud 搭建微服务 Demo

一、为什么要引入微服务 首先我们先讲一下应用模式的演变过程: 1. 单体应用 在没有提出微服务的概念的时候,一个软件应用,往往会将应用所有功能都开发和打包在一起,那时候的一个B/S应用架构一般为: 但是,当用户访问量变大导致一台服务器的时候,便添加加负载均衡,架构如下: 后面发现把静态文件独立出来,通过CDN等手段进行加速,可以提升应用的整体相应,单体应用的架构就变成: 对此可发现单体应用的...

weixin_43840862的博客 1741

SpringCloud微服务项目实战(一)---搭建SpringBoot项目

问题:新建子模块后,pom文件的图标是xml文件标识,而不是m标识,而且目录结构是com-xxx-xxx这样一层一层的,而不是package包名一起的解决:idea工作台左侧右键pom文件,点击Add As Maven Project,如下图问题:删除子模块后,再新增同样名称的子模块,pom文件不生效且出现了删除线。解决:File–Settings–Build–Maven–IgnoredFiles中将对勾取消,如下图。

xiaobai178的博客 6021

STM32 HAL库定时器中断里读编码器速度准吗?聊聊MG310电机的测速与防溢出处理

本文探讨了STM32 HAL库在定时器中断中读取编码器速度的精度问题,特别针对MG310电机的测速与防溢出处理提供了解决方案。通过对比定时中断法和编码器模式的性能,揭示了硬件编码器接口在降低误差和CPU占用率方面的优势,并详细介绍了CubeMX配置技巧和防溢出处理的工程实践。

weixin_28720767的博客 401

MagicDraw-用例图

MagicDraw-用例图

木头征的博客 3132

【迎五一】超大福利来啦,众多精美课程、礼品等你来领

C认证助力程序员,五一特惠活动来啦!! 单人报名可免费获得【电子书月卡】一份 组团报名皆可获得技术图书一本+无限次补考机会 带新用户报名皆可获得技术图书一本+精品网课 活动时间:4月26日-5月15日 心动不如行动,点击文末卡片立即了解 优快云云原生能力认证介绍 2022年3月31日,中国专业IT开发者社区优快云(以下简称C站)正式推出“C站云原生工程师能力认证”,旨在帮助考生快速掌握云原生开发技能,重点考核容器、DevOps、微服务应用等技术。此标准下,优快云将为千行百业贡献更多云..

优快云能力认证官方博客 3766

AutoCAD2014与ObjectARX开发环境搭建实战指南

本文提供了一份详细的AutoCAD2014与ObjectARX开发环境搭建实战指南。内容涵盖从AutoCAD2014、Visual Studio 2010及ObjectARX 2014 SDK的版本匹配与环境准备,到Wizard安装、编码问题解决、Visual Studio配置,并最终通过一个完整的绘图命令开发示例,手把手引导开发者创建并加载第一个可运行的ObjectARX插件,为后续深入开发奠定坚实基础。

weixin_28475533的博客 288

Spring Cloud工程搭建

完成工程搭建,搭建父子工程。

. 7680

【AI智能体】Claude Code 高级编程技巧实战项目详解

Claude Code 高级编程技巧实战项目详解

congge 1万+

VTK-9.5.0 1D2D3DWidget实现灰度图+深度图+3D点云显示(可轻松集成到自己的项目)

VTK1D2D3DWidget是一个基于Qt和VTK开发的3D点云可视化工具,支持RGB和深度点云数据的显示与处理。主要功能包括点云加载、可视化、保存为PLY格式文件,以及背景颜色、点间隔、坐标轴显示等参数的自定义设置。该工具采用模块化设计,核心组件包括主窗口管理类、VTK渲染组件和自定义鼠标交互样式,依赖Qt5+和VTK9.5.0库实现跨平台支持。项目提供完整的源码和构建指南,适用于点云数据的快速展示与分析。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 387

【Spring Cloud】环境和工程基本搭建

环境和工程基本搭建

2403_87459748的博客 1483

【100%通过率】华为OD机试真题 Python 实现【字符串重新排列】【2022.11 Q4新题】

给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整:对每个单词字母重新按字典序排序 2、单词间顺序调整: 1)统计每个单词出现的次数,并按次数降序排列 2)次数相同,按单词长度升序排列 3)次数和单词长度均相同,按字典升序排列 请输出处理后的字符串,每个单词以一个空格分隔。

MISAYAONE的博客 7982

【Spring Cloud】微服务的简单搭建

Spring Cloud 提供了⼀些可以让开发⼈员快速构建分布式服务的⼯具,⽐如配置管理, 服务发现,,熔断,智能路由等。他们可以在任何分布式环境中很好的⼯作。简单来说,Spring Cloud 就是分布式微服务架构的⼀站式解决⽅案,是微服务架构落地的多种技术的集合既然Spring Cloud是用来解决微服务所带来的问题。那我们接下来就先搭建一个简单的微服务。本篇内容主要非为以下两点开发环境安装项⽬搭建。

m0_71731682的博客 2841

【数据集处理】中国地面气候资料日值数据集(V3.0)(含MATLAB全代码)

简介数据集数据处理

WW、forever的博客 1万+

Spring AI 实战:如何使用 MCP Server 搭建 MCP 天气查询服务

MCP(Model Context Protocol)是 Anthropic 提出的一种开放协议,它定义了AI 模型与外部世界交互的标准方式。通俗地说:大模型本身只拥有训练数据中的知识,它不知道今天的天气、无法查询你的数据库、不能调用你的内部 API。MCP 就是解决这个问题的"桥梁"——它让模型能够发现并使用外部工具(Tools),就像人用手去操作工具一样。角色职责对应依赖MCP Server暴露工具(Tool),供模型调用MCP Client连接 Server,让模型发现和使用工具本文我们先聚焦。

SmartSi 763

Spring Cloud 微服务

先说说什么是微服务。想象一下,你有一个超大的乐高积木,里面有很多小零件,每个小零件都有自己的功能。要是其中一个零件坏了,你只需要换掉那个小零件,而不用把整个乐高都扔掉。微服务就是这个道理。它把一个大系统拆分成很多个小服务,每个服务都独立运行,互不干扰。这样一来,开发、维护和扩展都变得容易多了。SpringCloud微服务听起来很复杂,但其实就是一个把大系统拆成小服务,然后用工具箱里的工具把它们串起来的过程。

qq_33449977的博客 2438

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Spring cloud实现微服务最简单的入门demo(Spring cloud学习笔记 2)

一、服务提供者与服务消费者 既然是微服务架构也就必然存在服务间的相互通信,所以我们要明确两个概念也就是服务提供者与服务消费者。 服务提供者:服务的被调用方,供其他服务调用(也就是为其他服务提供服务) 服务消费者:服务的调用方,需要调用其他服务来完成请求。 如下图所示可以看出,人发起购买车票的请求,车票微服务接收请求并处理请求(如判断余票是否充足),同时车票微服务也要向用户微服务发送请求,获取用户相...

showadwalker的博客 1796

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用spring cloud alibaba搭建微服务

公共配置,如nacos服务发现地址spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848,数据库连接等。如服务器名称、nacos配置中心地址spring.cloud.nacos.config.serveraddr=127.0.0.1:8848,需要引入的配置文件。如订单服务,在application.yml文件中配置必要内容,配置了这些内容才能通过找到配置中心的相应文件。-- nacos-config 配置中心依赖 -->

jadewoo8888的博客 2542

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

使用spring cloud搭建微服务框架

bubbo+zookeeper制作的基于dubbo的微服务框架,可以说算是有点过时了,我们先来了解一下什么是微服务。   微服务就是对某个应用系统的每个API进行有效的拆分,然后通过某种连接方式,用以提供给其他应用系统调用的API的服务,在调用过程中实现和解决了一系列问题的综合就是微服务架构   顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务"。   微 ...

安余生的博客 8258
上一篇: SQL分页查询的写法总结-MySQL、SQL Server、Oracle
下一篇: Spring Cloud 学习2-Eureka用户认证、服务续约保活、健康检测以及服务下线
一地红尘
博客等级 码龄12年 4粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值