SpringCloud搭建分布式服务架构(通俗易懂,步骤清晰)

2023-10-26

SpringCloud搭建分布式服务架构

问题引入:什么是SpringCloud?(在了解这个之前需要有微服务的概念)

基于springBoot的一套实现微服务的框架,提供了微服务所需的配置管理,基于Http协议的restful风格(返回异步数据)

SpringCould组件架构图

在这里插入图片描述

由于在一台电脑上演示分布式项目,需要创建多个项目模块

步骤:

  1. 创建父类工程maven工程,修改pom文件,将打包方式改为pom
  2. 创建服务工程(注册中心)SpringBoot模块,选择需要导入的包,具体见下截图

在这里插入图片描述

在这里插入图片描述

  1. 在SpringBoot文件中添加eureka服务配置
#设置服务器端口
server.port:9000
#设置应用程序名称  名字不许用下划线,不支持服务调用
spring.application.name=sc-demo-server
#主机地址
eureka.instance.hostname=localhost
#表示不向注册中心注册
eureka.client.register-with-eureka=false
#表示不向注册中心调用服务
eureka.client.fetch-registry=false
#服务的地址
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka

  1. 在这个模块的启动类上添加eureka注解开启服务
@SpringBootApplication
@EnableEurekaServer  //启动eureka,开启服务
public class ScDemoServerApplication {
    public static void main(String[] args) {
SpringApplication.run(ScDemoServerApplication.class, args);
    }
}

这时候运行你的启动类,在浏览器输入

http://localhost:自己设置的端口号/ 看到这个,说明eureka服务配置成功

在这里插入图片描述

接下来配置提供者与服务者

  1. 创建eureka的服务提供者 SpringBoot工程,具体见图(注意组件的区别)

[

在这里插入图片描述

  1. 这个模块的启动类上添加eureka注解开启服注意注解的使用
@SpringBootApplication
@EnableEurekaClient
public class ScDemoProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ScDemoProviderApplication.class, args);
    }

}

  1. SpringBoot的配置文件中发布服务配置
 #服务器端口
server.port=9001
#配置发布服务地址
spring.application.name=sc-demo-provider
eureka.client.service-url.defaultZone=http://localhost:9000/eureka
  1. 测试eureka服务者

    在模块中创建一个包写一个实体类

    public class Student {
        private Integer xh;
        private String name;
        private String sex;
        private Integer age;
        setter和getter  构造
    }
    
    

    编写控制器

    @RestController
    public class TestController {
        //接收请求(服务)  返回json
        @RequestMapping("/getData")
        public Student getData(){
           //返回一个学生   --调数据库
            return new Student(101,"张三","人妖",21);
        }
    }
    
    
    

    在浏览器输入http://localhost:自己设置的服务提供者端口号/控制器请求名

    页面会返回学生的json数据则成功

  2. 创建eureka的服务消费者 SpringBoot工程

    创建流程与提供者相同

    消费者的配置文件如下:

    #服务器
    server.port=9002
    #服务的名称
    spring.application.name=eureka-consumer
    #指定注册中心:eureka服务器
    eureka.client.service-url.defaultZone=http://localhost:9000/eureka
    
  3. 在启动类上开启eureka

    package com.sc.dome;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    @EnableEurekaClient
    @SpringBootApplication
    public class ScConsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ScConsumerApplication.class, args);
        }
    
        @Bean   //交给spring容器管理
        @LoadBalanced  // 支持使用服务名称发现服务进行调用,且支持负载
        public RestTemplate getRestTemplate() {
            return new RestTemplate();
        }
    }
    
    
  4. 开发控制器调用服务

    package com.sc.dome.controller;
    
    import com.sc.dome.entity.Student;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    /**
     * @Auther: Mr.zhou
     * @Date: 2020/8/13 13:44
     */
    @RestController
    public class StudentController {
        @Autowired
        private RestTemplate restTemplate; // 从spring容器自动注入RestTemplate对象
        @RequestMapping("showStudent")
        public Student showStudent(){
            Student stu = restTemplate.getForObject("http://SC-PROVIDER/getStudent", Student.class);
            return stu;
        }
    }
    
    

温馨提示:最后测试的时候需要开启三个启动类哦

获取更多 请扫码关注公众号哦~

感谢各位姥爷的点赞阅读~

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringCloud搭建分布式服务架构(通俗易懂,步骤清晰) 的相关文章

