文章翻译|Kafka in the Microservice Architecture: How It Can Help You

74 阅读2分钟

文章链接:kafkaide.com/learn/kafka…

什么是微服务以及为什么要用微服务

微服务:将应用拆分成多个小型的独立服务,使用微服务可以提高服务的可拓展性,因为每个服务都可以独立于其他服务进行拓展和更新。

实现微服务的方式很多,kafka在可拓展性和容错性上面表现均不错,同时kafka还可以实现服务之间的通信功能。

微服务之间的通信的实现

之前提到了每个服务都独立于其他服务,但是这些服务却在一起工作,充当一个整体,因此这些服务之间必须进行通信。实现微服务之间通信的策略可能是简单的HTTP请求、AMQP(使用队列)、或者二进制的TCP协议。

一般微服务使用两种消息传递模式互相通信:同步和异步

  • 同步中一般以HTTP和gRPC协议调用另一个服务公开的API,需要调用者等待接受者的响应
  • 异步中可以使用kafka或者其他队列来实现,调用者并不需要等待接受者的响应

kafka在微服务中的使用

首先,kafka可以帮助我们处理服务之间的通信,kafka提供了一个发布-订阅消息系统,可以用于跨多个服务更新数据或者通知其他服务一些状态的变化。

其次,kafka可以帮助提高可拓展性,让每个服务都独立的运行,同时kafka本身的分布式特性也可以让他处理大量数据。

最后,kafka具有容错性,也就是出了故障也可以继续运行,单个服务失败并不会影响其他服务。

kafka的优势总结:

直接的好处:

  • 微服务之间可以互相通信,而无需关注服务之间的依赖关系(也就是对上下游解耦)
  • 微服务更容易开发和部署

间接的好处:

  • 随着业务的发展,微服务架构相对于臃肿的系统更易于维护和拓展
  • 由于kafka具有容错性,你也无需因为kafka部分broker出错而半夜起来维护(这点我持质疑态度,前司kafka出问题60s之内运维给你打电话,无论是不是凌晨十二点)

总结

对优点的再一次强调:

  • 可靠性和容错能力
  • 更高的吞吐量
  • 可拓展性强
  • 灵活的路由:可以根据topic、分区甚至offset即将消息路由给不同的消费者。