创建可从 Android 应用调用的 NodeJS 微服务

Creating NodeJS microservices that are invokable from Android app

对于我在 uni 的最后一年项目,我决定研究微服务,特别是那些可以被 Android 应用程序调用的服务。

我想创建一个微服务来查询 API 来获取任何新数据或对已存储的现有对象的更改。关于数据存储,我想尝试看看是否可以缓存数据服务器端然后将其提供给客户端?或者将该数据存储在本地数据库中,然后从中读取以显示在客户端上?

应用程序本身将在 Java 中编写,而微服务 running/written 将在 Node 环境中编写。

我读了一些书,很多人都说使用 RESTful 或 API 网关之类的。

如有任何反馈,我们将不胜感激!

干杯

这是一个非常合理的项目。您可以从 Android 应用访问任何 RESTful 服务。你甚至可以实时使用 WebSocket 或 TCP 或任何你想要的。您的服务只需要可以通过 Internet 访问。

使用一个好的框架会帮助你。需要考虑的一些框架:Express、Hapi、Restify、LoopBack、ActionHero。更多选项在这里:http://nodeframework.com/

通常的 REST 架构如下所示:您的服务器使用 REST 约定侦听来自客户端的 HTTP 连接。请求中的数据可以作为 JSON 或形式 urlencoded 传递。响应中返回的数据通常是 JSON。您的客户端连接到各种端点并获得响应。

但要拥有微服务,您实际上需要拥有多个 Node 应用程序,每个应用程序负责一小部分功能。否则你只有一个服务,而不是微服务。

当你有多个 Node 应用程序,每个应用程序都在不同的端口上侦听,或者 运行 在不同的主机上,那么你可以在它们前面使用一些反向代理服务器将请求分派到正确的微服务,这样您的客户就不必知道您的内部架构。通常用于此的是 nginx,但您也可以编写另一个 Node 应用程序作为代理,这取决于您。

从 运行 在您的服务器或云上的 NodeJS 创建 RESTful Web 服务并让 JAVA Android 应用程序使用该服务是可能的。

另外:因为你要做的是微服务系统,所以其实你不用担心你的后端技术,因为这是我们采用微服务的好处之一。

随便你!为您的客户端提供 API 以使用服务。例如,您将拥有 4 个服务。其中两个可能使用 NodeJS,其中一个可能使用 Python Flask,另一个可能使用 JAVA Spring。甚至数据存储也可能不同,因为如果是微服务,最好拥有自己的数据库。

反正一说起微服务,我们就会想到另一个不同的名词,所谓的单体架构。当您完成阅读时,您会看到很多关于这种风格与微服务相比的提及。

我建议阅读那些谈论微服务的书籍和论文。其中大部分提到了单体的问题是什么以及为什么我们需要转向微服务。您可以在 https://scholar.google.com/ 搜索微服务

中找到它们

Martin Fowler 对微服务的定义如下:

The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.

我可以参考@rsp 的评论:

to have microservices you actually need to have multiple Node applications, each responsible for a fraction of the functionality. Otherwise you have just a service, not microservices.

因此,对我来说,微服务更多的是关于设计一个系统。以下是关键问题:

  • 我该如何设计我的系统
  • 我选择了哪些好的微服务原则(您可以遵循最佳实践,也可以开发自己的)
  • 我通过调查我的应用程序功能获得的上下文集是什么(DDD:有界上下文)
  • 将实施的服务集是什么以及每个服务服务的上下文
  • 当我得到设计时,我必须思考:是太大还是太小
  • 服务如何相互通信
  • 等(你也会在看资料的时候得到更多的问题给自己)

还有更多关于微服务的内容。我建议阅读

希望您在研究和构建微服务中玩得开心! :D