Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

发布时间:2021-10-21 13:55:26 作者:柒染
来源:亿速云 阅读:141

本篇文章为大家展示了Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创建父项目

<!--1 确定spring boot的版本-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <!--2  确定版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring-cloud-release.version>Greenwich.RELEASE</spring-cloud-release.version>
    </properties>

    <!-- 3 锁定sprig cloud版本-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-release.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- 4 确定spring cloud私有仓库-->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

创建注册中心

<dependencies>
        <!--web起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Eureka服务端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
#端口号
server:
  port: 10086
#服务名
spring:
  application:
          #服务名不可以使用下划线 列如:eureka_demo  在后面的调用中下划线会变成空格从而导致找不到该服务
    name: eurekaDemo3
#注册地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka
    register-with-eureka: false   #是否注册自己到注册中心
    fetch-registry: false         #是否从注册中心拉取服务列表
package com.czxy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;


@SpringBootApplication
@EnableEurekaServer     //开启eureka service
public class EurekaDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaDemoApplication.class,args);
    }
}

配置高可用的注册中心:集群

#服务名
spring:
  application:
    name: eurekaDemo
#端口号
server:
  port: 10086
#注册地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10087/eureka
    register-with-eureka: true   #是否注册自己到注册中心,默认值true(可省略)
    fetch-registry: true         #是否从注册中心拉取服务列表,默认值true(可省略)
#端口号
server:
  port: 10087
#注册地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka
    register-with-eureka: true   #是否注册自己到注册中心
    fetch-registry: true         #是否从注册中心拉取服务列表
#服务名
spring:
  application:
    name: eurekaDemo
  profiles:
    active: 10086

Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

#服务名
spring:
  application:
    name: eurekaDemo
  profiles:
    active: 10087

Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

IDEA中配置多启动

步骤一:创建 spring boot启动项

Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

步骤二:配置10087启动 同配置10086一样(此处省略)

步骤三:启动

创建服务提供方 eureka_service4 (集群)  

 <dependencies>
        <!--web起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Eureka客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--spring boot监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

同一个名称的服务,只要提供多个实例,注册到eureka中,就可以自动形成集群。

Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

server:
  port: 8081

server:
  port: 8081

Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

在服务提供方 eureka_service3 中添加controller方便测试数据

package com.czxy.controller;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
@RequestMapping("/test")
public class TestController {
    @GetMapping                          
    public ResponseEntity<String> test(HttpServletRequest request){
                                               //端口号
        return ResponseEntity.ok("测试数据" + request.getServerPort());
    }
}

创建服务调用方

  pom文件:

<dependencies>
        <!--web起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- Eureka客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--spring boot监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

yml文件:

server:
  port: 9090
spring:
  application:
    name: eurekaClient
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka

启动类 :

package com.czxy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;


@SpringBootApplication
@EnableEurekaClient
public class ClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ClientApplication.class,args);
    }
}
package com.czxy.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;


@Configuration
public class HttpConfig {
    @Bean
    @LoadBalanced       //让RestTemplate支持负载均衡,也就是说支持“服务名”访问
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
package com.czxy.dao;

import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;


@Component
public class DataDao {
    @Resource
    private RestTemplate restTemplate;

    public ResponseEntity<String> data(){
//        String url = "http://localhost:8081/test";
        String url = "http://service3/test";
        return restTemplate.getForEntity(url,String.class);
    }
}

Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡

上述内容就是Spring Cloud中配置高可用注册中心集群和ribbon-负载均衡,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 跟我学Spring Cloud(Finchley版)-23-Spring Cloud Config高
  2. Spring Cloud原理的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springcloud ribbon

上一篇:怎么使用Python绘制COVID-19的全球扩散图

下一篇:函数参数调用和非固定参数的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》