如何使用微服务架构设计Sails.js项目?

5

我从这里了解到微服务。

现在,我想在我的下一个sails.js项目中使用微服务架构。

我能想到的一种方法是:

  1. 将一个sails.js应用程序拆分成多个小的sails.js子项目/存储库。

  2. 在一个子项目中有一个控制器-模型。例如,如果我们考虑一个简单的电子商务应用程序,其实体有用户、产品、订单等,则将为每个实体单独创建一个sails.js存储库,其中包含相应的sails.js模型-控制器。然后,这个单一的子存储库将形成我的一个微服务。

  3. 每个子存储库显然都有自己的配置。

  4. 这些微服务将使用一些HTTP节点模块相互通信。

  5. 然后编写自己的API网关来路由node.js中的请求,它将负责调用这些子存储库中的方法/ Web服务,具体取决于客户端的请求。

这是最佳方式还是使用微服务架构设计项目的替代方式?

使用sail.js,实现服务间通信和API网关的最佳方法是什么?如果按照上述方法设计的一个微服务变得更大,如果我必须将其分成两个,则应如何更改sails.js模型?

2个回答

12
设计微服务最重要的方面是分离关注点,这意味着每个微服务都将有一个定义好的边界,在该边界下工作。
每个微服务被设计为执行一项特定工作,因此,首先需要找到项目中的独立功能,并尝试为其创建一个微服务。
最重要的是,你应该先从单体架构开始,如果确定某些功能需要分离,然后再创建微服务。
就Sails而言,它是MVC的不错选择,如果项目是单体的话。但是如果微服务数量很大,那么使用sails.js运行大量的微服务会消耗系统RAM,因为Sails.js内部使用了很多你不需要的库。你可以只用Node.js核心模块来创建一个简单的微服务,它们也将占用更少的内存。
当每个微服务处理的功能很小时,代码量将很少,不需要MVC架构。你可以使用较少的库来创建它。
结论: 1. 如果服务数量较少,且不考虑系统RAM,则使用多个Sails应用程序。 2. 如果服务数量即将增加,请尝试在不使用Sails的情况下创建你的服务。

3

我同意之前的答案,同时补充一点:Sails是一个非常适合进行集群操作的框架,可以在横向扩张以提高可用性的环境下使用。然而,我认为它并不是微服务架构的最佳选择,但很可能是那些需要在自身中使用多个服务的应用程序的焦点。

我使用消息服务来将多个应用程序粘合在一起,Sails消费这些消息以更新网页。我认为这些应用程序提供了更小的服务,具有明确定义的边界,而我的Sails应用程序则作为前端,控制器会组合必要的内容以满足最终用户的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接