欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot整合SpringCloud搭建分布式应用

程序员文章站 2023-10-13 13:56:28
什么是SpringCloud? SpringCloud是一个分布式的整体解决方案。SpringCloud为开发者提供了在分布式系统中快速构建的工具,使用SpringCloud可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。 SpringCloud分布式开发五大常用组件 服务发现——N ......

什么是springcloud?

  springcloud是一个分布式的整体解决方案。springcloud为开发者提供了在分布式系统中快速构建的工具,使用springcloud可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。

springcloud分布式开发五大常用组件

  服务发现——netflix eureka

  客户端负载均衡——netflix ribbon

  断路器——netflix hystrix

  服务网关——netflix zuul

  分布式配置——spring cloud config

创建一个分布式应用

  1)new project 选择 empty project

  2)创建注册中心应用

    2.1 new model→spring initializr后面选择导入cloud discovery的eureka server依赖。

    2.2 在启动类上加入@enableeurekaserver注解。

    2.3 创建application.yml,内容如下

server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server # eureka实例的主机名
  client:
    register-with-eureka: false #不将自己注册到eureka上
    fetch-registry: false #不从eureka上来获取服务的注册信息
    service-url:
      defaultzone: http://localhost:8761/eureka/

  3)创建服务提供者工程

    3.1 new model→spring initializr后面选择导入cloud discovery的eureka discovery依赖。

    3.2 创建一个service

package com.example.providerticket.service;

import org.springframework.stereotype.service;

@service
public class tickerservice {

    public string getticker(){
        return "《厉害了,我的国》";
    }

}

    3.3 创建一个controller

@restcontroller
public class tickercontroller {

    @autowired
    tickerservice tickerservice;

    @getmapping("/ticket")
    public string getticker(){
        return tickerservice.getticker();
    }

}

    3.4 创建配置application.yml

server:
  port: 8002
spring:
  application:
    name: provider-ticket
eureka:
  instance:
    prefer-ip-address: true #注册服务的时候使用服务ip地址
  client:
    service-url:
      defaultzone: http://localhost:8761/eureka/

  4)创建服务消费者工程

    4.1 new model→spring initializr后面选择导入cloud discovery的eureka discovery依赖。

    4.2 配置启动类

@enablediscoveryclient //开启发现服务功能
@springbootapplication
public class consumeruserapplication {

    public static void main(string[] args) {
        springapplication.run(consumeruserapplication.class, args);
    }

    @loadbalanced //启用负载均衡机制
    @bean
    public resttemplate resttemplate(){
        return new resttemplate();
    }

}

    4.3 配置application.yml

spring:
  application:
    name: consumer-user
server:
  port: 8200
eureka:
  instance:
    prefer-ip-address: true #注册服务的时候使用服务ip地址
  client:
    service-url:
      defaultzone: http://localhost:8761/eureka/

    4.4 创建controller并测试

@restcontroller
public class usercontroller {

    @autowired
    resttemplate resttemplate;

    @getmapping("/buy")
    public string byticket(string name){
        string forobject = resttemplate.getforobject("http://provider-ticket/ticket", string.class);
        return name+"购买了"+forobject;
    }

}

  至此,一个springboot整合springcloud的简单分布式应用已搭建完毕。