zoukankan      html  css  js  c++  java
  • spring cloud 服务消费

    Ribbon

      Ribbon可以在通过客户端中配置的ribbonServerList服务端列表去轮询访问以达到均衡负载的作用。

      当Ribbon与Eureka联合使用时,ribbonServerList会被DiscoveryEnabledNIWSServerList重写,扩展成从Eureka注册中心中获取服务端列表。

      同时它也会用NIWSDiscoveryPing来取代IPing,它将职责委托给Eureka来确定服务端是否已经启动。

    操作:

      再起一台服务,修改端口

    此时在看注册中心

    使用Ribbon实现客户端负载均衡的消费者

    构建一个基本Spring Boot项目,并在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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.clc</groupId>
        <artifactId>clc-client</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>registry</name>
        <description>Demo project for Spring Boot</description>
    
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.3.5.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-ribbon</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Brixton.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>

    在应用主类中,通过@EnableDiscoveryClient注解来添加发现服务能力。创建RestTemplate实例,并通过@LoadBalanced注解开启均衡负载能力。

    @EnableDiscoveryClient
    @SpringBootApplication
    public class ClientApplication {
        @Bean
        @LoadBalanced
        RestTemplate restTemplate() {
            return new RestTemplate();
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ClientApplication.class, args);
        }
    }

    创建ConsumerController来消费COMPUTE-SERVICE的add服务。通过直接RestTemplate来调用服务,计算10 + 20的值。

    package com.clc.client.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController
    public class ConsumerController {
    
        @Autowired
        RestTemplate restTemplate;
    
        @RequestMapping(value = "/add", method = RequestMethod.GET)
        public String add() {
            return restTemplate.getForEntity("http://clc-service/add?a=10&b=20", String.class).getBody();
        }
    
    }

    application.properties中配置eureka服务注册中心

    #服务名
    spring.application.name=clc-client
    
    server.port=9004
    #注册中心地址
    eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka/

    启动该应用,并访问两次:http://localhost:9004/add

    然后,打开clc-service的两个服务提供方,分别输出了类似下面的日志内容:

    • 端口为9002服务提供端的日志:
    2018-08-31 15:40:39.766  INFO 4758 --- [io-9002-exec-10] c.c.s.c.ComputeController@7c1c5936       : /add, host:192.168.43.85, service_id:clc-service结果:2
    • 端口为9003服务提供端的日志:
    2018-08-31 15:40:45.278  INFO 4802 --- [nio-9003-exec-3] c.c.s.c.ComputeController@47289387       : /add, host:192.168.43.85, service_id:clc-service结果:2
  • 相关阅读:
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容(2)--理解SP Server2010的Web内容管理
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容(1)--创建一个发布网站
    一步步学习SPD2010--第十三章节--管理SP Server环境的Web内容
    一步步学习SPD2010--第十二章节--理解可用性和可接入性(8)--关键点
    亚马逊推自家云备份产品,第三方云备份厂商压力山大 中国存储网
    几何概率模型是什么
    宋浩《概率论与数理统计》笔记---1..1.1-1.1.3、概率论基本概念
    机器学习疑难---1、什么是多元线性回归
    最大似然估计线性回归实例
    Hopfield神经网络 简介
  • 原文地址:https://www.cnblogs.com/chenglc/p/9566164.html
Copyright © 2011-2022 走看看