我对微服务和AWS无服务器架构的概念完全陌生。我有一个项目,我必须将其划分为应该在AWS Lambda上运行的微服务,但我面临着如何设计它的困难。
在搜索时,我找不到关于如何划分和设计微服务的完整文档,我看到的所有文档都是比较单片应用程序与微服务应用程序或在aws lambda上部署微服务。
在我的案例中,我必须开发一个ERP (企业资源计划),它必须管理客户,管理股票,管理账簿,管理命令。所以我是不是应该为客户提供服务,为图书提供服务...然后,如果我注意到两个微服务之间有很多依赖关系,我就让它们成为一个微服务??对于数据库,对于所有微服务使用一个数据库( dynamoDB)而不是每个服务使用一个数据库(在这种情况下是ERP)好吗?
任何帮助都是非常感谢的。如果任何人有一份有用的文件可以帮助我,我将非常感谢。非常感谢。
发布于 2020-01-03 02:28:47
我认为你的数据和服务的架构可以依赖于几件事:
为了减少服务的大小,我们希望将应用程序或另一个服务访问该服务的原因限制在尽可能少的范围内。这减少了管理它的总体维护量,并在使用它们的部署时为您提供了很大的灵活性。
例如: API : API一个服务可以转换来自多个源的数据,并通过API使其可用,它可以使用具有新的、更干净的数据源的数据处理服务来拆分成。这将防止过度依赖大型、较旧的服务和数据,并使您的应用程序更容易集成较新、较小的服务。
在您的场景中,您可以使用单独管理客户、图书和股票的服务,但这还取决于数据源的集成方式以及您已经可以使用的服务。您可能希望创建其他微服务或数据库,以帮助减小大小并将数据组织为所需的格式。
根据您的业务需求,组合或保留两个微服务也可能取决于不同的内容。这些服务中的一个有可能对其他应用程序有用吗?它是专门用于特定项目的吗?保持服务的独立性、小型性和专注性,使您可以在需要时扩展或缩小内容。数据源也是如此。
总是有很多方法来接近它。在选择某个工具来创建解决方案之前,首先考虑您的需求/问题是什么。
发布于 2020-01-03 09:27:01
微服务
它只是运行的小型服务,可以独立扩展和部署。
AWS无服务器
每个应用程序都是不同的,因此您可能找不到适合每个应用程序的单一架构。一个简单的无服务器应用程序通常由Lambda函数、Api网关、DB (SQL/NoSQL)组成。Serverless是很好的云原生选择,你可以获得开箱即用的可用性和可扩展性,而且你会非常快地部署你的东西。
如何设计无服务器应用程序
没有正确的答案。您需要以单个微服务可以内聚工作的方式来构建您的系统。在你的案例书中,股票需要是单独的微服务,这意味着它们是单独的Lambda函数。对于DB,只要您了解NoSQL的工作原理并对其进行一些说明,Dynamo就是一个很好的、功能强大的选择。您需要三思而后行,NoSQL面临哪些挑战,您将如何对数据进行分区?如果您需要使用复杂的报表,NoSQL会是一个不错的选择吗?有一些模式可以解决这个问题。因为Dynamo DB在表级上操作,所以每个微服务最好是单独的表,可以独立地扩展,并且更有意义。
我的应用程序的正确体系结构是什么?
与其寻找一个正确的答案,我强烈建议在做出决定之前先阅读各个部分。有大量的文章和博客。如果我是你,我会按下面的顺序看
中如何工作
一旦你有了一点理解,你就可以更好地决定什么是最适合你的。
https://stackoverflow.com/questions/59567934
复制相似问题