zoukankan      html  css  js  c++  java
  • springcloud

    springcloud汇总学习

    eureka 注册中心

    • ribbon负责负载均衡
    • eureka淘汰原因 本地服务列表更新不及时 根据定时任务
    • zk 基于事件 更新服务列表
    • actuator健康检查
    @Configuration(proxyBeanMethods = false)
    @ConditionalOnClass({ JdbcTemplate.class, AbstractRoutingDataSource.class })
    @ConditionalOnBean(DataSource.class)
    @ConditionalOnEnabledHealthIndicator("db")
    @AutoConfigureAfter(DataSourceAutoConfiguration.class)
    public class DataSourceHealthContributorAutoConfiguration extends
    		CompositeHealthContributorConfiguration<AbstractHealthIndicator, DataSource> implements InitializingBean {
    

    zk

    服务隔离 hastrix

    • 解决服务雪崩问题 一个坏接口导致其他正常接口也不能用了. 只给10个线程解决;给接口指定的并发量
    • 接口并发
    • 服务降级 类似有个钩子方法
    • 服务熔断 open 请求次数 成功率
    • 服务监控 监控工程搭建

    dubbo

    • 降级或mock调用

    feign client 包装异常

    分布式配置中心

    • 公共配置
    • 配置动态加载
    • 配置信息加密
    • refreshScop注解+刷新接口 很烂 只刷下一个应用接口
    • 消息总线 bus 整合mq来 动态加载 刷新所有应用接口 垃圾
    • 自定义scope就相当于从自定义的缓存中拿对象
    • @RefreshScope的类对象会重新实例化 相当于多例
    • 自己动态实现数据源的刷新 可以吗?

    服务网关

    Spring Cloud Gateway

    路由转发、权限校验、限流控制
    使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改
    RoutePredicateHandlerMapping
    1 GatewayLoadBalancerClientAutoConfiguration这个是gateway负载均衡的过滤器实现的加载,他将LoadBalancerClientFilter 注入到了容器中 
    2 LoadBalancerClient的实现类就是RibbonLoadBalancerClient,做负载均衡都离不开ribbon3
    3 最重要的 GatewayAutoConfiguration

    @Configuration
    
    @ConditionalOnClass({LoadBalancerClient.class, RibbonAutoConfiguration.class, DispatcherHandler.class})
    
    @AutoConfigureAfter(RibbonAutoConfiguration.class)
    
    public class GatewayLoadBalancerClientAutoConfiguration {
    
     // GlobalFilter beans
    
     @Bean
    
     @ConditionalOnBean(LoadBalancerClient.class)
    
     public LoadBalancerClientFilter loadBalancerClientFilter(LoadBalancerClient client) {
    
      return new LoadBalancerClientFilter(client);
    
     }
    
    }
    
    public class LoadBalancerClientFilter implements GlobalFilter, Ordered {
    
        /**
         * Filter order for {@link LoadBalancerClientFilter}.
         */
        public static final int LOAD_BALANCER_CLIENT_FILTER_ORDER = 10100;
    
        private static final Log log = LogFactory.getLog(LoadBalancerClientFilter.class);
    
        protected final LoadBalancerClient loadBalancer;
    
        private LoadBalancerProperties properties;
    

    zuul 连接配置中心eureka 根据路径路由到不同服务

    服务理由ribbon

    在实例化ZoneAwareLoadBalancer的时候注入了,config、rule、ping、serverList、serverListFilter、serverListUpdater实例。
    config:配置实例。
    rule:负载均衡策略实例。
    ping:ping实例。
    serverList:获取和更新服务的实例。
    serverListFilter:服务过滤实例。
    serverListUpdater:服务列表信息更新实例。

    策略类 命名 描述
    RandomRule 随机策略 随机选择server
    RoundRobinRule 轮询策略 按照顺序选择server(ribbon默认策略)
    RetryRule 重试策略 在一个配置时间段内,当选择server不成功,则一直尝试选择一个可用的server
    BestAvailableRule 最低并发策略 逐个考察server,如果server断路器打开,则忽略,再选择其中并发链接最低的server
    AvailabilityFilteringRule 可用过滤策略 过滤掉一直失败并被标记为circuit tripped的server,过滤掉那些高并发链接的server(active connections超过配置的阈值)
    ResponseTimeWeightedRule 响应时间加权重策略 根据server的响应时间分配权重,响应时间越长,权重越低,被选择到的概率也就越低。响应时间越短,权重越高,被选中的概率越高,这个策略很贴切,综合了各种因素,比如:网络,磁盘,io等,都直接影响响应时间
    ZoneAvoidanceRule 区域权重策略 综合判断server所在区域的性能,和server的可用性,轮询选择server并且判断一个AWS Zone的运行性能是否可用,剔除不可用的Zone中的所有server
  • 相关阅读:
    如何应对“需求不确定型项目”?
    Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED
    R语言之——字符串处理函数
    你看那个人他像一条狗
    BZOJ 3744: Gty的妹子序列 [分块]
    BZOJ 3731 3731: Gty的超级妹子树 [树上size分块 !]
    BZOJ 3720: Gty的妹子树 [树上size分块]
    BZOJ 4129: Haruna’s Breakfast [树上莫队 分块]
    SPOJ COT2 Count on a tree II [树上莫队]
    【WC2013】糖果公园 [树上莫队]
  • 原文地址:https://www.cnblogs.com/albertXe/p/14635266.html
Copyright © 2011-2022 走看看