mfr*_*het 5 java node.js microservices apache-zookeeper
我正在研究微服务,我正面临着一个问题.
上下文
我正在开发两个微服务:
/planning/{day}/{userId} or /planning/{startDate}/{endDate}/{idUser}
问题
如果只允许通过用户服务访问规划信息而不同时使用这两种服务,我该怎么做?知道计划服务可以稍后从其他地方访问,但现在不能访问.
如何从MySQL数据库中访问与用户对应的计费服务的计费信息?我知道微服务没有耦合,这一点是杀了我,因为它必须以某种方式耦合?就像idUser
在计费中引用一样?否则,我怎么知道我应该从我的API中公开哪个账单呢?更确切地说,微服务如何在它们之间进行通信而不进行耦合?
如何创建身份验证而不从其他服务复制身份验证服务的身份验证请求?
这里要认识到的重要一点是,在实现用户身份验证,用户授权和用户会话管理解决方案时,微服务架构解决方案与任何其他形式的分布式系统架构之间没有明显的概念差异.
从概念上讲,该解决方案将是Kerberos协议的实现,其中传递"票证"(或称为"令牌",因为它更常见于今天)的概念被传递以建立用户的身份.
因此,在您的情况下,您的用户管理服务将充当您的后端身份验证和授权服务器,所有其他服务都需要注意.您的用户管理服务将负责颁发和验证用户令牌,以确定用户的身份和角色.
如果只允许通过用户服务访问规划信息而不同时使用这两种服务,我该怎么做?
当用户尝试访问.Net服务时,您的服务必须依赖您的用户管理服务来建立用户的身份.换句话说,您的.Net服务需要知道您的用户管理服务在哪里(即其URL).您可以使用一样的工具ETCD或NATS到您的用户管理服务的位置传播到您的生态系统的其余部分,没有你的微服务连接到它.
如何从Mysql数据库中访问与用户对应的计费服务的计费信息?
最简单的解决方案是将(单个?)密钥(例如用户ID)作为查询服务的URL中的查询参数传递.当然,您的结算服务必须以这样的方式实现,以期将密钥附加到URL.如果您需要包含其他密钥(例如,计费日期,订单状态等),您可以使用memcached或redis之类的东西在运行时存储这些信息.当然,现在您必须考虑将这些单点故障添加到您的生态系统中的权衡:-)
如何创建身份验证而不从其他服务复制身份验证服务的身份验证请求?
同样,一旦用户通过身份验证,其所有身份信息都可以存储在memcached或redis之类的内容中,以避免重复身份验证和授权过程.
归档时间: |
|
查看次数: |
2591 次 |
最近记录: |