springCloud项目搭建流程步骤分解

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

业务场景:在返回订单信息数据中显示用户信息

实现思路:基于RestTemplate发起的http请求实现远程调用

1.注册RestTemplate

//在order-service的启动类中注册RestTemplate的Bean
 @Bean
 public RestTemplate restTemplate(){
     return new RestTemplate();
 }

2.改造OrderController

2.1:注入RestTemplate

@Autowired
private RestTemplate restTemplate;

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;
    }

提供者和消费者

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

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

Eureka注册中心

内部协调原理

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

如果有多个服务提供者,消费者该如何选择?
    1.服务消费者利用负载均衡算法,从服务列表中挑选一个
消费者如何感知服务提供者健康状态?
    1.服务提供者会每隔30s向eurekaServer发送心跳请求,报告健康状态
    2.eureka会更新记录服务列表信息,心跳不正常会被剔除
    3.消费者就可以拉到最新的信息

Eeruka原理

在Eureka架构中,微服务角色有两类
1:EurekaServer: 服务端 注册中心
    记录服务信息
    心跳监控
2:EurekaClient:客户端
    Privider: 服务提供者,案例中的user-service
        注册自己的信息到EurekaServer
        每隔30s向EurekaServer发送心跳
    consumer: 服务消费者 案例中的order-service
        根据服务名称从EurekaServer拉取服务列表
        基于服务列表做负载均衡,选中一个微服务后发起远程调用

搭建Eeruka

1.创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖

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

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

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>

2.在application.yml文件,编写下面的配置

spring:
  application:
    name: userservice  #eureka客户端 的服务名称
eureka:
  client:
    service-url: #eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

将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();
    }

