在单体架构时,项目的部署、修改都很简单,一旦服务器宕机,则整个服务都不可用。而在微服务中,一个服务可能部署在好几百甚至成千上万台节点上,我们如何管理这些节点的服务,调用服务时,该调用用那一台节点机上的服务,如果调用的服务出故障怎么办,如何监控服务的调用链路等等很多的问题,本篇我们会介绍微服务架构下遇到的问题,以及Spring Cloud给出的解决方案。
配置中心
为何需要配置中心,在微服务中,一个服务可能部署N多个节点,如果需要修改服务中的一个配置,难道我们要去手动修改成百上千个节点?我想就算是十几个或者几个节点,我们都不愿意一个一个手动的去修改吧。所以这个时候我们就需要一个配置中心,由配置中心管理所有服务的配置,当配置需要改变时,我们在配置中心修改配置,然后由配置中心将修改的配置推送到具体的服务,或者告诉服务自己去拉取新的配置。在Spring Cloud中提供了多种配置中心的方案:Spring Cloud Config、Spring Cloud Zookeeper、Spring Cloud Consul,Spring Cloud Nacos等。
服务注册与发现中心
前面我们说过,微服务的部署可能是成百上千台节点机,而且可能会动态的上下线,我们如何知道哪些服务已经上线,哪些服务被下线呢?服务注册与发现就是为了解决该问题。如下图为简单的服务发现与注册中心简图:
在上图中,服务提供者将自己的地址注册到服务注册中心,服务调用者从服务注册中心拉取服务提供者的地址,然后通过拉取到的地址