![]() 微服务架构组件主要是:服务的发现、注册、路由、熔断、降级、分布式配置等,下面我分别详解@mikechen 1.服务注册注册系统中所有服务的地方,所有的服务都会注册在这里,如下图所示: ![]() 关系调用说明:
2.服务注册首先服务注册与发现是来自于微服务架构的产物。 服务注册指的是将自身服务信息注册到注册中心,服务信息包括:服务所在主机IP、服务的端口号Port、暴露服务协议等信息。 如下图所示: ![]() Service B 把自己注册到注册中心,这就叫 服务注册。 当下用于服务注册的工具非常多ZooKeeper,Consul,Etcd, 还有Netflix家的Eureka 等等。 不论使用那种工具,服务注册一定是要确保高可用的,否则重则的是所有的服务都没法调用,轻则新的服务不能上线。 3.服务发现服务发现即通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。 如下图所示: ![]() ServiceA去注册中心获取服务实例的信息,这就是服务发现。 4.负载均衡当多个服务提供者时,可以根据负载均衡算法,比如:如简单轮询、随机连接等,自动地选择需要调用的服务地址。 例如:Spring Cloud 微服务架构中的Ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,在客户端就进行负载均衡算法分配。 如下图所示: ![]() 总共有七种负载均衡策略可供选择,可以根据自己的业务场景进行选择:
5.服务熔断服务熔断其实可以理解为类似于电表的保险丝,一旦某个时刻电压过载,那么保险丝就熔断了。 服务熔断的实现,大体流程如下图所示: ![]() 对于熔断机制的实现,设计了三种状态: 1.熔断关闭状态(Closed) 服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。 2.熔断开启状态(Open) 在固定时间窗口内,比如:默认10秒,接口调用出错比率达到一个阈值,会进入熔断开启状态,进入熔断状态后,后续对该服务接口的调用不再经过网络。 3.半熔断状态(Half-Open) 在进入熔断开启状态一段时间之后,比如:Hystrix默认5秒,熔断器会进入半熔断状态。 6.服务网关服务网关也称为API网关,是服务调用的唯一入口。 例如,在微服务架构中,Zuul是Spring Cloud中的微服务网关,是为微服务架构中的服务提供了统一的访问入口。 ![]() Gateway服务网关主要功能,如下图所示: ![]() 例如包含上图中的Gateway功能:
7.服务跟踪随着微服务架构的流行,服务按照不同的维度进行拆分,在复杂的微服务架构系统中,会形成一个复杂的分布式服务调用链路,如下图所示: ![]() 面对复杂的调用链路就带来一系列问题:
而链路追踪的出现正是为了解决这种问题,它可以在复杂的服务调用中定位问题。 例如:Spring Cloud Sleuth链路追踪 是 Spring Cloud的链路追踪组件,实现了分布式跟踪解决方案。 8.分布式配置中心将本地化的配置信息,比如:properties、yml等配置信息,注册到配置中心,实现程序包在开发、测试、生产环境的无差别性方便程序迁移。 以上 更多分布式架构系列、阿里架构师进阶系列,请查看以下文章:![]() |
|