java B2B2C Springboot多租户电子商城系统-spring-cloud-eureka-consumer

介绍spring

spring-cloud-eureka,更加具体的内容,这里将会介绍远程服务调用和及其负载均衡。须要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六浏览器

咱们将咱们的服务注册在咱们的服务中内心,那么如何去调用这些服务呢?咱们能够用使用远程服务调用来解决,顺带还有方便的负载均衡功能。app

如何使用负载均衡

建立服务中心分布式

注册几个被调用服务微服务

注册一个consumer测试

测试consumer与负载均衡url

  1. 建立服务中心

上一篇文章,咱们已经学会了使用单机或者集群的方式来建立服务中心,这里咱们使用简单的单机方式来建立!rest

在 spring-cloud-eureka-server 里启动采用这个profile文件:code

server:
  port: 8761

spring:
  application:
    name: eureka-server

eureka:
  instance:
    lease-expiration-duration-in-seconds: 6
    lease-renewal-interval-in-seconds: 2
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

这个是单机版的。并将本身注册到了服务里。

  1. 注册几个被调用服务

咱们启动了这三个profile文件。

配置文件中,server.port 分别是 8083,8084,8085,其余参数彻底一致!同时,咱们在controller中设置了这样一个rest服务。

@Value("${server.port}")
    String port;

    @RequestMapping("/hi")
    public String hi() {
        return port+" 端口为您服务!";
    }

这样方便知道咱们具体调用了哪一个服务。

  1. 注册一个consumer

须要额外的依赖,使用了feign来进行远程调用。

pom.xml :

<!--远程调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>

建立一个接口:

@Component
@FeignClient(name = "eureka-client-1")
public interface HelloRemoteInterface {

    @RequestMapping(value = "/hi")
    public String hi();
}

这里的name就是你的那个服务的application.name。根据名字来调用,才能实现负载均衡嘛。

使用接口,建立一个测试的controller:

@RestController
public class ConsumerController {

    @Autowired
    HelloRemoteInterface helloRemoteInterface;

    @RequestMapping("/hello")
    public String hello() {
        return helloRemoteInterface.hi();
    }
}

同时,将咱们的这个服务也注册到服务中心。

配置文件:

server:
  port: 8086

spring:
  application:
    name: eureka-consumer

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

启动方法:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class SpringCloudEurekaConsumerApplication {

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

到这里,咱们已经启动了好多个服务,如上图所示,在IDEA中,采用不一样的profile来启动的方式,有一个单机的server,三个普通的服务(端口号不同),还有咱们的消费服务,下一节,你能够从截图中看的更明白。

  1. 测试consumer与负载均衡

到上一步为止,咱们已经能够看到在Eureka的dashboard中已经有了好多个服务,以下图,主要包括:

一个服务注册server

一个消费者,用来进行远程调用

三个普通的client(其端口不同,来模拟分布式)

这时候,咱们调用咱们的consumer服务,浏览器里输入 http://localhost:8086/hello

获得的结果是不同的,一共有三个:

8083 端口为您服务!

8084 端口为您服务!

8085 端口为您服务!

正好就是咱们想要的结果。

不断的进行测试下去会发现3种结果交替出现,说明服务中心自动提供了服务均衡负载的功能。若是咱们将服务提供者的数量在提升为N个,测试结果同样,请求会自动轮询到每一个服务端来处理。

相关文章
相关标签/搜索