eureka 和 zookeeper 区别:
-
eureka:
- 强调 AP(可用性)
- 集群构造: 对等构造
-
zookeeper:
- 强调 CP (一致性)
- 集群构造: 主从构造
服务提供者
批改 host 文件, 增加 eureka1 和 eureka2 的映射配置C:\Windows\System32\drivers\etc
127.0.0.1 eureka1
127.0.0.1 eureka2
批改 02、03、04 这三个我的项目
1. 增加 eureka client 依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>
spring-cloud-starter-netflix-eureka-client
</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.yml 配置 eureka 的注册链接地址: http://eureka1:2001/eureka
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka
单台 eureka 服务器启动后报错: Connect to localhost:8761 timed out
这是主动配置的一个默认集群服务器, 然而这默认服务器不存在, 所以出错
前面搭建了集群服务, 默认服务器就不会再主动配置
sp02 商品, 和 sp05 eureka 集群
在另一个端口在启动一个商品服务
java -jar item.jar # 依据 application.yml 的配置启动
# 指定端口启动
java -jar item.jar --server.port=8002 #命令行参数能够笼罩 yml 配置
近程调用
RestTemplate
springboot 提供的近程调用工具
相似于 HttpClient, 能够发送 http 申请, 并解决响应.RestTemplate 简化了 Rest API 调用, 只须要应用它的一个办法, 就能够实现申请、响应、Json 转换
办法:
- getForObject(url, 转换的类型.class, 提交的参数)
- postForObject(url, 协定提数据, 转换的类型.class)
RestTemplate 和 Dubbo 近程调用的区别:
-
RestTemplate:
- http 调用
- 效率低
-
Dubbo:
- Rpc 调用,Java 的序列化
- 效率高
Ribbon
Springcloud 集成的工具, 作用是负载平衡, 和重试
负载平衡
Ribbon 对 RestTemplate 做了封装, 加强了 RestTemplate 的性能
1. 取得地址表
2. 轮询一个服务的主机地址列表
3.RestTemplate 负责执行最终调用
增加负载平衡
1.ribbon 依赖
2.@LoadBalanced 注解, 对 RestTemplate 进行性能加强
3. 批改调用地址, 应用服务 di, 而不是具体主机地址
Ribbon 重试
一种容错机制, 当调用近程服务失败, 能够主动重试调用, 客户端不晓得重试
增加重试:
1. 增加 spring-retry 依赖
2. 配置重试参数
1. 在 yml 中配置
MaxAutoRetries: 单台服务器的重试次数
MaxAutoRetriesNextServer: 更换服务器的次数
2. 在 java 代码中设置
ConnectTimeout: 与近程服务建设网络连接的超时工夫
ReadTimeout: 连贯已建设, 申请已发送, 期待响应的超时工夫