Spring Cloud注册中心+客户端+中心加密+消费调用提供者

本文详细介绍了如何搭建Spring Cloud的注册中心,并实现客户端的注册、加密码保护以及消费者调用服务提供者的过程。从创建注册中心、配置启动类和YAML文件,到客户端的配置与调用,包括使用Feign接口进行服务间通信,全程详解了每个步骤的关键点和注意事项。
摘要由CSDN通过智能技术生成

目标

  1. 创建注册中心。

  2. 创建客户端注册到注册中心。

  3. 注册中心加密码。

  4. 客户端的消费者调用提供者。

重点、难点

1)、重点

创建注册中心、创建客户端的消费者和提供者。

2)、难点

创建客户端的消费者和提供者。

知识点讲解

        

创建注册中心

1、Spring Cloud概念。

Spring Cloud是微服务架构的集大成者,将一系列优秀的组件进行了整合。基于Springboot构建。

Spring Cloud的F版本是基于springboot的2.0.x构建,之前的是基于Springboot的1.5.x构建,版本名的来源是伦敦的地铁站名。

https://spring.io/projects/spring-cloud    #spring官网地址

Spring Cloud常用的5个模块:

  • 服务发现——Netflix Eureka

  • 客服端负载均衡——Netflix Ribbon

  • 断路器——Netflix Hystrix

  • 服务网关——Netflix Zuul

  • 分布式配置——Spring Cloud Config

如下图:

2、创建注册中心

 创建Spring Cloud工程

 设置包名、组织名称

 选择Spring Cloud注册中心需要的包。因为使用Spring boot 1.5.6的版本,下图选择了后也需要在pom.xml中更改相对应的版本。后续使用的Spring Cloud版本是Dalston.SR4+Spring boot 1.5.6.RELEASE

3、修改导入jar包

我使用的Spring Cloud版本是Dalston.SR6+Spring boot 2.1.18RELEASE(要注意不同的版本有可能不兼容)

生成的pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xshiedu</groupId>
    <artifactId>dmw-user-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>dmw-user-consumer</name>
    <description>dmw-user-consumer</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.1.18.RELEASE</spring-boot.version>
        <spring-cloud.version>Greenwich.SR6</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.xshiedu.DmwUserConsumerApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

4、注册中心启动配置

启动类上加@EnableEurekaServer注解

示例如下

@SpringBootApplication
@EnableEurekaServer
public class ShopDiscoveryEurekaApplication {

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

5、配置application.yml文件

在resources目录下的application.yml文件配置如下:

server:
  port: 7776   #注册中心使用的端口号
eureka:
  client:
    #表示是否将自己注册在EurekaServer上,默认为true。当前应用就是EurekaServer,置为false
    register-with-eureka: false   
    #表示表示是否从EurekaServer获取注册信息,默认为true。单节点不需要同步其他的EurekaServer节点的数据
    fetch-registry: false
    service-url:
      defaultZone: http://172.16.2.1:7776/eureka/  #设置Eureka的地址

6、启动注册中心并访问

http://172.16.2.1:7776  

访问后显示如下图

创建客户端注册到注册中心

1、创建客户端工程

设置组织名称、包名等

 设置要导入的jar包

2、修改导入jar包

修改pom.xml如下:

Spring Boot版本改成:2.1.18.RELEASE

Spring Cloud版本改成:Dalston.SR6

Spring Cloud客户端的包定位改成:spring-cloud-starter-eureka

3、客户端启动配置

启动类上加@EnableDiscoveryClient注解

示例如下:

@EnableDiscoveryClient  //此处客户端注解
@SpringBootApplication   
public class DmUserProviderApplication {

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

}

4、配置application.yml文件

在resources目录下的application.yml文件配置如下

server:
  port: 7101   #客户端 访问的端口号
spring:
  application:
    name: dm-user-provider   #客户端应用程序名称
eureka:
  client:
    service-url:
      defaultZone: http://172.16.2.1:7776/eureka/  #注册中心地址

5、启动提供者客户端

访问http://172.16.2.1:7776 注册中心,显示客户端如下,表示注册成功。

6、注意

