从零开始的微服务搭建之路( 二 )

  • FallbackHeaders GatewayFilter Factory:FallbackHeaders允许在转发到外部应用程序中的FallbackUri的请求的header中添加Hystrix异常详细信息 。
  • PrefixPath GatewayFilter Factory:这将给所有匹配请求的路径加前缀 。
  • PreserveHostHeader GatewayFilter Factory:该filter没有参数 。设置了该Filter后,GatewayFilter将不使用由HTTP客户端确定的host header,而是发送原始host header。
    • RequestRateLimiter GatewayFilter Factory:RequestRateLimiter使用RateLimiter实现是否允许继续执行当前请求 。如果不允许继续执行,则返回HTTP 429 - Too Many Requests (默认情况下) 。
    • redis RateLimiter:令牌桶的填充速率 。
    • RedirectTo GatewayFilter Factory:该过滤器有一个 status 和一个 url参数 。status是300类重定向HTTP代码,如301 。该URL应为有效的URL,这将是 Location header的值 。
    • RemoveRequestHeader GatewayFilter Factory:有一个name参数. 这是要删除的header的名称 。
    • RemoveResponseHeader GatewayFilter Factory:有一个name参数. 这是要删除的header的名称 。
    • RewritePath GatewayFilter Factory:包含一个 regexp正则表达式参数和一个 replacement 参数. 通过使用Java正则表达式灵活地重写请求路径 。
    • RewriteResponseHeader GatewayFilter Factory:包含 name, regexp和 replacement 参数. 。通过使用Java正则表达式灵活地重写响应头的值 。
    • SetPath GatewayFilter Factory:它提供了一种通过允许路径的模板化segments来操作请求路径的简单方法 。使用Spring Framework中的URI模板,允许多个匹配segments 。
    • SetStatus GatewayFilter Factory:SetStatus GatewayFilter Factory 包括唯一的 status参数.必须是一个可用的Spring HttpStatus 。
    • StripPrefix GatewayFilter Factory:parts参数指示在将请求发送到下游之前,要从请求中去除的路径中的节数 。
    • Retry GatewayFilter Factory:Retry GatewayFilter Factory包括 retries, statuses, methods和 series 参数 。
    • RequestSize GatewayFilter Factory:当请求大小大于允许的限制时,RequestSize GatewayFilter Factory可以限制请求不到达下游服务 。过滤器以RequestSize作为参数,这是定义请求的允许大小限制(以字节为单位) 。
    Ribbon的LoadBalancer的主要组件
    从零开始的微服务搭建之路

    文章插图
    Ribboon主要组件
    • IPing:客户端用于快速检查服务器当时是否处于活动状态(心跳检测)
    • IRule:负载均衡策略,用于确定从服务器列表返回哪个服务器
    • ServerList:可以响应客户端的特定服务的服务器列表
    • ServerListFilter:可以动态获得的具有所需特征的候选服务器列表的过滤器
    • ServerListUpdater:用于执行动态服务器列表更新
    IRule
    • RoundRobinRule:系统默认的规则,通过简单轮询服务列表来选择服务器 。
    • AvailabilityFilteringRule:该规则会忽略一下服务器 。无法连接的服务器 。默认情况下,3次连接失败,服务器会被置为短路的状态,状态持续为30秒;再次连接失败,短路的状态持续时间将会以几何数增加 。可以通过修改connectionFailureCountThreshold属性,配置连接失败的次数 。并发数过高的服务器 。可以修改ActiveConnectionsLimit属性来设置最高并发数 。
    • WeightedResponseTimeRule: 为每个服务器赋予一个权重值,服务器的响应时间越长,权重就越小,随机选择服务器,权重值有可能会决定服务器的选择 。
    • ZoneAvoidanceRule: 该规则以区域、可用服务器为基础进行服务器选择 。使用Zone对服务器进行分类 。
    • BestAvailableRule: 忽略短路的服务器,并选择并发数较低的服务器 。
    • RandomeRule: 随机选择可用的服务器 。
    • RetryRule: 含有重试的选择逻辑 。
    IPing检查实例是否存活 。如何ping 。实现类:
    • NoOpPing: 不进行Ping 。
    • DummyPing:默认实现,标记存活的服务器 。
    • NIWSDiscoveryPing: 假设服务器存活 。
    • PingUrl: 一种健康检查的ping 。
    ServerList获取服务器列表 。
    • DiscoveryEnabledNIWSServerList: 从Eureka 客户端获取服务器列表 。
    • DomainExtractingServerList: 基于domain获取服务列表 。
    • ConfigurationBasedServerList: 从配置中获取服务器列表
    ServerListFilter在获取的服务器列表中进行获取 。