微服务和负载均衡器之间的区别?

时间:2017-05-25 13:30:39

标签: load-balancing microservices

我对微服务领域相当新,但了解负载平衡的基础知识。我最近阅读了一篇关于微服务的文章:Enough with the microservices

有人提到微服务和负载均衡器都有集群/不同的VM用于部署许多应用程序副本但是在微服务的情况下,我们有一个单独的数据库与支持单个数据库的负载平衡器形成对比。它们之间是唯一的区别吗?

以下是引用文字:

  

"可以部署相同微服务的多个副本以便   实现一种可扩展性。但是,大多数公司采用   微服务太早将使用相同的存储子系统(大多数   通常是一个数据库)来支持他们所有的微服务。那意味着什么   是你真的没有水平可扩展性   应用程序,仅适用于您的服务。如果这是可伸缩性方法   你计划使用,为什么不只是部署你的巨石的更多副本   在负载均衡器后面?你将用更少的成就完成同样的目标   。复杂"

2 个答案:

答案 0 :(得分:2)

您无法将微服务与负载均衡器进行比较......您应该将其与单片或SOA架构进行比较。

在单片方法中,您主要只有一个数据库用于整个系统,而单个应用程序作为您的业务的单个项目。

单片机是单一单元但SOA是粗粒度方法,而微服务则是细粒度方法。在微服务架构中,您不是设计单片系统,而是围绕您的业务能力设计不同的微服务,并以您的域和有界上下文为基础。

每个微服务可能都有自己的数据库。例如订购微服务可能有mysql数据库,推荐微服务可能有Cassandra数据库和用户搜索微服务可能有Elasticsearch或SOLR数据库。

在微服务中,每个微服务都可以通过两种不同的通信方式与另一个基站进行通信:

  1. 同步(建议休息)
  2. 异步(通过Kafka,RabbitMQ,ActiveMQ或NATS等消息代理) 等等。)
  3. 在微服务架构中向上扩展比单片系统容易得多,您甚至可以更改系统的一部分并独立重新部署,而不会影响整个系统。

    微服务也遵循让它崩溃的范例,并且使用像Circuit-Breaker这样的EIP模式,你可以让用户认为系统总是正常工作和基于CAP定理你可以通过补偿来获得高可用性系统根据 BASE 而非 ACID

    的一致性和最终一致性

    对于负载平衡,Netflix设计的功能区的客户端负载均衡是非常可行的方法。

    使用NginX,Docker Swarm和kubernetes也可以实现负载平衡。

    简而言之,将微服务与负载均衡器进行比较无关。

答案 1 :(得分:1)

这是(希望)最简单的答案:

  • 微服务各自是different(微)应用程序。每个都有自己的应用程序逻辑和数据库。

  • 负载均衡器通常用于将客户端请求分发到same应用程序的实例集群。

这意味着:您还可以使用负载均衡器来分发部署在具有多个实例的集群中的微服务的请求。但是负载均衡器也可以用于将请求分发给大型单片应用程序的许多实例(而不是微型)。

微服务应该是best overview