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 依赖


    org.springframework.cloud
    
        spring-cloud-starter-netflix-eureka-client
    

       
           
               org.springframework.cloud
               spring-cloud-dependencies
               Hoxton.SR9
               pom
               import
           
       
   

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: 连接已建立,请求已发送,等待响应的超时时间

你可能感兴趣的:(java)