根据这个答案https://stackoverflow.com/a/41811770/2849613,我想获得有关Heroku上微服务最佳实践的更多信息.
问题是哪种方法更好?
>将每个服务安装为独立应用程序,并使用其中一个作为REST“代理”(例如Netflix Eureka)?
要么
>创建基于docker的方法,例如Netflix Zuul作为负载均衡器?
就我自己而言,我已经看到两种方法的优点和缺点:
>优点:更好的可扩展性(易于创建更大负载的新机器).缺点:服务之间的通信换句话说“在heroku之外”换句话说:因为heroku应用程序有公共地址,每个人都可以直接连接到服务(不会扔掉Eureka),因为每个服务都需要提供一些身份验证方法并在每个服务之间共享其他 – 我认为这很容易发生风险.
>优点:易于重现生产环境以进行测试和开发(泊坞窗图像),服务之间的通信是“内部”完成的(图像到图像而不是应用程序到应用程序).缺点:难以扩展(我认为Heroku应用程序和docker镜像之间的负载平衡有点开销).
哪种方法更好?也许我可以将它们混合在一起?或者也许有一些不同的,更好的解决方案?
说实话,我确定唯一的事情就是我想将rabbitMQ用作消息队列……
Docker很棒,但如果你在Heroku上部署,它的好处非常有限.原因是Heroku已经完成了Docker所做的一切:管理依赖项,安装和进程管理. Heroku已经为您完成了所有这些工作,而无需Docker化您的环境.
关于负载平衡:它实际上并不重要.在两种情况下,如果您想在Heroku上运行,您将使用Heroku负载均衡器.这是因为没有办法“绕过”Heroku堆栈的那一层.
如果你想使用Docker / zuul,你肯定需要在Heroku的外面做.这意味着你需要做各种其他的事情,找到一个docker主机,管理你自己的基础设施等.
所以,在我看来,#1是一个更好的选择(如果你使用的是Heroku),因为:
>一切都已经为你照顾好了.
>您可以专注于编写可伸缩代码,而不是管理各种其他事情.
>您的所有服务都将位于同一个AWS区域,因此即使它们将通过HTTP进行相互通信,也会非常快.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。