随机推荐

  • C++模板 类模板成员函数类外实现 类模板分文件编写的问题与解决方法 类模板配合友元函数的类内和类外实现

    文章目录 1 类模板成员函数类外实现 2 类模板分文件编写 3 类模板友元 1 类模板成员函数类外实现 学习目标 能够掌握类模板中的成员函数类外实现 场景描述 创建一个类 类中只写函数的声明 类外写实现 template
  • Git第五讲 git pull/git fetch与 git rebase/git merge

    当你和其他开发者一起协作开发项目时 经常会遇到需要更新代码的情况 Git提供了多种方式来获取最新代码并将其合并到你的本地仓库中 在本篇博客中 我们将详细介绍git pull和git fetch命令的使用 以及git rebase和git m
  • 【目标检测】Faster R-CNN的复现

    文章目录 Faster Rcnn 0 利用Git下载Code 1 数据准备 2 模型加载 3 模型训练 4 模型测试 5 运行demo py 6 训练自定义Images文件和对应XML文件的model Faster Rcnn Faster
  • 1059-前 n 个数字二进制中 1 的个数

    题目如下 给定一个非负整数 n 请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数 并输出一个数组 示例 1 输入 n 2 输出 0 1 1 解释 0 gt 0 1 gt 1 2 gt 10 示例 2 输入 n 5 输出 0 1
  • Windows系统备份

    Windows系统备份 备份种类 全量备份 全量备份就是指对某一个时间点上的所有数据或应用进行一个完全拷贝 实际应用中就是用存储介质 如磁盘或其他方式 对整个系统进行全量备份 包括其中的系统和所有数据 这种备份方式最大的好处就是只要将存储介
  • 优化APK体积

    该篇文章主要来介绍如何减少APK体积 以帮助用户更快地下载App 并加速安装 更新过程 APK内容结构一瞥 要查看APK文件中都包含哪些内容 有两种方式 第一种通过Android Studio的Analyze APK功能查看 该工具不仅可以
  • 微型计算机原理课后题,微型计算机原理-课后习题答案.ppt

    微型计算机原理 课后习题答案 ppt 由会员分享 可在线阅读 更多相关 微型计算机原理 课后习题答案 ppt 30页珍藏版 请在人人文库网上搜索 1 第二章 2 设机器字长为6位 写出下列各数原码 补码和移码 10101 11111 100
  • RT-Thread 访问I/O设备

    访问I O设备 应用程序通过I O设备管理接口来访问硬件设备 当设备驱动实现后 应用程序就可以访问该硬件 查找设备 应用程序根据设备名称获取设备句柄 进而操作设备 获得设备句柄后 应用程序可使用如下函数对设备进行初始化操作 rt err t
  • 百钱百鸡:用100钱买100只鸡,公鸡5钱一只,母鸡三钱一只,小鸡三只一钱,编程输出所有可能的买法(要求每鸡至少买一只)

    include
  • C语言控制语句

    C语言控制语句 一 条件判断语句 1 1 if语句 1 2 switch语句 二 循环执行语句 2 1 while 2 2 for 2 3 do while 一 条件判断语句 条件判断语句也叫选择语句 如果你好好学习 校招时拿一个好offe
  • JPA – Querydsl投影

    在我的上一篇文章中 JPA 基本投影 我已经提到了构建JPA投影的两种基本可能性 这篇文章为您带来了更多示例 这次基于Querydsl框架 注意 这里我指的是Querydsl版本3 1 1 重塑构造函数表达式 看下面的代码 import s
  • QT-多进程任务处理

    QT 多进程任务处理 多进程任务处理 模块设计 Model Process cpp Model process h 多进程任务处理 在实际项目设计中 往往会遇到这样的情况 多条命令同时执行 这种情况下就需要针对进程进行合理调配 以达到预期效
  • webpack生产阶段的配置

    开发 测试 生产 开发版 这是开发版本的配置 webpack config js const path require path 使用node的path模块 来构建路径 const htmlWebpackPlugin require htm
  • 如果有人问你数据库的原理,叫他看这篇文章

    一提到关系型数据库 我禁不住想 有些东西被忽视了 关系型数据库无处不在 而且种类繁多 从小巧实用的 SQLite 到强大的 Teradata 但很少有文章讲解数据库是如何工作的 你可以自己谷歌 百度一下 关系型数据库原理 看看结果多么的稀少
  • 计算机专业学生就业信息调研

    IT行业一直是国家优先发展的重点行业 也是国内外人才需求量最大的行业之一 尤其是近几年 很多跨国公司陆续在中国成立软件研发中心 为计算机专业的高层次人才提供高质量的就业机会 这给计算机科学与技术专业的毕业生提供了极好机遇 也使这一专业的报考
  • linux:ubuntu提示unable to locate package docker-engine

    参考 docker installation failed on Ubuntu 20 04 LTS Vmware Stack Overflow 说明 docker engine已经改为docker io
  • 小程序内容不符合规则

    一 本文目的 本文是针对小程序提交审核因 小程序内容不符合规范 造成审核不通过 相关问题的处理办法 问题如图所示 二 处理方案 调用微信官方内容安全接口 主要可以分为3种情况 视自身情况而定 详细如下 三 方案详细说明 3 1 情况一 校验
  • robotframework接口自动化常见问题七

    1 接口自动化运行报错 string indices must be integers not str 错误代码如下 原因 数据类型不匹配导致 此时的变量 reponsecon 为str类型 需要转换成json dict类型 解决方法 参考
  • 使用Go自己动手搭建一个HTTP代理服务器

    代理服务器的工作方式如下 客户端向代理服务器发送请求 表明自己需要请求的网站内容 代理服务器接收到来自客户端的请求之后 通过解析 获取到需要访问的web服务 代理服务器将客户端的请求信息全部转发给web服务器 web服务器返回响应消息给代理
  • SpringCloud搭建分布式服务架构(通俗易懂,步骤清晰)

    SpringCloud搭建分布式服务架构 问题引入 什么是SpringCloud 在了解这个之前需要有微服务的概念 基于springBoot的一套实现微服务的框架 提供了微服务所需的配置管理 基于Http协议的restful风格 返回异步数