乐趣区

关于java:SpringCloud学习02

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: 连贯已建设, 申请已发送, 期待响应的超时工夫
退出移动版