服务治理Spring Cloud Eureka

news/2024/11/9 13:27:10

1.Spring Cloud Eureka的作用

(1)建立Eureka服务端(也称为注册中心)

我使用的springboot的版本是2.0.5.RELEASE版本

① 添加依赖

在书中引入的是spring-cloud-eureka-server,但是当我引入这个依赖的时候,找不到@EnableEurekeServer

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
② 配置application-peer1.properties和application-peer2.properties文件

以下是application-peer1.properties的配置:

server.port=8001
spring.application.name=eureka-server

#eureka
eureka.instance.hostname=127.0.0.1
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://127.0.0.1:8002/eureka/
eureka.instance.prefer-ip-address=true

以下是application-peer2.properties的配置

server.port=8002
spring.application.name=eureka-server

#eureka
eureka.instance.hostname=127.0.0.1
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://127.0.0.1:8001/eureka/
eureka.instance.prefer-ip-address=true
③ 建立启动文件,添加@EnableEurekaServer注解
@ComponentScan(basePackages = "gdut.ff")
@EnableAutoConfiguration
@EnableEurekaServer
public class Main {
    public static void main(String args[]) {
        SpringApplication.run(Main.class, args);
    }
}
④ 启动,指定使用的配置文件

eureka-server-peer1
eureka-server-peer2

以上就建立了一个注册中心集群。

⑤ 演示效果

图片描述
图片描述

(2)建立Eureka客户端(也称为服务提供方)

① 添加依赖
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
② 配置application.properties
server.port=9001
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://127.0.0.1:8001/eureka/,http://127.0.0.1:8002/eureka/
eureka.instance.prefer-ip-address=true
③ 提供服务
@RestController
@RequestMapping("/hello")
public class HelloController {

    private final Logger logger = LoggerFactory.getLogger(HelloController.class);

    @Autowired
    private DiscoveryClient discoveryClient;

    @RequestMapping(value = "/index",method = RequestMethod.GET)
    public String index() {
        String serviceId = "hello-service";
        List<ServiceInstance> instance = discoveryClient.getInstances(serviceId);
        if(null != instance) {
            for(int i = 0;i < instance.size();i++) {
                System.out.println(instance.get(i).getHost() + ":" + instance.get(i).getPort());
            }
        }
        return "Hello,world";
    }
}
④ 建立启动文件,添加EnableDiscoveryClient注解
@ComponentScan(basePackages = "gdut.ff")
@EnableAutoConfiguration
@EnableDiscoveryClient
public class Main {
    public static void main(String args[]) {
        SpringApplication.run(Main.class, args);
    }
}
⑤ 启动,指定使用的端口

启动Main文件时,指定--server.port=xxx

访问http://ip:port/hello/index

(3)建立ribbon-consumer(也称为服务调用方)

① 添加依赖
<dependencies>
    <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-ribbon</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
② 配置application.properties
server.port=7001
spring.application.name=ribbon-consumer
eureka.client.service-url.defaultZone=http://127.0.0.1:8001/eureka/,http://127.0.0.1:8002/eureka/
eureka.instance.prefer-ip-address=true
③ 获取服务
@RestController
public class ConsumerController {

    @Autowired
    RestTemplate restTemplate;

    @RequestMapping(value = "/ribbon-consumer", method= RequestMethod.GET)
    public String helloConsumer() {
        return restTemplate.getForEntity("http://hello-service/hello/index",String.class).getBody();
    }
}
④ 建立启动文件,添加EnableDiscoveryClient注解
@ComponentScan(basePackages = "gdut.ff")
@EnableAutoConfiguration
@EnableDiscoveryClient
public class Main {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String args[]) {
        SpringApplication.run(Main.class, args);
    }
}
⑤ 启动

访问http://ip:port/ribbon-consumery

示例代码


http://www.niftyadmin.cn/n/4260303.html

相关文章

VirtualBox下虚拟机和宿主计算机共享文件夹

为什么80%的码农都做不了架构师&#xff1f;>>> 宿主&#xff1a;windows2003 虚拟机&#xff1a;windows XP 1、虚拟机设置 选中虚拟机&#xff0c;属性设置&#xff0c;在“数据空间”的窗口&#xff0c;在“固定分配”上点右键&#xff0c;选择“Add New Shared…

Dave Python 练习十三 -- 函数和函数式编程

#encodingutf-8 ######### 函数和函数式编程 ################ #********* Part 1: 函数 ******************* #函数是对程序逻辑进行结构化或过程化的一种编程方法。能将整块代码巧妙地隔离成易于管理 #的小块&#xff0c;把重复代码放到函数中而不是进行大量的拷贝--这样既能…

基于weka手工实现逻辑斯谛回归(Logistic回归)

一、logistic回归模型 逻辑斯谛回归模型其实是一种分类模型&#xff0c;这里实现的是参考李航的《统计机器学习》以及周志华的《机器学习》两本教材来整理实现的。 假定我们的输入为 x x x&#xff0c; x x x 可以是多个维度的&#xff0c;我们想要根据 x x x 去预测 y y y…

美阿拉斯加州发生5.4级地震 暂无人员伤亡及灾情报告

中新网1月14日电 据美国地质勘探局(U.S. Geological Survey)发布消息称&#xff0c;当地时间13日&#xff0c;美国阿拉斯加州安克雷奇(Anchorage)附近地区发生5.4级地震&#xff0c;目前尚未传出伤亡或其他灾情。资料图&#xff1a;当地时间2018年11月30日&#xff0c;美国阿拉…

实验十五、帧中继交换机的配置

实验十五、帧中继交换机的配置 一、 实验目的 1. 掌握FRAM-RELAY SWITCH 的配置 2. 理解DLCI、LMI 等概念 二、 应用环境 假设在银行系统里&#xff0c;总行和各分理处需要进行通讯&#xff0c;而分理处之间不需要通讯&#xff0c;帧中继是最 好的选择 三、 实验设备 1. DCR-17…

[HNOI2016]最小公倍数

题目描述 给定一张N个顶点M条边的无向图(顶点编号为1,2,…,n)&#xff0c;每条边上带有权值。所有权值都可以分解成2^a*3^b的形式。现在有q个询问&#xff0c;每次询问给定四个参数u、v、a和b&#xff0c;请你求出是否存在一条顶点u到v之间的路径&#xff0c;使得路径依次经过的…

再续 asp.net 域名欺骗式开发之泛解析域名

前言&#xff1a; 在很久前&#xff0c;曾发布过一篇&#xff1a;asp.net 域名欺骗式开发有不少新新人类表示对此文不屑&#xff0c;觉得太基础&#xff0c;他们早懂了&#xff0c;懂了就懂了&#xff0c;毕竟还有人还没有懂的。今天再续文&#xff0c;讲解域名欺骗式开发的进阶…

Dave Python 练习十五 -- 面向对象编程

#encodingutf-8 ### *************** 面向对象编程 ******************** #*********** Part 1: 面向对象编程 *********************** #面向对象编程踩上了进化的步伐&#xff0c;增强了结构化编程&#xff0c;实现了数据与动作的融合&#xff1a;数据层和逻 #辑层现在由一个…