设为首页 加入收藏

TOP

教你如何用Nginx搭建一个安全的、快速的微服务架构(二)
2019-09-17 18:52:55 】 浏览:62
Tags:何用 Nginx 搭建 一个 安全 快速 服务 架构
们认为,会解决所有的这些问题,它赋予你健壮的服务发现、非常棒的用户可配置负载均衡以及安全和快速加密。

网络架构

?

如何用Nginx搭建一个安全的、快速的微服务架构

让我们来谈谈你可以安装和配置你的网络架构的各种方法。

我们提出了三种网络模型,它们本身并不相互排斥,但我们认为它们属于多种格式的。这三种模式是Proxy模式、Router Mesh模式和Fabric模式——这是最复杂的,并在许多方面在其头部进行负载均衡。

Proxy模式

?

如何用Nginx搭建一个安全的、快速的微服务架构

Proxy模式完全聚焦于你的微服务应用的入站流量,并且事实上忽略内部通讯。

你会获得Nginx提供的所有的HTTP流量管理方面的福利。你可以有SSL/TLS终止、流量整形和安全,并且借助于最新版本的Nginx Plus和ModSecurity,你可以获得WAF能力。

你也可以缓存,你可以将Nginx提供给你的单体应用的所有东西添加到你的微服务系统里,并且借助于Nginx Plus,你可以实现服务发现。当你的API实例上下浮动时,Nginx Plus可以在负载均衡工具里动态地添加和减去它们。

Router Mesh模式

?

如何用Nginx搭建一个安全的、快速的微服务架构

Router Mesh模式类似于Proxy模式,在其中我们有一个前端代理服务来管理接入流量,但它也在服务之间添加了集中式的负载均衡。

每个服务连接到集中式的Router Mesh,它管理不同服务之间的连接分发。Router Mesh模式还允许你在熔断器模式中搭建,以便可以对你的应用添加弹性并允许你采取措施来监控和拉回你的失效的服务实例。

不幸的是,因为该模式增加了一个额外的环节,如果你不得不进行SSL/TLS加密,它事实上加剧了性能问题。这就是引入Fabric模式的原因。

Fabric模式

?

如何用Nginx搭建一个安全的、快速的微服务架构

Fabric模式是将其头部的所有东西翻转的模式。

就像之前的另外两个模式一样,在前面会有一个代理服务器来管理流入流量,但与Router Mesh模式不同的地方就是你用运行在每个容器里的Nginx Plus来替代了集中式的Router。

这个Nginx Plus实例对于所有的HTTP流量作为反向和正向代理,使用这个系统,你可以获得服务发现、健壮的负载均衡和最重要的高性能加密网络。

我们将探讨这是如何发生的,以及我们如何处理这项工作。让我们先来看看一个服务如何连接和分发他们的请求结构的正常流程。

正常的流程

?

如何用Nginx搭建一个安全的、快速的微服务架构

在这个图中,你可以看到投资管理器需要跟用户管理器通讯来获取信息。投资管理器创建了一个HTTP客户端,该客户端针对服务注册中心发起了一个DNS请求并获得返回的一个IP地址,接着初始化了一个到用户管理器的SSL/TLS连接,该连接需要通过九阶段的协商或者是”握手”过程。一旦数据传输完毕,虚拟机会关闭连接并进行HTTP客户端的垃圾回收。

整个过程就是这样。这是相当简单和易于理解的。当你把它分解成这些步骤时,您可以看到该模式是如何真正完成请求和响应过程的。

在Fabric模式中,我们已经改变了这一点。

Fabric模式的细节

?

如何用Nginx搭建一个安全的、快速的微服务架构

你会注意到的第一件事是Nginx Plus是运行在每一个服务里的,并且应用程序代码是在本地与Nginx Plus通信的。因为这些是本地连接,你不需要担心加密问题。它们可以是从Java或者PHP代码到Nginx Plus实例的HTTP请求,并且都是在容器内的本地HTTP请求。

你也注意到Nginx Plus会管理到服务注册中心的连接,我们有一个解析器,通过异步查询注册中心的DNS实例来获取所有的用户管理器实例,并且预先建立连接,这样当Java服务需要从用户管理器请求一些数据的时候,可以使用预先建立的连接。

持久的SSL/TLS连接

?

如何用Nginx搭建一个安全的、快速的微服务架构

微服务之间的有状态的、持久化的并且可以加密的连接是真正的益处。

记得在第一个图中服务实例是如何通过一些流程的吧,比如创建HTTP客户端、协商SSL/TLS连接、发起请求并关闭的吗?在这里,Nginx预先建立了微服务之间的连接,并使用Keepalive特性,保持调用之间的持续连接,这样你就不必为每一个请求处理SSL/TLS协商了。

本质上,我们创建了一个迷你的从服务到服务的VPN连接。在我们最初的测试中,我们发现连接速度增加了77%。

熔断器Plus

?

如何用Nginx搭建一个安全的、快速的微服务架构

在Fabric模式以及Router Mesh模式中,你也可以从创建和使用熔断器模式中获得好处。

本质上,您定义了一个在服务内部的活跃的健康检查,并设置缓存,以便在服务不可用的情况下保留数据,从而获得完整的熔断器功能。

所以,现在我可以确定你认为Fabirc模式听起来很酷,并且想在实际环境中跃跃欲试。

Zokets Demo

我们已经和Zokets的合作伙伴一起工作了,他们帮助我们搭建了一个系统可以轻松地可视化、控制并且自动化那些构建基于微服务的Fabric模式应用的流程。

我想介绍Zokets的CTO Sehyo Chang,他将帮助我们在他们的平台上展示Fabric模式。

结论

对于那些有兴趣学习更多关于如何构建这些类型的网络架构的小伙伴,我强烈推荐我们的博客系列文章,上面讨论了微服务参考架构,涵盖了每一个模式:Proxu模式、Router Mesh模式和Fabric模式。

推荐一个交流学习群:650385180里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多:

如何用Nginx搭建一个安全的、快速的微服务架构

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇面向服务的体系架构 SOA(一) --.. 下一篇阿里架构师的工作总结:Spring Cl..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目