我目前正在基于Java Spring Cloud构建基于微服务的系统.一些微服务使用PostgreSQL,其中一些使用MongoDB.REST和JMS用于通信.计划是使用SSO和OAuth2进行身份验证
我面临的挑战是必须在域对象/实体级别上进行授权.这意味着需要某种ACL(访问控制列表).这种体系结构的最佳实践是避免这样的事情,并且可能在每个微服务中的应用程序/服务层级别上具有粗粒度的安全性,但不幸的是,这是不可能的.
我的最终想法是使用Spring Security ACL并在所有微服务之间的共享数据库中使用ACL表.数据库只能由Spring基础结构或Spring api访问.数据库架构看起来稳定,不太可能发生变化.在这种情况下,我只是打破了关于在微服务之间共享数据库的规则.
我正在考虑不同类型的分布式解决方案但留下了它们:
我真的会使用一些建议和意见如何处理架构,因为这非常棘手,很多事情都可能出错.
非常感谢,
卢卡斯
我们在Spring Boot(带有嵌入式tomcat)和spring cloud上运行微服务。这意味着服务发现,常规运行状况检查以及响应这些运行状况检查的服务,...我们还具有用于监视的spring boot管理服务器,我们可以看到所有服务都运行正常。目前仅在测试环境上运行...
我们的某些微服务很少被调用(假设每两天一次),但是仍然定期进行健康检查。当在很长的空闲时间后调用这些服务的REST API时,第一个请求将花费很长的时间来处理。当然,这会导致在请求链中打开断路器并出现错误……在使用spring boot admin(Theads列表,指标)调用不同的端点时,我也会看到这种行为。
作为总结,我已经在spring boot admim指标,线程信息,环境信息或使用Hikari数据源调用数据库或服务尝试通过smtp服务器发送电子邮件的调用中看到了这种行为。
我的问题是:与嵌入式服务器及其线程池的设置有关吗?还是应该深入研究这些请求所涉及的其他线程池和连接池?对诊断有什么想法吗?
非常感谢