Java 微服务、服务注册、API网关和数据共享

Java 微服务、服务注册、API网关和数据共享,java,web-services,rest,microservices,Java,Web Services,Rest,Microservices,实际上,我正在阅读有关微服务体系结构的文章,但是,它们似乎是以最简单的方式处理问题,而没有深入解释 为了向您解释我的问题,我将向您展示我的实际小架构: 所以,这里是我想要使用的。在技术上做任何事情之前,我需要更多的理论信息 我的域名描述 我有一些基于手机和浏览器的客户,能够在应用程序上连接自己,获取他们的用户信息,并能够查询他们购买的产品的账单信息 在单片应用程序上,我将使用以下体系结构: -具有移动/角度余烬的表示层 -业务层,前面有一个restapi和NGINX -DAL使用标准的MySQ

实际上,我正在阅读有关微服务体系结构的文章,但是,它们似乎是以最简单的方式处理问题,而没有深入解释

为了向您解释我的问题,我将向您展示我的实际小架构:

所以,这里是我想要使用的。在技术上做任何事情之前,我需要更多的理论信息

我的域名描述

我有一些基于手机和浏览器的客户,能够在应用程序上连接自己,获取他们的用户信息,并能够查询他们购买的产品的账单信息

在单片应用程序上,我将使用以下体系结构: -具有移动/角度余烬的表示层 -业务层,前面有一个restapi和NGINX -DAL使用标准的MySQL数据库 -可伸缩性将仅应用于X轴

在这种情况下,我想使用微服务体系结构,因为它是“域可伸缩”的,而且非常灵活(当然,我还想进一步了解它)

在模式上,在每个服务中,只有相关API公开了HTTP URL

问题

a/在(1)流量中,“移动”在上发送http请求

在我看来,APIGateway能够询问标准服务注册中心(Eureka、ZooKeeper或其他)是否能够找到AuthSrv是否可以访问并检索其网络地址。然后,ApiGateway可以请求AuthSrv并响应服务器

这是一个好办法吗?在处理X台机器访问数据时,是否存在延迟问题

b/流量(2)咨询服务注册中心。服务注册中心如何理解/auth上的每个请求,甚至子url(如/auth/other)上的每个请求(如果已公开)都与此地址ip:端口上的此服务相关

c/流量(3)显示服务注册表具有可用的AuthSrv。(3之二)显示另一个:没有可用的AuthSrv。在一个小应用程序中,我们可以承认我们失去了一些可争议性,但在一个大系统中,有数百个服务链接在一起,我们如何处理服务不足

d/在另一篇帖子中,我问如何存储账单信息,因为它与用户、其他服务和其他数据库相关

在标准体系结构中,我会:

{
   billingInformations:{...},
   billingUser:ObjectId("userId")
}
在微服务体系结构中,有人建议使用:

{
    billingInformations:{...},
    billingUser:"/user/12365" // URL corresponding the the user Resource in the other service
}
这是处理“服务数据共享”且不耦合服务的最佳方式吗

e/在这种特定情况下,我应该在什么时候使用AMQP协议而不是HTTP协议

谢谢你提前通知

a/

不,像Zookeeper这样的服务注册在内存中,保证了高吞吐量和低延迟

b/

在Zookeeper等服务注册中心中,您可以使文件系统路径类似于服务注册。例如/App1/Service1和/App1/Service2

c/

不太清楚问题出在哪里

d/

有人推荐的模式是为API响应推荐的模式

e/

只有在服务之间需要通信时才需要AMQP。不应直接从一个服务调用另一个服务的API

编辑

c/

在这种情况下,您需要实现回退逻辑。例如,如果服务不可用、超时或任何其他故障,则需要采取一些措施。像Netflix这样的工具有助于实现这一点

e/

通信模式必须是对称的,而不是不对称的。如下图所示


此模式将启用微服务之间的松散耦合,从而实现灵活性。

关于e/So,如果我想通过计费服务访问我的完整用户信息,我必须使用AMQP和相应的用户(HATEOS格式化)推送请求,并将相关响应分为以下几部分:?关于c/,我的意思是,如果我没有在/auth的服务注册中心注册服务,我该如何处理这个错误呢?例如,感谢advanceSpotify使用Protobuf和ZeroMQ的组合。通过HTTP的通信很快成为瓶颈。