Java 微服务资源管理
假设我们有一组microsericservices(每个服务都有自己的数据库)。我们的客户是其他公司。每个客户都希望拥有自己的数据库 在本例中,每个服务都有许多数据库。是否存在管理资源的最佳实践 我认为所有服务都可以是无状态的。任何公司(我们的客户)都必须有自己的配置和资源描述。示例:数据库、文件存储等 调用任何服务都必须激活资源上下文。接下来的所有服务都必须使用此上下文 例如。 有人打开了他的浏览器网站:clientCompany.com。 我们的第一个服务(示例AuthenticationService)检查此配置,并在“主机”部分找到主机名“clientCompany.com”。 然后它激活这个上下文,整个服务链使用这个上下文中的存储、数据库和其他资源 资源配置:Java 微服务资源管理,java,spring,architecture,microservices,Java,Spring,Architecture,Microservices,假设我们有一组microsericservices(每个服务都有自己的数据库)。我们的客户是其他公司。每个客户都希望拥有自己的数据库 在本例中,每个服务都有许多数据库。是否存在管理资源的最佳实践 我认为所有服务都可以是无状态的。任何公司(我们的客户)都必须有自己的配置和资源描述。示例:数据库、文件存储等 调用任何服务都必须激活资源上下文。接下来的所有服务都必须使用此上下文 例如。 有人打开了他的浏览器网站:clientCompany.com。 我们的第一个服务(示例AuthenticationS
[
{
"contextName":"ClientCompanyName",
"hosts":[
"clientCompany.com",
"client-company.com"
],
"storage":{
"path":"/mnt/ClientCompanyName"
},
.....
},
.....
]
这是一种好的做法吗?
我对使用Java和Spring创建这样一个系统的可能性很感兴趣?
请共享到用于执行此任务的源和工具的链接。
请告诉我您对这种实施的看法?让您的租户远离“公共”视图非常重要,因此我们将租户分配集成到授权流程中 以下是它对我们的作用:
管理所有可用租户的列表,并在添加/删除/更改这些租户时生成集成事件等。每个TenantService
都有一个TenantService
Id
和一个GUID
缩写
-稍后将详细介绍nvarchar(5)
- 我们在应用程序和身份提供者(IdP)之间使用OIDC,然后为所有微服务使用承载令牌
- 当新用户添加到系统中时,必须至少指定一个租户,并将其作为该用户的角色推送到我们的IdP中
- 我们的角色采用
格式,这样应用程序就可以读取角色并知道它们应用于哪个租户。在我们的例子中,一个用户可以访问多个租户,每个租户中有不同的角色tenant\u缩写.role\u name
- 登录时,应用程序请求并接收包含用户声明的
——该JWT是访问所有其他服务所必需的。因此,当微服务获得JWT(它验证)时,它知道用户ID以及每个租户可以访问的任何/所有权限JWT访问令牌
- 当一个经批准的应用程序调用一个微服务时,它会连同JWT一起在标题中传递当前上下文
,这样我们就可以比较索赔和当前租户-如果他们不匹配,这是应用程序中的一个问题TenantId
好处是它非常安全,只需最少的工具即可处理IdP上的工作负载,易于管理和跟踪,并且每个服务都可以获得良好的、细粒度的授权/上下文信息。它还允许灵活地在租户之间混合/匹配用户(如有必要)和/或为每个租户单独设置权限。重要的是要让您的租户远离“公共”视图,因此我们将租户分配集成到授权过程中 以下是它对我们的作用:
管理所有可用租户的列表,并在添加/删除/更改这些租户时生成集成事件等。每个TenantService
都有一个TenantService
Id
和一个GUID
缩写
-稍后将详细介绍nvarchar(5)
- 我们在应用程序和身份提供者(IdP)之间使用OIDC,然后为所有微服务使用承载令牌
- 当新用户添加到系统中时,必须至少指定一个租户,并将其作为该用户的角色推送到我们的IdP中
- 我们的角色采用
格式,这样应用程序就可以读取角色并知道它们应用于哪个租户。在我们的例子中,一个用户可以访问多个租户,每个租户中有不同的角色tenant\u缩写.role\u name
- 登录时,应用程序请求并接收包含用户声明的
——该JWT是访问所有其他服务所必需的。因此,当微服务获得JWT(它验证)时,它知道用户ID以及每个租户可以访问的任何/所有权限JWT访问令牌
- 当一个经批准的应用程序调用一个微服务时,它会连同JWT一起在标题中传递当前上下文
,这样我们就可以比较索赔和当前租户-如果他们不匹配,这是应用程序中的一个问题TenantId
好处是它非常安全,只需最少的工具即可处理IdP上的工作负载,易于管理和跟踪,并且每个服务都可以获得良好的、细粒度的授权/上下文信息。它还提供了很大的灵活性,可以在租户之间混合/匹配用户(如有必要)和/或每个租户单独使用权限。我想您指的是PaaS。这太宽泛了,不值得讨论。好吧,你们要确保无论你们如何确定租户,你们不能让别人开始尝试价值观,看看什么是坚持的。我们将TenantId(一个GUID)放入JWT访问令牌中,该令牌将传递给任何被调用的服务。在UI和服务之间进行调用时,我们进一步在请求头中传递TenantId。这让我们能够验证用户在每个请求中都有权访问特定租户@