falcor在微服务架构中的作用是什么?

Upv*_*ote 6 microservices falcor

假设我们有以下由松散耦合的微服务组成的出租车应用程序:

https://www.nginx.com/blog/introduction-to-microservices/

该示例来自https://www.nginx.com/blog/introduction-to-microservices/

每个服务都有自己的rest api,所有服务都组合在一个api网关中.客户端不与单个服务通信,而是与网关通信.网关从多个服务请求信息并将它们组合成单个响应.对于客户端来说,它似乎正在与单片应用程序进行通信.

我想了解:我们在哪里可以将falcor纳入此应用程序?

一个模型无处不http://netflix.github.io/falcor/

Falcor允许您通过虚拟JSON图表将所有远程数据源表示为单个域模型.无论数据位于何处,无论是在客户端的内存中还是通过服务器上的网络,您都可以采用相同的方式编码.

在这个出租车应用程序中,每个微服务代表一个单一的域模型.你能想到我们可以通过用falcor包装每个微服务来茁壮成长吗?我不能.

但是我认为将falcor合并到api网关是非常方便的,因为我们可以将微服务创建的不同域模型抽象为一个或至少几个模型.

你有什么意见?

Hug*_*ood 3

你是对的。这就是 Netflix 使用 Falcor 的方式以及 Falcor 路由器的设计用途。

文档中:

路由器适合作为服务层或 REST API 的抽象。在这些类型的 API 上使用路由器提供了足够的灵活性,可以避免客户端往返,而无需引入重量级抽象。面向服务的架构在为可扩展性而设计的系统中很常见。这些系统通常将数据存储在不同的数据源中,并通过各种不同的服务公开它们。例如,Netflix 在其微服务架构前面使用了 Router。

使用路由器直接访问单个 SQL 数据库并不理想。使用单个 SQL 存储的应用程序通常会尝试为每个服务器请求构建一个 SQL 查询。路由器的工作原理是将 JSON 图表不同部分的请求拆分到单独的处理程序中,并将单独的请求发送到服务以检索所请求的数据。因此,各个路由器处理程序很少有足够的上下文来生成单个优化的 SQL 查询。我们目前正在探索未来使用 Falcor 支持此类数据访问模式的不同选项。