`
eric_weitm
  • 浏览: 242796 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring4 系列四 cloud

 
阅读更多

一、概述 spring提供了一套分布式环境的基础框架,可以用于实现基于服务的架构。使用这些服务基本上都需要添加pom依赖、添加配置、代码中添加注解。

二、具体服务

1、服务注册和发现

<groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-eureka-server</artifactId>

 

    @EnableEurekaServer

 

    eureka:

  instance:

    hostname: peer1

 client:

    serviceUrl:

      defaultZone: http://peer2:8762/eureka/ # 互相备份

 

    2、具体服务的注册

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-eureka</artifactId>

 

    @EnableDiscoveryClient

    @Autowired

  private DiscoveryClient discoveryClient;

 

    eureka:

 client:

   serviceUrl:

     defaultZone: http://10.88.102.203:8761/eureka/

 instance:

   preferIpAddress: true

3、消费服务方式一 ribbon

ribbon可以实现寻找同一个Zone且负载较少的eureka Server,通过uereka server获取服务列表,客户端负载均衡、超时重试等逻辑。

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-ribbon</artifactId>

 

@LoadBalanced

public RestTemplate restTemplate() {

return new RestTemplate();

}

// 通过url找服务

restTemplate.getForObject("http://xxx/" + id, User.class); 

 

   eureka:

 client:

   serviceUrl:

     defaultZone: http://10.88.102.203:8761/eureka/

 instance:

   preferIpAddress: true

 

4、消费服务 方式二 Feign

整合ribbon,简化代码,适合于一次性调用很多个服务的时候

<groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-feign</artifactId>

 

@EnableFeignClients

@EnableDiscoveryClient

 

@FeignClient(name = "microservice-provider-user")

public interface UserFeignClient {

 @RequestMapping("/{id}")

 // 通过函数名来找服务

 public User findByIdFeign(@RequestParam("id") Long id); 

}

 

ribbon:

 eureka:

   enabled: true   

 

5、Hystrix 熔断器 隔离故障的范围

<groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-hystrix</artifactId>

 

    @EnableCircuitBreaker

    1》ribbon:

    // 注意fallback的函数签名要和调用函数本身一致

    @HystrixCommand(fallbackMethod = "fallback")

    2》forein: 直接传递第二个参数(函数的重载)即可

    @FeignClient(name = "microservice-provider-user", fallback = HystrixClientFallback.class)

 

    6、对熔断器的监控 Hystrix Dashboard

    <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>

 

      @EnableHystrixDashboard

 

    7、同时收集多个服务的监控数据 Turbine

    <dependency>

      <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-starter-turbine</artifactId>

    </dependency>

    <dependency>

      <groupId>org.springframework.cloud</groupId>

      <artifactId>spring-cloud-netflix-turbine</artifactId>

    </dependency>

 

    @EnableTurbine

 

    security.basic.enabled: false

turbine:

 aggregator:

   clusterConfig: default

 appConfig: serviceid1, serviceid2 

 clusterNameExpression: new String("default")

 

8、统一配置

<groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-config-server</artifactId>

 

    @EnableConfigServer

 

    cloud:

    config:

      server:

        git:

          uri: https://github.com/xxx

          search-paths: dir

          username:        

          password:

 

 

    使用方:

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-config</artifactId>

 

    @RefreshScope

@Value("${profile}")

private String profile;

 

bootstrap.yml(数据加载顺序:bootstrap config application,如果在application中,实现不了占位符的替换)

  cloud:

   config:

     uri: http://config-server:8040/

     profile: dev                      

     label: master       

 

 

使用方刷新:curl  -X POST http://localhost:8041/refresh

9、网关 Zuul提供了动态路由、监控、回退、安全等功能。

<groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-zuul</artifactId>

 

    @EnableZuulProxy

 

    zuul:

 ignored-services: xxxx

 routes:

   movie:                                                            

     path: /movie/**

     service-id: yyyy

 

三、常用命令

java -jar target/**.jar --spring.profiles.active=peer1 > peer1.log 2>&1 &

 

分享到:
评论

相关推荐

    spring cloud 体系版本选型,涉及spring cloud alibaba spring boot spring cloud

    4. **关注兼容性**:确保所有选用的组件(如Spring Cloud、Spring Boot和Spring Cloud Alibaba)之间的版本兼容性。 5. **持续关注更新**:即使选择了稳定版本,也需要定期关注新的版本发布,以便及时获取最新的...

    SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点

    SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点或者说技能点且都有对应的博客介绍,代码开箱即用适合新手学习或老司机复习。 SpringCloud系列Demo代码,每个子项目都是SpringCloud的一个知识点...

    Spring Cloud实战 _springcloud实战_springcloud_

    总而言之,Spring Cloud通过一系列的组件和服务,构建了一个完整的微服务生态系统,覆盖了从服务注册、服务发现、服务调用、容错保护、配置管理到消息处理等多个方面,极大地提升了开发效率和系统的可扩展性。...

    Spring Cloud 系列脚手架项目,面向 Spring Cloud 初学者

    Spring Cloud 和队列的其他框架一样,说到底只是一个工具。其实没有什么涉及可言,只要花点时间实践一下,人人都可以使用。工具的使用都是一样的,所以使用手册也是...Spring Cloud系列之 Spring Cloud Stream :源码

    Spring boot,springCloud精选视频教程

    .使用Spring Cloud搭建服务注册中心 2.使用Spring Cloud搭建高可用服务注册中心 3.Spring Cloud中服务的发现与消费 4.Eureka中的核心概念 5.什么是客户端负载均衡 ...31.Spring Cloud系列勘误

    spring-cloud项目

    Spring还有一系列的扩展,包括Spring MVC(用于构建Web应用)、Spring Data(数据访问层的支持)、Spring Security(安全控制)等。Spring Cloud则是Spring生态系统的一部分,专为微服务架构提供一整套工具。 ...

    springcloud视频

    本系列视频教程将带你深入理解SpringCloud的核心概念和技术,助力你在微服务领域扎实前行。 首先,我们来探讨一下"SpringCloud微服务技术栈有哪些"。SpringCloud是一系列工具和框架的集合,旨在简化微服务的开发和...

    SpringCloud项目实战各组件源代码案例

    Spring Cloud系列教程 Spring Boot Spring Cloud Stream 和 Kafka案例教程 springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud ...

    springcloud-demo-master_spring-cloud_cloud_

    2. **Spring Cloud**: 基于Spring Boot设计的一系列微服务解决方案,用于简化微服务架构的开发和运维,提供了一整套的微服务开发工具。 3. **Eureka**: Spring Cloud的服务注册与发现组件,服务提供者将自身注册到...

    spring cloud demo

    Spring Cloud是一系列框架的集合,它为开发者在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作中提供了简单易用的开发工具。...

    Spring Cloud之一 Spring Cloud简介

    4. Spring Cloud Sleuth:集成了分布式跟踪解决方案,可以对请求进行跟踪,以便于开发和运维人员监控和分析微服务架构中的问题。 5. Spring Cloud Security:基于Spring Security的安全工具包,提供应用安全控制。 ...

    SpringCloud.pdf

    分布式系统的复杂性催生了一系列模板模式,Spring Cloud 提供了一站式的解决方案,使得开发者能够快速支持并实现这些模式,无论是在个人笔记本、裸机数据中心还是托管在 Cloud Foundry 等云平台上。 Spring Cloud ...

    30 道 Spring Cloud 面试题及答案.docx

    Spring Cloud 是一系列框架的有序集合,利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发...

    全套spring cloud 项目

    Spring Cloud是一系列框架的集合,其基于Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,构建了服务治理(发现注册)、配置中心、消息总线、负载均衡、断路器、数据监控、分布式会话和集群状态管理等...

    SpringCloud 15个完整例子

    4. **Spring Cloud Zuul**:Zuul是边缘服务和API网关,它可以处理所有微服务的路由请求,提供过滤功能,如认证、监控等,同时也可以实现动态路由、安全控制等功能。 5. **Spring Cloud Config**:Config是配置管理...

    spring cloud系列博客完整源代码

    标题 "spring cloud系列博客完整源代码" 提供的是一个关于 Spring Cloud 的系列教程的源代码,这通常意味着读者可以深入理解每个组件的实际工作方式,以及如何将它们集成到实际的在线视频网站项目中。通过学习这些源...

    spring-cloud 集成 flowable 工作流

    首先,Spring Cloud是构建分布式系统的一系列工具集,包括服务发现、配置管理、熔断机制等,它为微服务架构提供了强大的支持。而Flowable是一款开源的工作流和业务流程管理系统,其特点是灵活、可扩展且易于使用,...

    Spring Cloud Alibaba操作手册.pdf

    Spring Cloud Alibaba 基于 Spring Cloud,提供了一系列的组件和工具,帮助开发者快速构建分布式系统。 Nacos Nacos 是一个开源的微服务架构解决方案,旨在提供服务注册、服务发现、配置管理和流量管理等功能。...

    Spring cloud和Spring boot介绍

    - **微服务治理框架**:Spring Cloud 是一系列框架的集合,旨在简化分布式系统的基础设施建设,如服务发现注册、配置中心、消息总线等。 - **分布式系统开发工具包**:Spring Cloud 提供了一系列工具包,使得开发者...

    spring-cloud使用的各种示例

    - [Spring Cloud (十四):Spring Cloud 开源软件都有哪些?](http://www.ityouknow.com/springcloud/2018/08/06/spring-cloud-open-source.html) - [springcloud(十五):服务网关 Spring Cloud GateWay 初级篇]...

Global site tag (gtag.js) - Google Analytics