2017-08-01 22 views
1

我已经阅读了一些关于微服务的内容,而且喜欢的方法似乎是每个微服务的单独数据库。关于Azure的CosmosDB,这是否意味着每个服务都有一个单独的表格?建筑设计的最佳方式是什么?Azure上的CosmosDB的微服务

回答

3

这里有很多因素需要考虑,这最终意味着这个问题没有正确的答案,它将非常具体地针对您要构建的应用程序的性质。因此,试图提供“一般”建议和模式的广泛陈述应该用大量的盐来进行。使用Cosmos时,需要考虑的许多高层次事情如下:

分区:根据选择合适的分区键,宇宙集合支持几乎无限的比例。因此,例如,您可以拥有一个集合并分隔您的服务,以便每个集合都写入一个不同的分区键。这将为您提供一种服务多租户形式,可能完全适合您的特定应用。但是,吞吐量也会在集合级别进行缩放,因此如果某些服务具有更高的读取和/或写入要求,则这可能不适用于您,并且可能表明该特定服务应该使用自己的集合,并且可以独立扩展。

成本:您按照最低吞吐量要求的集合计费。根据您的微服务的数量和性质,这可能会导致成本呈指数级增长,收益不大。

隔离:再次,根据您的应用程序的性质,您可能有一个艰难的业务需求,来自不同服务的数据在物理上彼此分离,这将迫使您使用单独的集合。

我试图在这里指出的一点是,这个问题绝对没有正确的答案。您需要在您尝试构建的解决方案的背景下仔细权衡利弊,并选择适合您的方法。

+0

我的应用程序是一个简单的配方应用程序,它包含一个配方表和一个用户表(以及一些基本支持表)。 – TrevorBrooks

+0

听起来不像使用Table API,是您的应用程序的不错选择。 Table API基本上只允许你在PartitionKey和Id上查询。你不想也能够查询你的食谱,用户等的实际属性吗?常规的Document API将是一个更好的选择。 –

+0

我会研究一下,谢谢。我的印象是,你可以存储看起来像你定义的类的实体。 – TrevorBrooks