基于Nginx搭建一个安全的、快速的微服务架构



15:03 - Fabric模式

Stetson-conf2016-slide18_Fabric-Model.png



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

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

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

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

16:05 - 正常的流程

Stetson-conf2016-slide19_Fabric-Model-normal-process.png



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

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

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

17:08 - Fabric模式的细节

Stetson-conf2016-slide20_Fabric-Model-detail.png



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

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

18:19 - 持久的SSL/TLS连接

Stetson-conf2016-slide21_persistent-SSL-conns.png



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

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

19:14 - 熔断器Plus

Stetson-conf2016-slide22_circuit-breaker-plus.png



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

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

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

19:50 - Zokets Demo

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

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

23:30 - 结论