`

动态流量切换路由降级方案之设计篇

阅读更多

动态流量切换路由降级方案之设计篇

nginx动态负载upstream四种方案之调研篇

     

 

1.整体架构方案

 


 
 
 
2.分解决执行
 
2.1动态流量切换选择模块ngx_dynamic_upstream,api+python方式(直接操作upstream里的server)
因为api接口操作不是太直观,在django上以web方式增删查改upstream  
 

HTTP APIs

You can operate upstreams dynamically with HTTP APIs.

list

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends"
server 127.0.0.1:6001;
server 127.0.0.1:6002;
server 127.0.0.1:6003;
$

verbose

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends&verbose="
server 127.0.0.1:6001 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6002 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6003 weight=1 max_fails=1 fail_timeout=10;
$

update_parameters

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends&server=127.0.0.1:6003&weight=10&max_fails=5&fail_timeout=5"
server 127.0.0.1:6001 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6002 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6003 weight=10 max_fails=5 fail_timeout=5;
$

The supported parameters are blow.

  • weight
  • max_fails
  • fail_timeout

down

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends&server=127.0.0.1:6003&down="
server 127.0.0.1:6001 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6002 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6003 weight=1 max_fails=1 fail_timeout=10 down;
$

up

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends&server=127.0.0.1:6003&up="
server 127.0.0.1:6001 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6002 weight=1 max_fails=1 fail_timeout=10;
server 127.0.0.1:6003 weight=1 max_fails=1 fail_timeout=10;
$

add

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends&add=&server=127.0.0.1:6004"
server 127.0.0.1:6001;
server 127.0.0.1:6002;
server 127.0.0.1:6003;
server 127.0.0.1:6004;
$

remove

$ curl "http://127.0.0.1:6000/dynamic?upstream=zone_for_backends&remove=&server=127.0.0.1:6003"
server 127.0.0.1:6001;
server 127.0.0.1:6002;
server 127.0.0.1:6004;
 
reference:
 
2.2 路由方案nginx+lua+api
1.制定路由规则
2.对外提供路由api(权限控制,暂时只提供get)
3.一键持久化redis数据,一键回复redis数据
4.冗余,容错机制
 
封装redis路由,restful api


 
 
2.3应用降级
     高流量,大并发等异常情况处理。
     这个方案的思路是跟前两个方案有两个内存关联,根据不同的场景,组合不同的操作细则
  • 大小: 150.5 KB
  • 大小: 38.1 KB
0
3
分享到:
评论

相关推荐

    Istio微服务治理方案.docx

    但是微服务化也带来了许多挑战,例如微服务之间的通信、身份验证、服务注册与发现、服务伸缩控制、路由控制、流量切换、日志管理、性能度量、监控与调优、分布式跟踪、过载保护、服务降级等问题。这些问题都需要一个...

    37_基于dubbo如何做服务治理、服务降级以及重试?.zip

    3. 降级策略:Dubbo允许开发者自定义降级策略,例如切换到降级服务、返回缓存数据、抛出异常等,以确保在服务不稳定时仍能提供一定程度的用户体验。 三、重试机制 1. 自动重试:Dubbo提供了自动重试功能,当服务...

    NepxionDiscovery-微服务企业级解决方案.docx

    Nepxion Discovery包含了多个关键特性,如灰度路由、灰度发布、服务隔离、限流熔断降级、调用链跟踪以及多机房切换支持。 1. **全链路灰度路由**:Nepxion Discovery支持基于Header传递的全链路灰度路由,网关作为...

    大流量稳定交易系统

    - **多机房部署**:当遇到机房入口流量故障或机房内部大面积故障时,可通过以下方式实现流量切换: - **DNS域名切换**:适用于处理机房入口处问题和机房内部故障,但由于其更改速度较慢且存在地域限制,可能不是...

    核心交易系统高可用架构设计.pptx

    服务路由切换、客户端主动切换、服务端变更、降级交易服务等功能可以确保在问题发生时,系统能迅速做出反应,降低影响。自动切换服务通过监控参数(如tp99、可用率)来判断并执行切换,而补偿调用则是服务失败时的一...

    京东王栋:618大促网关承载十亿调用量背后的架构实践

    在这篇文章中,京东的架构师王栋分享了618大促期间,面对十亿级别的调用量,如何设计和优化网关架构来承载如此巨大的流量和调用。这涉及到高并发架构的实战经验和对网关技术、技术栈的深入讲解。我们可以从中提取...

    spring cloud zuul

    **Spring Cloud Zuul** 是一个基于 Spring Framework 和 Netflix Zuul 的边缘服务工具,它作为微服务架构中的边缘服务器,提供动态路由、流量控制、安全、监控等功能。Zuul 主要是作为 API 网关,它负责处理所有来自...

    毕业设计,一个基于SpringCloudAlibaba、Nacos、Seata的分布式微服务商城系统

    这些功能可以帮助系统在出现故障时自动切换到健康的服务器,防止服务雪崩,并确保流量均匀分布到各个服务实例,提高系统性能。 6. **数据库设计**:在分布式微服务架构中,数据库的设计往往需要考虑分库分表、读写...

    Go-qsf是基于GRPC生态圈打造的一个简单易用功能强大的服务治理框架

    总而言之,Go-qsf是为Go开发者构建微服务而设计的高效框架,它整合了GRPC的优秀特性,提供了包括服务发现、负载均衡、熔断降级、路由管理等在内的全面服务治理功能。通过使用Go-qsf,开发者可以更轻松地构建稳定、...

    通信与网络中的号码携带集中管理系统高可用性技术研究

    2. **Web服务器层**:通过负载均衡器实现Web服务器集群,负载均衡可以使用硬件设备或软件解决方案(如Nginx、HAProxy等),在多台服务器间分配流量,当某台服务器出现问题时,能自动将流量切换至其他健康服务器。...

    大型分布式网站架构设计与实践.带目录书签.完整版

    在IT行业中,大型分布式网站架构设计与实践是构建高可用、高性能、高可扩展的互联网应用的核心技术。这种架构能够处理海量用户访问、大数据量处理和复杂业务逻辑,确保服务的稳定性和效率。以下是该主题的一些关键...

    youlai-mall-admin-master.zip

    SpringCloud Alibaba则是阿里巴巴提供的SpringCloud生态系统的扩展服务,它包含了一系列的中间件,如Nacos(服务注册与发现)、Sentinel(流量控制、熔断降级)、Seata(分布式事务解决方案)等,这些组件在实际的...

    2.基于Dubbo微服务框架亿级网关架构解密1

    4. **流量控制**:实现限流和熔断机制,保护系统免受大流量冲击。 5. **日志集中**:收集入口请求日志,便于分析和故障排查。 6. **文档管理**:维护最新的接口文档,清晰明确接口负责人。 7. **接口测试**:提供...

    银行容器云平台架构实践.pptx

    本篇资源摘要信息对应的银行容器云平台架构实践技术创新,变革未来分享内容。该平台架构实践技术创新,提供了容器平台(PaaS)建设、应用推广为云原生应用开发和运维提供最佳技术实践。 容器平台(PaaS)建设 容器...

    NSRP主备模式下的升级步骤

    7. **降级回退准备**:为了应对可能的紧急情况,需要准备降级方案。降级过程与升级类似,同样需要人工检查配置的一致性以及主备配置的同步。在跨大版本降级时,旧版配置可能丢失,因此需要预先保存并导入对应版本的...

    03-主流框架-04-dubbo.doc

    此外,通过Dubbo Admin,可以对服务进行动态配置,如调整服务版本、切换路由规则等。 总结,Dubbo作为一款强大的Java服务框架,通过服务化、集群化、治理化等手段,为大型分布式系统提供了可靠的支持。理解并熟练...

    大中台架构的电商业务中台实践一:业务中台总体架构介绍.docx

    Sentinel这样的流量控制工具和DubboKeeper监控框架用于保护服务的稳定性,实现熔断降级和系统负载保护。 总结来说,电商业务中台架构通过大中台+小前台的模式,结合DDD、服务化和组件化,实现了业务的灵活扩展和...

    阿里巴巴第四届天池比赛初赛题目--DubboMesh.zip

    4. **熔断与降级**:DubboMesh支持Hystrix等熔断机制,当服务调用出现异常时,能够快速失败并切换到降级策略,避免雪崩效应,保护整个系统的稳定性。 5. **监控与日志**:DubboMesh提供了丰富的监控和日志功能,...

    taobao dubbo框架

    2. **服务路由**:可以根据服务的元数据进行路由策略,例如,只调用特定版本的服务,或者只调用某一区域的服务。 3. **服务降级**:在系统压力过大时,可以将部分服务降级,保证核心服务的正常运行。 4. **服务限...

Global site tag (gtag.js) - Google Analytics