微服务架构的前世今生(六):微服务架构带来的问题
上次讲了微服务的前世今生(五):CAP 原则与 BASE 理论,这次我们再说微服务架构的前世今生(六):微服务架构带来的问题。 一、客户端如何访问服务? 传统的开发方式,所有的服务都是本地的,客户端可以直接调用,现在按功能拆分成独立的服务,客户端如何访问? 后台有 N 个服务,前台就需要管理 N 个服务,一个服务下线/更新/升级,前台就要重新部署,这明显不符合我们拆分的理念,另外,N 个服务的调用也是一个不小的网络开销。还有一般微服务在系统内部,通常是无状态的,用户登录信息和权限管理最好有一个统一的地方维护管理(OAuth2)。 所以,一般在后台 N 个服务和客户端之间一般会一个代理(API Gateway),作用如下: - 提供统一服务入口,聚合接口使得服务对调用者透明,客户端与后端的耦合度降低 - 聚合后台服务,节省流量,提高性能,提升用户体验 - 提供安全、流控、过滤、缓存、计费、监控等 API 管理功能 二、服务之间如何通信? 因为服务都是独立部署的,所以通信也就成了问题,不过好在业界已经有很多成熟的解决方案,比如: **同步通信:** - REST(JAX-RS,Spring Boot) - RPC(Dubbo,Thrift) **异步通信:** - RabbitMQ,Kafka 三、这么多服务如何查找? 在微服务架构中,为了高可用,普遍采用集群方式构建服务