美文网首页
Consul 实现服务提供者和服务消费者

Consul 实现服务提供者和服务消费者

作者: Angle_洛熙 | 来源:发表于2020-09-20 19:56 被阅读0次

使用Consul为服务注册中心, 实现服务提供者和服务消费者。

Consul服务提供者

添加依赖

<!-- SpringCloud Consul依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

<!-- Actuator 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
        
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

添加配置

spring.application.name=consul-provider
server.port=8504
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.serviceName=service-provider
provider.name=p1

开启服务注册功能

在启动类中添加注解@EnableDiscoveryClient. 开启服务注册

服务接口

@RestController
public class HelloController {
    @Value("${provider.name}")
    private String name;

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

    @RequestMapping("/hello")
    public String hello() {
        return "provider:" + name + " port: " + port;
    }
}

配置服务提供者集群

接下来添加配置文件application-consul-provider.properties,添加Consul的地址和端口号。

添加配置

spring.application.name=consul-provider
server.port=8505
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.serviceName=service-provider
provider.name=p2

启动服务提供者集群

打包服务提供者,然后打包jar 后分别以consul-provider1、consul-provider2的配置参数启动服务提供者

java -jar consulprovider-0.0.1-SNAPSHOT.jar --spring.profiles.active=consul-provider1
java -jar consulprovider-0.0.1-SNAPSHOT.jar --spring.profiles.active=consul-provider2

运行后在Consul控制中心有两个服务提供者,ID分别是consul-provider-8504,consul-provider-8505.
访问http://localhost:8504/hello,网页显示:provider:p1 port:8504
访问http://localhost:8505/hello,网页显示:provider:p2 port:8505

Consul 服务消费者

添加依赖

<!-- SpringCloud Consul依赖 -->
<dependency>
        <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
        
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

添加配置

spring.application.name=consul-consumer
server.port=8506
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.register=false

编写服务接口调用

@RestController
public class HelloController {
   @Autowired
   private LoadBalancerClient loadBalancerClient;

    @GetMapping("/hello")
    public String hello() {
        ServiceInstance serviceInstance = loadBalancerClient.choose("service-provider");
        URI uri = serviceInstance.getUri();
        String callService = new RestTemplate().getForObject(uri + "/hello", String.class);
        System.out.println(callService);
        return callService;
    }
}

测试

多次访问http://localhost:8506/hello。网页交替出现provider:p1 port:8504 , provider:p2 port:8505,通过RestTemplate实现了客户端负载均衡。

相关文章

  • Consul 实现服务提供者和服务消费者

    使用Consul为服务注册中心, 实现服务提供者和服务消费者。 Consul服务提供者 添加依赖 添加配置 开启服...

  • 第三篇 服务提供者和服务消费者

    一、服务提供者和服务消费者概念 服务提供者:服务的被调用方(即:为其他服务提供服务的服务)服务消费者: 服务的调用...

  • 服务发现之consul

    什么是服务发现 服务发现有三个角色,服务提供者,服务消费者,服务中介。服务中介是联系服务提供者和服务消费者的桥梁。...

  • dubbo线程模型

    这里写dubbo线程模型,主要是讲服务消费者和服务提供者这两大核心的线程模型。 一 dubbo服务提供者线程模型。...

  • python基于zookeeper服务注册中心

    基于zookeeper服务注册中心实现注册中心模块 可用于注册服务的提供者和消费者 动态获取服务提供者和消费者的列...

  • springcloud使用(三) 服务提供与消费

    服务注册中心已经有了: 现在需要服务提供者和服务消费者案例要求很简单: 消费者调用服务请求hello, 根据传入参...

  • Eureka详解

    Eureka的三个核心角色:服务注册中心、服务提供者和服务消费者 基础架构 -服务注册中心:Eureka提供的服务...

  • 服务管理浅析

    ## 两种服务管理模式: # 对内服务: 分布式方案,负载均衡和服务发现能力集成到服务消费者内部,消费者和提供者是...

  • ZooKeeper、Eureka、Consul 、Nacos微服

    前言 服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这...

  • 微服务注册中心 ZooKeeper、Eureka、Consul

    前言 服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这...

网友评论

      本文标题:Consul 实现服务提供者和服务消费者

      本文链接:https://www.haomeiwen.com/subject/zkupyktx.html