在我计划构建的应用程序中,我正在尝试为我们的服务器确定一个架构。我的一个想法是在不同的地址生成多个服务器,如orders.example.com
,settings.example.com
等,即系统的每个组件一个服务器进程,将由单个数据库集群支持。
我想知道这是不是一个好主意,如果有人曾经使用它,它有什么警告?
答案 0 :(得分:3)
让我们打破你的问题,看看这是不是好主意:
主要组件为diff。服务和差异。地址---好主意,这就是微服务所说的
单个数据库群集: - 这不是首选方法,因为差异。服务通常需要差异。数据库的类型需要一个可能需要cassandra,一个可以弹性搜索,一个可能是postgres。如果在您的情况下,如果所有服务都具有相同的数据库类型,仍然确保每个服务的数据表是完全独立的,并且您不进行连接,只有通过服务调用访问其他服务数据的方式
答案 1 :(得分:0)
基于微服务的体系结构从不支持单个数据库进行服务,而是每个微服务都有自己的数据库,服务交互通过基于http调用或基于事件的交互使用队列进行。
如果我们将使用单个数据库,则没有必要对其他服务进行http调用,因为如果您正在调用其他服务数据库,则意味着您要从其他服务数据库获取数据或将您的服务数据提供给其他服务对于处理,如果数据库是常见的,那么我们可以直接调用数据库进行数据调用,而不是调用其他服务,间接调用单片应用程序。
我们称微服务:每个服务模型的数据库。
如果您指的是具有单个数据库的单独服务器= 1个具有一个数据库的RDS实例,那么您可以这样做,但下面将是其含义:
您可以创建单个RDS实例,并且可以在相同的RDS上为不同的服务创建不同的数据库,它将节省大量成本,但您需要处理数据库连接并加载您将在数据库基础上加载必须选择像4xlarge等RDS实例类型,更好的实例类型它将提供更多的连接以及它可以有效处理的更多数据库负载。
第二个解决方案可以创建几个RDS实例,并且RDS实例的数量将相当于您的微服务数,因为每个服务将独立地为其数据库使用一个RDS实例,这不是有效的解决方案,它将产生大量的成本此解决方案将使用AWS RDS实例。