• spring cloud


     
    Spring Cloud 专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。
    • 分布式/版本化配置
    • 服务注册和发现
    • 路由
    • service-to-service调用
    • 负载均衡
    • 断路器
    • 全局锁
    • Leadership选举与集群状态
    • 分布式消息传递
     
    Commons
    Spring Cloud Commons 提供了两个类库: Spring Cloud Context and Spring Cloud Commons.
    Spring Cloud Context 提供应用(bootstrap context, encryption, refresh scope 和 envirionment endpoints)中ApplicationContext实用应用和的特定服务
    Bootstrap Context 改变Bootstrap的位置Properties 覆盖远程Properties的值 自定义引导配置 环境变化 。
    TextEncryptor beans
    Refresh Scope
    Spring Boot Actuator endpoints
    Spring Cloud Commons 是其它组件(Netflix与Consul)的抽象通用类。
    DiscoverClient接口,提供注解 @EnableDiscoveryClient, 默认情况下,DiscoveryClient的实现将使用远程发现服务器自动注册本地Spring Boog 服务器。
    ServiceRegistry接口 允许提供自定义的注册服务。
    RestTemplate 做为虚拟主机调用及负载均衡器客户端。
    重试失败的请求: RestTemplate可以配置为重试失败的请求,默认情况下,该逻辑被禁用,可以通过配置来设置: spring.cloud.loadbalancer.retry.enabled=false。可以使用属性 client.ribbon.MaxAutoRetries, client.ribbon.MaxAutoRetriesNextServer和client.ribbon.OkToRetryOnAllOperations.
     
    Config
    Spring Cloud Config 为分布式系统中的外部化配置提供服务器和客户端支持。客户端和服务器映射的概念与Spring Environment和PropertySource抽象相同中。服务器存储后端的默认实现使用git。
    Spring-cloud-config-server 该服务是一个spring boot 应用程序。
    客户端配置bootstrap.properties文件:spring.cloud.config.uri: http://myconfigserver.com
    服务器可以使用@EnableConfigServer,配置application.properties文件:spring.cloud.config.server.git.uri
     
    Netflix eureka
    服务发现 Eureka。
    注册Eureka: 客户端启动类添加:@EnableEurekaClient,配置文件添加:eureka.client.serverUrl.defaultZone=http://localhost:8761/eureka/ 启动后会向服务端注册自己服务: spring.application.name与 server.port.
    eureka服务端:启动类添加:@@EnableEurekaServer
    Netflix Hystrix
    断路器,在特定服务的请求达到一定的阈值时,Hystrix回退防止级联故障。
    启动类添加: @EnableCircuitBreaker
    在需在添加断路器的方法如下:
    @Component public class StoreIntegration { @HystrixCommand(fallbackMethod = "defaultStores") public Object getStores(Map<String, Object> parameters) { //do stuff that might fail } public Object defaultStores(Map<String, Object> parameters) { return /* something useful */; } }
    Hystrix仪表板,启动类添加@EnableHystrixDashboard,访问 /hystrix,会显示断路器情况。
     
    Netflix Ribbon 客户端负载均衡
    Ribbon是一个客户端负载均衡器,提供功能:负载均衡 Load balancing、容错 Fault tolerance、多协议 Multiple protocol support in an asynchronos and reactive model、缓存 Caching and batching.
    在定义RestTemplate类上添加注解 @LoadBalanced,可以将Ribbon结合到RestTemplate中使用。
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
    SimpleClientHttpRequestFactory clientFactory = new SimpleClientHttpRequestFactory();
    clientFactory.setConnectTimeout(5 * 60 * 1000);
    clientFactory.setReadTimeout(5 * 60 * 1000);
    return new RestTemplate(clientFactory);
    }
    Netflix Feign
    feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。 Feign底层合用了ribbon作为负贲均衡。
    启动类添加注解: @FeignClient
    @FeignClient(value = "CART") public interface CartFeignClient { @PostMapping("/cart/{productId}") Long addCart(@PathVariable("productId")Long productId); }
    使得调用远程接口时,像调用本地方法一样。
     
    Netflix Zuul
    Zuul是一个API Gateway服务器,提供动态路由、监控、弹性、安全等边缘服务。是否可以替换nginx?
    Netflix Turbine
    将每一个(指定)服务的Hystrix/stream中的状态信息取出,并集中处理(计算与展示),主要配合Hystrix使用。
    Stream
    Spring cloud stream 是一个构建消息驱动微服务的框架,应用程序通过inputs 或者outputs来与Spring Cloud Stream中binder交互。解决了开发人员无感知的使用消息中间件的问题。
    Bus
    Spring Cloud Bus 就是借助消息驱动来实现将消息(事件)广播到各个服务顺,然后服务对这些地消息进行消费,基于Stream来完成跨服务的消息传输。 是跨服务的Spring的事件机制的实现。
    Sleuth
    Spring Cloud Sleuth实现了分布式链路跟踪解决方案。引用包后,可以在日志中打印traceId与spanId等,也可以将信息上报到zipkin.
    Consul
    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。内置了服务注册与发现框架、分布一致性协议实现、健康检查、key/value存储、多数据中心方案,使用Go语言编写。eureka2.X已经停止开发,Consul是一个很好的替代。
    Zookeeper
    Spring cloud zookeeper可以借助zookeeper实现配置中心的功能。但CAP原则中只实现了CP
    C Consistency 数据一致性
    A Availability 可用性
    P Partition Tolerance 分区容错性
    CLI
    CLI(Command Line Interface)提供Spring启动命令行功能,可以用于命令行运行像Eureka, Config Server等常用服务:
    spring cloud eureka configserver h2 kafka zipkin
    Security
    Spring Security 致力于Java 应用提供认证和授权管理。可以基于RBAC(基于角色的权限控制)对用户的访问权限进行控制,核心思路是通过一系列的filter chain 来进行拦截过滤。
     
     参考资料:

  • 相关阅读:
    __doPostBack的使用
    【转】function,new,constructor and prototye
    谈谈一些网页游戏失败的原因到底有哪些?(转)
    全面剖析页游巨头发家史(转)
    2013.02.20开通博客
    老子喜欢的女人
    如何成为强大的程序员?(转)
    注重健康
    学习方法总结
    数据库知识点滴积累
  • 原文地址:https://www.cnblogs.com/zyzl/p/11537998.html
Copyright © 2020-2023  润新知