java - Systemdesign : Webserver, API 和数据库

标签 java database web-services webserver

目前我有一个网站提供一些产品。 Web 服务器与数据库位于同一系统上,并直接访问数据库以检索 HTML 前端所需的信息。现在我认为通过 API 服务器将数据库与网络服务器分开是很好的。我想使用API​​服务器的原因是, future 的应用程序(除了网站之外)可能需要访问系统上的信息。

我想要的系统应该由以下组件组成:

  • 将存储所有必需信息的数据库。
  • API 服务器将用 Java 实现,并应使用 oauth2 来授权用户请求。 API 服务器将拥有与数据库的唯一直接连接。
  • 网络服务器。

所以基本上我的想法是我想在该 API 服务器之上构建我的网站。用户将通过网站注册/登录/...,网站实现将在内部代表用户将 API 服务器作为 Web 服务进行查询。然后 API 服务器将从数据库返回数据。这样,HTML 前端只是一个使用 API 服务器的应用程序,它本身永远不会与数据库直接联系。

我认为这是一个经常遇到的问题,并且存在一个很好的解决方案。我不确定这个解决方案是否可行。您能帮助我和/或从这里为我指出正确的方向吗?

谢谢。

最佳答案

据我所知,不建议使用单独的 API 服务器,原因如下:降低性能并增加系统的复杂性。因此基本上您应该尽可能长时间地避免这种类型的解决方案。

您绝对应该阅读 M. Fowler:“企业架构模式”以获取灵感。

回到你的问题:你是否考虑过将这个API层作为一个模块(库)? 如果我还没有说服您,请尝试阅读 Java RMI 文档 ( http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136424.html )

关于java - Systemdesign : Webserver, API 和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343427/

相关文章:

java - 如何设置java2ws类路径?

c# - session 预约是如何连接的以及如何使用此连接?

Java 继承和 super() 未按预期工作

java - 如何使用Spring Kafka的Acknowledgement.acknowledge()方法进行手动提交

java - 依赖项不应指向项目目录中的文件

mysql - 在 Perl 中实现跨线程/进程队列

java - 改进 CoreNLP 词性标注器和 NER 标注器?

database - 在数据库中存储字符串数组

java - 使用免费数据库和带有 Spring & Hibernate Web 应用程序的 Java 进行冗余数据库复制

web-services - 部分 URL : host, 端口、路径