架构之微服务设计(Nginx + Upsync)
2017-05-04 21:55
260 查看
Upsync,微博开源基于Nginx容器动态流量管理方案 。
Nginx 以其超高的性能与稳定性,在业界获得了广泛的使用,微博的七层就大量使用了 Nginx 。结合 Nginx 的健康检查模块,以及动态 reload 机制,可以近乎无损的服务的升级上线与扩容。这个时候扩容的频次比较低,大多数情况下是有计划的扩容。
Upsync,开发了模块 nginx-upsync-module,它的功能是拉取 consul 的后端 server 的列表,并更新 Nginx 的路由信息。此模块不依赖于任何第三方模块。 consul 作为 Nginx 的 db,利用 consul 的 KV 服务,每个 Nginx work 进程独立的去拉取各个 upstream 的配置,并更新各自的路由。
流程图如下:
应用案例:
模块已经应用在微博的各类业务中,下面图表对比分析使用模块前后的 QPS 与耗时变化。
从数据可以得出,reload 操作时造成 nginx 的请求处理能力下降约 10%,Nginx 本身的耗时会增长 50%+。若是频繁的扩容缩容,reload 操作造成的开销会更加明显。
点击链接加入群【.NET大型网站架构】433685124QQ群
Nginx 以其超高的性能与稳定性,在业界获得了广泛的使用,微博的七层就大量使用了 Nginx 。结合 Nginx 的健康检查模块,以及动态 reload 机制,可以近乎无损的服务的升级上线与扩容。这个时候扩容的频次比较低,大多数情况下是有计划的扩容。
Upsync,开发了模块 nginx-upsync-module,它的功能是拉取 consul 的后端 server 的列表,并更新 Nginx 的路由信息。此模块不依赖于任何第三方模块。 consul 作为 Nginx 的 db,利用 consul 的 KV 服务,每个 Nginx work 进程独立的去拉取各个 upstream 的配置,并更新各自的路由。
流程图如下:
应用案例:
模块已经应用在微博的各类业务中,下面图表对比分析使用模块前后的 QPS 与耗时变化。
从数据可以得出,reload 操作时造成 nginx 的请求处理能力下降约 10%,Nginx 本身的耗时会增长 50%+。若是频繁的扩容缩容,reload 操作造成的开销会更加明显。
点击链接加入群【.NET大型网站架构】433685124QQ群
相关文章推荐
- 架构之微服务设计(Nginx + Upsync) - 疯狂的果子 - 博客园
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- NET 应用架构指导 V2 学习笔记(十六) 服务层设计指导
- 使用WCF实现SOA面向服务编程—— 架构设计
- 译著出版:《SOA概念、技术与设计》 - 面向服务的架构
- 一起谈.NET技术,走向ASP.NET架构设计——第六章:服务层设计(前篇)
- Java高手真经.系统架构卷 : Java Web系统设计与架构 : UML建模+设计模式+面向服务架构
- SOA快速指南 1 2 3,第 3 部分: 服务实现及架构设计
- 一起谈.NET技术,使用WCF实现SOA面向服务编程—— 架构设计
- Web服务搜索与执行引擎——系统设计方案 及系统架构设计
- DotNET应用架构设计指南(第二章:设计应用程序和服务组件(1-4))已上传
- SOA快速指南之服务实现及架构设计
- 从架构设计到系统实施-基于.NET 3.0的全新企业应用之基于WCF的系统服务
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- 译著出版:《SOA概念、技术与设计》 - 面向服务的架构
- DotNET应用架构设计指南(第二章:设计应用程序和服务组件(6-9)) 已发布
- 走向ASP.NET架构设计-第六章-服务层设计(中篇)
- 一起谈.NET技术,走向ASP.NET架构设计——第六章:服务层设计(中篇)