heroku - 基于 Heroku 建议的云微服务设计

标签 heroku architecture microservices paas

我是微服务世界的新手,我尝试了解它以及它如何应用于我的需求。我需要设计一个易于维护和扩展的云平台,其中包含以下内容(据我所知):

  • Rails API + PostgreSQL(微服务 1)
  • 前端框架(微服务2)
  • 一些 Python 脚本(微服务 3)
  • 其他一些 Python 脚本(微服务 4)

灵感来自this question & answer每个微服务都是一个单独的 Heroku 应用。他们之间相互通话时的安全性和响应时间怎么样?

此外,由于服务是要增长的,迟早会很昂贵,在这种情况下如何优化成本?我刚刚发现CaptainDuckDuck但我担心它的用户群“缺乏”经验,因为它很新并且不像其他 PaaS 那样受欢迎。唯一的解决方案是使用 DigitalOcean 或 AWS EC2 之类的东西并自己管理 Heroku 所做的工作吗?

因为像这样做微服务,并不是真正的微服务设计,因为所有服务都不是托管在同一台机器上,对吗? 一种更微服务友好的方法是使用 Heroku Private Spaces (即使这不能解决成本问题)?

仅供引用,我已经启动并运行了此设计。因此,这不是“这会起作用吗?”的问题,而是“这是正确的方法吗?”的问题。

感谢您的反馈

最佳答案

理论上,您确实可以按照您的建议将每个微服务部署为完全独立的 Heroku 应用程序。

但是,根据您的要求,一种更简单、可能更好且几乎肯定更便宜的方法可能是将它们部署为一个 polyglot Heroku app 中的单独微服务。 ,使用Heroku dynos .

例如,您可以将 Rails API 运行为 web dyno您的单个应用程序。在这种情况下,您可能希望它也为您的前端框架提供服务。

您应该考虑使用Heroku Postgres作为托管DBaaS 。轻松访问connect your Rails web dyno to your Heroku Postgres instance .

然后,您可能希望将每个 python 脚本定义为单独的 process type in your Procfile 。如果您需要它们“始终在线”,则需要这样做。 或者,根据您的要求,您可能需要考虑使用 one-off dynos用于您的 python 脚本。 无论如何,您的 python 脚本将在单独的测功机上运行。

请注意,每个进程类型都可以是 separately scaled .

您需要考虑的一件事是您的微服务如何交互(如果您需要它们这样做)。有很多方法可以解决此问题,但请注意,只有您的 Web dyno 实例可以监听 http/s 流量。请参阅here对此的一些想法。

关于heroku - 基于 Heroku 建议的云微服务设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51939287/

相关文章:

python - Git/Heroku - 如何 stash 我的 SECRET_KEY?

database - 配方数据库设计

java - 模板方法模式在现实场景中的实现

java - 基于微服务的架构和每个节点的单独缓存

node.js - Socket.io 发出的信号并不总是在 Node.js + Redis + Heroku(多测功机)环境中收到

node.js - 在 Heroku 中完全禁用 HTTP

heroku - 如何将meteor 0.6.0 + 部署到heroku

c# - 在 Repository<T> 中返回 Queryable<T> 或 List<T>

java - 为什么我应该将 repo 级别对象与 Controller /服务级别对象混合?

microservices - Api 网关或无 Api 网关