到此这篇关于springCloud项目搭建流程步骤分解的文章就介绍到这了,更多相关springCloud搭建流程内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud 搭建企业级开发框架之实现多租户多平台短信通知服务(微服务实战)

    目前系统集成短信似乎是必不可少的部分,由于各种云平台都提供了不同的短信通道,这里我们增加多租户多通道的短信验证码,并增加配置项,使系统可以支持多家云平台提供的短信服务.这里以阿里云和腾讯云为例,集成短信通知服务. 1.在GitEgg-Platform中新建gitegg-platform-sms基础工程,定义抽象方法和配置类 SmsSendService发送短信抽象接口: /** * 短信发送接口 */ public interface SmsSendService { /** * 发送单个短信

  • Nginx+SpringCloud Gateway搭建项目访问环境

    目录 安装Nginx 准备SpringBoot应用 添加网关 现如今的项目开发基本都是微服务方式,导致一个系统中会有很多的服务,每个模块都对应着不同的端口,为了方便访问,通常会让某个服务绑定一个域名,比如商品服务:product.xxx.com:订单服务:order.xxx.com,此时可以使用Nginx来搭建一个域名访问环境,基于前后端分离开发的项目经常会遇到跨域问题,使用Nginx也能轻松解决. 安装Nginx 首先拉取nginx的镜像: docker pull nginx:1.10 然后随

  • SpringCloud入门实验环境搭建

    微服务 个人理解: 所谓微服务是指每个模块都可以独立完成自己的核心业务,某一个模块的崩溃不影响其他模块的运行, 每个微服务有自己单独的一个数据库 每一个微小的服务组成了一个复杂的软件系统 微服务架构 微服务指的是服务的大小,关注的是完成一个具体的服务(医院的科室) 微服务架构是一种架构模式 ,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相 配合,为用户提供最终价值.一种将一个单一应用程序开发为一组小型服务的方法,每个服务都在其运行 的进程中.(整个医院) 优点: 针对特定服务发布

  • SpringCloud学习笔记之SpringCloud搭建父工程的过程图解

    目录 SpringCloud和SpringBoot版本选择 更详细的版本选择 相关技术选型 创建工程 创建父工程 新建maven工程 配置父工程的pom文件 SpringCloud是分布式微服务架构的一站式解决方案,十多种微服务架构落地技术的集合体,俗称微服务全家桶 SpringCloud和SpringBoot版本选择 自2019年以后官方建议使用2.0以后的版本 官网地址 在官网的页首可以看到最新版本以及对应的springboot版本 在官网可以看到官方推荐的springcloud与sprin

  • SpringCloud Alibaba 基本开发框架搭建过程

    在上一节,我们已经完成了项目的整体技术架构设计和具体的数据库设计,接下来,我们搭建整体的开发框架. 开发工具选用Idea. 开发工具只是为了提高效率,如果不习惯Idea的话,STS使用起来也是OK的. 1.创建多Module工程 1.1.创建父工程 创建一个父项目,项目命名为eshop-project,用于管理子模块功能. 新建Project 选择Maven工程,next 填写GroupId和ArtifactID 填写项目名,选择项目位置 删除src,添加maven配置 <!--设置为pom,管

  • SpringCloud如何搭建一个多模块项目

    在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建一个多模块的springcloud项目. 本章及后面章节,我们使用的开发环境是 spring tool suite (sts) + maven (当然你也可以使用IDEA + Gradle,目前使用的公司也很多). 一.新建一个父maven project模块 File->new->other->maven-

  • springCloud项目搭建流程步骤分解

    实现跨服务的远程调用(RestTemplate) 业务场景:在返回订单信息数据中显示用户信息 实现思路:基于RestTemplate发起的http请求实现远程调用 1.注册RestTemplate //在order-service的启动类中注册RestTemplate的Bean @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } 2.改造OrderController 2.1:注入RestTemplate

  • java中ssj框架的项目搭建流程

    1.新建一个maven项目 2.在pom.xml中,配置所需的jar包及其版本号 <!-- 设置自定义属性和值 --> <properties> <spring.version>4.1.7.RELEASE</spring.version> <hibernate.version>4.3.11.Final</hibernate.version> </properties> <dependencies> <!-

  • vue.js的手脚架vue-cli项目搭建的步骤

    手脚架是什么? 众所周知,现在的前端项目发展得越渐越大,我们前端程序员要从0开始去搭建一套完整的项目很费时,所以这时候前端工程的手脚架就出现了. 我用得vue-cli也是其中之一,还有其他的我也说不清,我就说一下我接触比较多的这款vue-cli, 但是所有手脚架的核心:都是为了能够快速搭建一个完整的项目的结构,开发者只需要在生成的项目结构的基础上进行开发即可,非常简单高效. 然后, vue-cli 的脚手架项目模板有browserify 和 webpack ,vue-lic这个手脚架是把预定义的

  • 基于mpvue的小程序项目搭建的步骤

    前言 mpvue 是美团开源的一套语法与vue.js一致的.快速开发小程序的前端框架,按官网说可以达到小程序与H5界面使用一套代码.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程序,或开发小程序后希望将其转换为 H5,mpvue 将是十分契合的一种解决方案. Mpvue官网:http://mpvue.com/ demo地址 :https://github.com/ccwyn/mpvuedemo/tree/mast

  • 新手学习微服务SpringCloud项目架构搭建方法

    这篇文章主要介绍了新手学习微服务SpringCloud项目架构搭建方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring的微服务框架SpringCloud受到众多公司欢迎,给大家带来一篇框架搭建入门.本次采用的版本是Spring Cloud版本为Finchley.RELEASE. 一.SpringCloud项目简介 spring cloud: 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.

  • Vue.js系列之项目搭建(1)

    说明: 我们项目现在用的是:vue2.0 + vue-cli + webpack + vue-router2.0 + vue-resource1.0.3 如果大家在实践的过程中与本文所说的内容有较大区别的话看看是不是版本问题. 本文是一系列文章,在我对Vue有了更深刻的理解认识之后会对文章及时进行修改或更正.欢迎大家批评指出错误. 今天要讲讲Vue2.0了.最近将公司App3.0用vue2.0构建了一个web版,因为是第一次使用vue,而且一开始使用的时候2.0出来一个月不到,很多坑都是自己去踩

  • Maven搭建springboot项目的方法步骤

    Maven搭建springboot项目 本文是基于Windows 10系统环境,使用Maven搭建springboot项目 Windows 10 apache-maven-3.6.0 IntelliJ IDEA 2018.3.4 x64 一.springboot项目搭建 (1) 新建目录 在某个可用目录下,新建一个文件夹,本文新建目录为 D:\demo\zs200 (2) 创建maven父工程zs200a-parent 填写项目maven坐标 填写项目名称和路径 (2) maven父工程zs20

  • Go语言框架Beego项目搭建的方法步骤

    1,命令行查看 Go 开发包的环境变量配置信息 命令行说明如下: 第 1 行,执行 go env 指令,将输出当前 Go 开发包的环境变量状态. 第 2 行,GOARCH 表示目标处理器架构. 第 3 行,GOBIN 表示编译器和链接器的安装位置. 第 7 行,GOOS 表示目标操作系统. 第 8 行,GOPATH 表示当前工作目录. 第 10 行,GOROOT 表示 Go 开发包的安装目录. 从命令行输出中,可以看到 GOPATH 设定的路径为:C:\Users\Administrator\g

  • Visual Studio Code搭建django项目的方法步骤

    之前我们使用VSCode搭建C#项目,今天写一篇关于django项目的搭建,其实以其说是搭建django框架,不如说是如何通过vscode开发django项目:django官网:https://www.djangoproject.com/ 安装django django安装命令:pip install django,参考:https://docs.djangoproject.com/en/3.0/topics/install/ 查看django的安装版本:python -m django --v

随机推荐