# spring-cloud-eureka
**Repository Path**: shang2-8-5/spring-cloud-eureka
## Basic Information
- **Project Name**: spring-cloud-eureka
- **Description**: springCloud+eureka整合
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-10-12
- **Last Updated**: 2023-11-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 远程调用
```java
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
/**
* 完成RestTemplate并且注入spring容器 远程调用
* @return
*/
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
```
# Eureka注册中心
消费者如何获取服务者提供的具体信息
* 服务提供者启动时向eureka注册自己的信息
* eureka保存这些信息消费者根据服务名称向
* eureka拉取提供者信息
有多个服务提供者,消费者该如何选择
* 服务消费者利用负载均衡算法,从服务列表中挑选一个
消费者如何感知服务提供者健康状态?
* 服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态
* eureka会更新记录服务列表信息,心跳不正常会被剔除
* 消费者就可以拉取到最新的信息
## Eureka架构中,微服务的角色
EurekaServer: 服务端,注册中心
记录服务信息
心跳监控
EurekaClient:客户端
provider:服务提供者,如user-server
注册自己的信息到EurekaServer
每隔30秒向EurekaServer发送心跳
consumer:服务消费者,例如order-service
根据服务名称从EurekaServer拉取服务列表
基于服务列表做负载均衡,选中一个微服务后发起远程调用
## 远程服务拉取的两种方法
1. 修改OrderService的代码,修改访问的url路径,用服务名代替ip端口
```java
String url = "http://userservice/user/" + order.getUserId();
```
2. 在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解
```java
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
```
## 搭建步骤
1. 搭建EurekaServer
* 引入eureka-server依赖
* 添加 @EnableEurekaServer注解
* 在application.yml中配置eureka地址
2. 服务注册
* 引入 eureka-client依赖
* 在application.yml中配置eureka地址
3. 服务发现
* 引入 eureka-client依赖
* 在application.yml中配置eureka地址
* 给Rest Template添加@LoadBalanced注解
* 用服务提供者的服务名称远程调用
## Ribbon负载均衡

## 负载均衡流程

## 负载均衡策略


负载均衡配置策略

### 饥饿加载
Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,
请求时间会很长而饥饿加载则会在项目启动时创建,降低第一次访问的耗时, 通过下面配置开启饥饿加载:
```yml
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: # 指定饥饿加载的服务名称
- userserver
```
## 总结
1. Ribbon负载均衡规则
规则接口是IRule
默认实现是ZoneAvoidanceRule,根据zone选则服务列表,然后轮询
2. 负载均衡自定义方式
代码方式:配置灵活,但修改时需要重新打包发布
配置方式:直观,方便,无需重新打包发布,但是无法做全局配置
3. 饥饿加载
开启饥饿加载
指定饥饿加载的微服务名称