码迷,mamicode.com
首页 > 编程语言 > 详细

spring cloud 01

时间:2017-12-19 15:13:22      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:分布式系统   register   nts   pass   and   安全   new   family   包括   

1·spring cloud 提供分布式系统工具

  配置中心、服务发现、熔断(超时错误处理)、路由(拦截)、微代理、控制总线、leader选举、分布式session、集群状态

2·已接触子项目

  config,配置项目+配置中心(本地、git、subversion)

  netflix,开发工具包,包括eureka、hystrix、zuul、archaius等

  hystrix,容错管理工具

  zuul,边缘服务工具,提供动态路由,监控,弹性,安全服务

3·服务发现模块

  1·pom文件

    spring-cloud-starter-eureka-server

  2·在APP类上添加@EnableEurekaServer注解

  3·配置文件

    server.port=1111

    #禁用它的客户端注册行为

    eureka.client.register-with-eureka=false

    eureka.client.fetch-registry=false

    #注册中心地址

    eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

4·生产者

  1·pom依赖

    spring-cloud-starter-eureka

  2·在APP类上添加@EnableDiscoveryClient注解

  3·配置信息

    #服务实例名

   spring.application.name

   server.port=2222

    eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

5·消费者

  1·使用ribbon做负载均衡

    ribbon是基于http和tcp客户端的负载均衡器,通过客户端中配置的ribbonServerList服务端列表去轮询访问

    当ribbon和eureka联合时,ribbobServerList被discoveryEnabledNIWSServerList重写,扩展为从eureka注册中心获取服务端列表。同时用NIWSDiscoveryPing来去掉IPing

  2·ribbon使用

    pom依赖:spring-cloud-starter-ribbon

    APP类上@EnableDiscoveryClient注解来添加发现服务能力,@EnableFeignClients注解请求其他服务

    APP类中创建restTemplate实例,并通过@loadBalanced+@bean注解开启负载均衡

6·断路器(处理延时、出错故障)

  向调用方返回一个错误相应,而不是长时间的等待

  spring cloud中使用hystrix

  使用

    1·pom依赖

      spring-cloud-starter-hystrix

    2·APP类上@EnableCircuitBreaker来开启断路器功能

    3·在使用ribbon消费服务的函数上增加@HystrixCommand注解来指定回调方法。

      feign使用Hystrix

        pom不需要引入hystrix,feign中已经依赖了

        使用@feignClient注解的fallback属性指定回调类

        创建回调类实现这个借口,实现错误处理方法

7·配置中心

  原理

    git上存放配置文件

    config-server连接到git

    config-client连接到config-server

    启动config-client时,config-client通过config-server拿到远程git上的配置文件,通过soring加载到对象中

  使用

    1·添加pom依赖

      spring-cloud-config-server

    2·APP类上@EnableConfigServer

    3·配置文件

      spring.application.name=config-server

      server.port=7001

      spring.cloud.config.server.git.uri=http://git.oschina.net/zjb_china/SpringCloud-Learning

      spring.cloud.config.server.git.searchPaths=Chapter9-1-4/config-repo
      spring.cloud.config.server.git.username=username
      spring.cloud.config.server.git.password=password

    4·仓库一般有四类文件

      

    •   users.properties
    •   users-dev.properties
    •   users-test.properties
    •   users-prod.properties

    5`url和配置文件的映射关系

      /{label}/{application}-{profile}.yml,{label}对应git上不同的分支,默认为master

        例:要访问dev2分支,users应用的prod环境,可以通过:http://localhost:7001/users/prod/dec2

    6`消费者如何获取配置信息

      1`pom依赖:spring-cloud-starter-config

      2`boostrap.yml配置config-server

        spring.application.name=users

        spring.cloud.config.profile=test

          spring.cloud.config.label=dev2

         spring.cloud.config.discovery.serviceId=config-server

          spring.cloud.config.discovery.enabled=true

        server.port=7002

      3`@Value("${from}")

        private String from;绑定配置服务中心配置的from属性
    7·不重启config-client情况下更新配置信息
      client中添加pom依赖:spring-boot-starter-actuator
      在需要自动更新配置的java类上@RefreshScope 修饰
      以后更新git上配置文件时候,config客户端执行http://localhost:8080/refresh 就可以更新刷新配置变量到内存中了
      那么问题来了,集群怎么办?
        使用spring cloud bus解决
          需要依赖AMQP、Redis、Kafka组件
















































 

spring cloud 01

标签:分布式系统   register   nts   pass   and   安全   new   family   包括   

原文地址:http://www.cnblogs.com/fort-lizhiji/p/8064913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!