轻量级微服务框架的通信架构

关于微服务通信基础知识可先行参考文章:

中文连接:http://dockone.io/article/549

英文连接:https://www.nginx.com/blog/building-microservices-inter-process-communication/

接口调用如果是远程调用,那么就构成了简单的分布式。最简单的远程接口实现方式是web service或rest。当然一个合理的分布式应用不仅仅是远程接口调用这么简单。还需要有负载均衡、缓存等功能。最简单实现分布式的技术是Rest接口,因为Rest接口可以使用现存的各种服务器,比如负载均衡服务器和缓存服务器来实现负载均衡和缓存功能。

使用负载均衡服务器后Rest接口的应用就可以进行集群部署形成分布式。对于性能要求较高的服务还可以采用其它通信方式进行通信。比如采用netty来进行通信,这种情况下如何做到负载均衡呢?这个时候就需要一个第三方的组件来管理和进行负载均衡。这个第三方组件最常用的就是Zookeeper。

Zookeeper通过维护接口的列表及活动状态从而实现了负载均衡。因此除rest接口外其它的接口访问方式,如thrift、netty等,都可以使用zookeeper来提供负载均衡。如果需要缓存,那么还需要引入memcache或Redis等分布式缓存来实现。

连接文档的例子中,提到一个打车软件接口交互的场景,如下图。交互方式是这样的,乘客发起请求调用出行管理模块,出行管理模块通过一个“请求转发”模块分别再次调用乘客管理模块和司机模块进行处理,处理该乘客的打车请求,处理完后通过“通知”模块通知乘客。

这里主要关注“请求转发”模块。在微服务框架中,建议所有接口都使用Rest接口。所以项目初期,“请求分发”模块可以使用Nginx来实现。到了后期,如果要提升内部调用接口的效率,内部接口如果用thrift等实现,那么这个模块是通过Zookeeper来实现。

“请求转发”模块在业界还有一种典型的做法叫做“API Gateway”,API Gateway是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的Facade模式很像。API Gateway封装内部系统的架构,并且提供API给各个客户端。它还可能有其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。下图展示了一个API Gateway架构。如下图:

API Gateway介绍原文连接:https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值