 1、如果Spring Cloud 是Greenwich版本导入web的包。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

注册中心加密码

1、访问注册中心

访问http://172.16.2.1:7776 可以看到并不需要密码就可以登录。如需要加上用户名和密码登录则要配置

2、配置注册中心

注册中心需要导入security的jar包,打开pom.xml增加此包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

3、修改application.yml文件

配置属性如下:

security.user.name 用户名

security.user.password 密码

security.basic.enabled 启用密码登录

eureka.client.service-url.defaultZone 设置登录的用户名和密码

示例如下:

server:
  port: 7776  
eureka:
  client:
    register-with-eureka: false   
    fetch-registry: false
    service-url:
      defaultZone: http://root:dmw@172.16.2.1:7776/eureka/  #设置登录的用户名和密码
security:
  user:
    name: root   #设置登录用户名
    password: dmw  #设置登录密码
  basic:
    enabled: true  #启用

4、修改dm-user-provider客户端提供者application.yml文件

修改defaultZone值,如下图:

server:
  port: 7101   
spring:
  application:
    name: dm-user-provider   
eureka:
  client:
    service-url:
      defaultZone: http://root:dmw@172.16.2.1:7776/eureka/  #注册中心地址  加上用户名和密码

5、注意

1、如果Spring Cloud 是Greenwich版本application.yml配置如下:

server:
  port: 7776  
eureka:
  client:
    register-with-eureka: false   
    fetch-registry: false
    service-url:
      defaultZone: http://root:dmw@172.16.2.1:7776/eureka/  #设置登录的用户名和密码
spring:
  security:
    user:
      name: root   #设置登录用户名
      password: dmw  #设置登录密码

增加配置类(作用是忽略掉有eureka的路径访问)

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        //忽略eureka路径
        http.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(http);
    }
}

客户端的消费者调用提供者

1、使用客户端的消费者调用提供者

如下图:

客户端是有多个的,分为二类,一类是提供者,一类是消费者。接下来带大家演示Consumer服务怎么调用Provider服务。前面我们已经创建了Provider服务,接下来我们先让Provider提供一个可调用的方法出来,再继续创建一个Consumer服务。通过Consumer去调用Provider提供出来的方法。

2、修改Provider服务

先让我们的提供者dm-user-provider提供一个无参的可调用方法。新建UserController类。

package com.dm.controller;
//导包省略
@RestController
public class UserController {

    @RequestMapping(value = "/login",method = RequestMethod.GET)
    public String login() throws Exception{
        return " 提供者1 登录成功 " ;
    }
}

3、创建Consumer服务

创建此工程和Provider服务基本一样,它们二个都是客户端。只不过一个是调用者,一个是提供者。         

 设置组织名称、包名等

 设置要导入的jar包

4、修改导入jar包

修改pom.xml如下:

Spring Boot版本改成:2.1.8.RELEASE

Spring Cloud版本改成:Dalston.SR6

Spring Cloud客户端的包定位改成:spring-cloud-starter-eureka

增加feign包:spring-cloud-starter-feign

5、客户端启动配置        

启动类上加@EnableDiscoveryClient注解

示例如下:

@EnableDiscoveryClient  //此处客户端注解
@EnableFeignClients
@SpringBootApplication   
public class DmUserConsumerApplication {

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

}

6、配置application.yml文件

server:
  port: 7501   #客户端访问的端口号  此处和提供者不一样
spring:
  application:
    name: dm-user-comsumer   #客户端应用程序名称
eureka:
  client:
    service-url:
      defaultZone: http://root:dmw@172.16.2.1:7776/eureka/  #注册中心地址

7、通过feign接口调用

创建feign接口,使用@FeignClient注解

@FeignClient(name="dm-user-provider") //此处名字写提供者的spring.application.name值
public interface UserFeignClient {
    //此处和提供者中的控制器定义一样
    @RequestMapping(value = "/login",method = RequestMethod.GET) 
    public String login() throw Exception;
}

8、创建控制器类

@RestController
public class UserController{
    @Resource
    private UserFeignClient userFeignClient;
    
    @RequestMapping("/userLogin")
    public String login() throw Exception{
        return "收到结果:"+userFeignClient.login();
    }
    
}

9.启动类测试

http://localhost:7501/userLogin

输出结果如下,表示消费者调用提供者成功。

收到结果: 提供者1 登录成功 

10、注意

1、如果Spring Cloud 是Greenwich版本导入web的包。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2、feign是openfeign的包 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值