随着业务的发展,用户的增长,原有的单一系统越来越复杂,越来越庞大。 此时,我们可以重新划分业务、拆解应用,使用微服务架构的方式来解决系统性能问题以及业务复杂问题。
那么什么是微服务?微服务是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对整理解决方案的解耦。
在微服务架构中,每个微服务通常有多个实例,每个实例具有不同的位置,而且实例会动态变化(动态伸缩、灾后重建等)。 因此在使用微服务架构开发应用时,需要通过服务注册和发现技术解决此问题。
- 服务注册:允许服务实例将当前服务的信息注册到注册中心。
- 服务发现:调用者可以从注册中心查询到服务实例的信息。
CAP理论
CAP理论是分布式架构中重要理论:
- 一致性(Consistency):所有节点在同一时间具有相同的数据
- 可用性(Availability):保证每个请求不管成功或者失败都有响应
- 分隔容忍(Partition tolerance):系统中任意信息的丢失或失败不会影响系统的继续运作
CAP
理论认为在分布式系统只能兼顾其中的两个特性,即只有CA
、CP
、AP
三种情况。
服务注册中心解决方案
Apache Zookeeper
Apache Zookeeper在设计时遵循CP原则,即任何时候对Zookeeper的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性,但是Zookeeper不能保证每次服务请求都是可达的。
Consul
Consul是HashiCorp
公司推出的开源工具,使用Go语言编写,用于实现分布式系统的服务发现与配置。
Consul遵循CAP原理中的CP原则,保证了强一致性和分区容错性,且使用的是Raft算法,比Zookeeper使用的Paxos算法更加简单。
Nacos
Nacos是阿里开源的,Nacos支持基于DNS和基于RPC的服务发现。 Nacos除了服务的注册发现之外,还支持动态配置服务。动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。