文章链接: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即将消息路由给不同的消费者。