SpringCloud学习(二)——Eureka注册中心

本文介绍Eureka作为服务注册中心的作用及其实现原理。包括搭建Eureka注册中心、服务注册流程、多实例部署测试和服务发现等内容。

1. Eureka 出现原因

1.1 远程调用出现的问题

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

远程调用有几个问题不得不进行考虑,如下

  • 服务消费者该如何获取服务提供者的地址信息?
  • 如果有多个服务提供者,消费者该如何选择?
  • 消费者如何得知服务提供者的健康状态?

1.2 Eureka注册中心

Eureka注册中心就是为了解决这些问题才出现的,Eureka的作用可以在下图中体现出来。
在这里插入图片描述
针对上面的三个问题,Eureka用下面的方式进行解决:

  • 服务消费者该如何获取服务提供者的地址信息?在Eureka中,服务提供者启动时向eureka注册自己的信息,eureka保存这些信息。消费者根据服务名称向eureka拉取提供者信息。

  • 如果有多个服务提供者,消费者该如何选择?如果存在多个可用的服务提供者,服务消费者利用负载均衡算法,从服务列表中挑选一个,该算法我们将会在后面讲到。

  • 消费者如何得知服务提供者的健康状态?服务提供者会每隔30秒向Eureka Server发送心跳请求,报告健康状态,eureka会更新记录服务列表信息,心跳不正常会被剔除消费者就可以拉取到最新的信息。

2. 搭建Eureka注册中心

这里我们继续使用前面的案例来进行示范。

2.1 创建模板

在最顶级的目录中创建一个新的Module,如下所示。
在这里插入图片描述
然后选择Spring模板,如下:
在这里插入图片描述
之后勾选Eureka Server,完成模板的创建。
在这里插入图片描述

2.2 添加依赖

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

并且在启动类前面加上注释 @EnableEurekaServer,如下

@EnableEurekaServer
@SpringBootApplication
public class EurakeServeApplication {

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

}

2.3 配置文件

在springboot的配置文件中对其进行配置,配置信息如下:

server:
  port: 10086
spring:
  application:
    name: eurekaserver
eureka:
  client:
    service-url:
      # Eureka的注册中心地址
      defaultZone: http://127.0.0.1:10086/eureka/

2.4 Eureka测试

运行上面的微服务,打开对应的地址 http://localhost:10086/ 可以得到下面的场景
在这里插入图片描述

在这些信息中,最重要的就是红框中的信息,代表着微服务的注册和中心和提供者。

2. 服务注册

接下来我们就可以尝试将微服务提供者注册到Eureka了。

2.1 导入依赖

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

注意:,注入的依赖一定要有spring-cloud-starter-netflix-eureka-client,而不能光是spring-cloud-netflix-eureka-client,这个坑我替你们踩了。

2.2 配置文件

在配置文件中进行配置,配置如下:

spring:
  application:
    name: userserver
eureka:
  client:
    service-url:
      # Eureka的注册中心地址
      defaultZone: http://127.0.0.1:10086/eureka

注意上面的 spring.application.name 的名字内容要变。

2.3 测试

重启微服务进行测试,打开 http://localhost:10086/,看到如下画面
在这里插入图片描述
发现注册的Serve全在里面,表示注册成功。

3. 一个服务启动多实例测试

点击微服务启动的右键,选择 Copy Configuration
在这里插入图片描述
如果完全复制的话会产生端口冲突,这里修改第二个实例的端口,如下图

在这里插入图片描述
点击OK或者Apply后,在Not Started 下面就会出现UserService的另一个实例,将其启动。
在这里插入图片描述
运行后在Eureka注册中心查看,可以看到有两个UserServer实例。
在这里插入图片描述

4. 服务发现

首先在Order的启动类中添加负载均衡 @LoadBalanced 的注解,如下

@Bean
@SpringBootApplication
public class OrderApplication {

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

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

}

然后将访问的地址进行改变,变为 "http://userserver/user/id"

@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
    // 根据id查询订单并返回
    Order order = orderService.queryOrderById(orderId);
    String url = "http://userserver/user/" + order.getUserId();

    User forObject = restTemplate.getForObject(url, User.class);
    order.setUser(forObject);
    return order;
}

这样,访问userserver的时候Eureka会自动选择一个示例来进行访问。

测试时,例如调用 http://localhost:8080/order/101 发现同样可以访问,这样就避免了让我们选取实例访问的问题了。

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值