【发布时间】:2017-06-08 09:56:53
【问题描述】:
根据这个答案https://stackoverflow.com/a/41811770/2849613,我想了解更多有关 Heroku 微服务最佳实践的信息。
问题是哪种方法更好?
- 将每个服务安装为独立的应用程序,并将其中一个服务用作 REST“代理”(例如 Netflix Eureka)?
或者
- 创建基于 docker 的方法,例如 Netflix Zuul 作为负载平衡器?
就我自己而言,我已经看到了这两种方法的一些优缺点:
优点:更好的可扩展性(易于为更大的负载创建新机器)。 缺点:服务之间的通信“在 heroku 之外”,换句话说:因为 heroku 应用程序有公共地址,每个人都可以直接连接到服务(而不用扔 Eureka),因为每个服务都需要提供一些身份验证方法并在彼此之间共享 - 我认为这很容易发生风险。
优点:易于重现生产环境以进行测试和开发(docker 映像),服务之间的通信是“内部”完成的(映像到映像而不是应用到应用)。 缺点:难以扩展(我认为 Heroku 应用程序和 docker 图像之间的负载平衡有点开销)。
哪种方法更好?也许我可以把它们混合在一起?或者也许有一些不同的更好的解决方案?
说实话,我唯一确定的是,我想使用 rabbitMQ 作为消息队列...
【问题讨论】:
标签: heroku docker microservices netflix-zuul netflix-eureka