文档章节

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

明理萝
 明理萝
发布于 2019/04/10 09:26
字数 921
阅读 80
收藏 0

介绍

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

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

如何使用

创建服务中心

注册几个被调用服务

注册一个consumer

测试consumer与负载均衡

  1. 创建服务中心

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

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

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个,测试结果一样,请求会自动轮询到每个服务端来处理。

© 著作权归作者所有

明理萝
粉丝 73
博文 374
码字总数 356037
作品 0
深圳
私信 提问
加载中

评论(1)

明理萝
明理萝 博主
喜欢的朋友可以持续关注更新文章!
java B2B2C Springboot仿淘宝电子商城系统-负载均衡之ribbon+feign

一、 feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign注解和JAX-RS注解。Feign支持...

it菲菲
2019/01/04
0
0
Java B2B2C多用户商城 springcloud架构 --注册中心搭建

springCloud和springBoot之间的区别: springboot简化xml配置,快速整合框架 springcloud是一套微服务解决方案,主要用在RPC远程调用 springcloud和springboot之间的关系:springcloud(接口...

明理萝
2019/03/19
96
1
企业分布式微服务云SpringCloud SpringBoot mybatis (三) 服务消费者(Feign)

一、Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持...

2019/01/15
0
0
java B2B2C 源码 多级分销Springcloud多租户电子商城系统-Spring Cloud eureka

在构建项目之前,我们先学习一下eureka,这是官方的讲解,我这边再重新帮大家回顾一下:需要源码可以加企鹅球球:一零三八七七四六二六 来源: java B2B2C 源码 Springcloud多租户电子商城系...

park
2019/01/15
0
0
(十四)企业级java springcloud b2bc商城系统开源源码二次开发-在springboot中用redis实现消息队列

准备阶段 java 1.8 maven 3.0 idea 环境依赖 创建一个新的springboot工程,在其pom文件,加入spring-boot-starter-data-redis依赖: 注入消息接收者...

2019/01/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue组件通信应知必知

前言 本章我们来学习Vue组件通信中的可以算是所有内容,在此之前,您最好掌握Vue的基础语法、指令等内容,同时也建议您查看我其他的文章进行补充。 组件通信 父子组件关系 通过上图顺带给大家...

涂老师
14分钟前
64
0
按下时会两次调用UILongPressGestureRecognizer

我正在检测用户是否已按下2秒钟: UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self......

javail
18分钟前
48
0
图示JVM工作原理

JDK,JRE,JVM的联系是啥? JVM Java Virtual Machine JDK Java Development Kit JRE Java Runtime Environment 看上图官方的介绍讲的很清楚 JVM的作用是啥? JVM有2个特别有意思的特性,语言...

erlieStar
26分钟前
59
0
webpack 阶段回顾 之 webpack-dev-server

webpack-dev-server是一个让我们可以模拟线上环境进行项目调试的工具 主要功能有: 路径重定向 浏览器中显示编译错误 接口代理 如解决跨域 热更新 使用步骤 安装webpack-dev-server 配置dev...

东东笔记
50分钟前
78
0
sql按任意时间段分组统计

任意时间序列数据都可以按时间分组。 timestamp 为时间戳。 按每五分钟统计日志的数目 select floor(cast(logs.timestamp as int) / 60 / 5) as dt, count(logs.id)from ( selec...

Mr小Z
57分钟前
90
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部