小型域名介绍
我目前有两个微服务:
- User - 管理用户的CRUD操作
- Billings - 管理账单的CRUD操作,其中包括与账单相关的用户"引用"
解释
当HTTP请求中调用账单时,我需要发送完整的账单对象及其已加载的用户。在这种情况下,我确实需要这样做。
首先,我四处寻找并发现使用消息队列是一个不错的主意,因为它可以实现异步性,因此账单服务可以发送到队列上:
"ID为123456的用户是谁?我需要加载它"
因此,我的两个服务可以交换信息,而无需真正了解彼此或知道彼此的"位置"。
问题
我的第一个问题是,使用服务注册表的目的是什么?消息队列能够在不知道用户服务位置的情况下为我们提供信息,不是吗?
何时需要使用服务注册: 在聚合器模式下,使用RESTFul API,我们可以通过hateoas链接导航。也许在代理模式下?当微服务由另一个服务接口时?
现在假设我们使用代理模式,有一个“前置服务”。在这种情况下,我可以使用服务注册。但这意味着前置发送服务知道服务注册中的userService和billing service的名称吗?例如:
前端服务需要向用户服务和计费服务发送一些请求,这意味着它需要知道用户服务是“UserServiceOfHell”。这在项目开始时就定义好了吗?Service User在ZooKeeper上注册为“UserServiceOfHell:{{link1:http://80.80.80.80/v1/}}”
Service Billing在ZooKeeper上注册为“BillingService:{{link2:http://90.90.90.90/v4.3/}}”
最后一个问题,我们可以在一个微服务架构中使用多个微服务模式,还是这是一种不好的做法?
注:我问的所有问题都基于http://blog.arungupta.me/microservice-design-patterns/。