介绍
将各家公司已经开发好的、经过实践考验的较为成熟的技术组合起来,并通过 spring boot 风格进行再次封装,屏蔽掉复杂的配置和实现原理,为开发者提供一套简单易懂、易部署和维护的分布式系统开发包。
组件
服务治理 Eureka
使用 Netflix Eureka 作为服务治理,并对其进行了一次封装。使得开发者可以以 Spring boot 的风格使用它。通过服务注册将单个微服务节点注册给服务中心,这样服务治理中心就可以治理单个节点。服务发现则是微服务节点可以对服务治理中心发送消息,使得中心可以将新的节点纳入管理。类似 zookeeper 的功能。
负载均衡 Ribbon
微服务开发中,将大的系统拆分为多个微服务系统,各个微服务系统之间需要互相协作才能完成业务需求。每个服务又可能存在多个节点,当一个服务调用另一个服务时,服务提供者需要使用负载均衡算法对请求进行响应。这样来保证系统的扩展性和高可用。Ribbon 被用来实现这一功能。通常都是通过 REST 风格来实现。
服务声明 Feign
通过 Feign,把接口的声明简化。
断路器 Hystrix
在分布式中,可能会存在延迟或故障。对于故障节点,要能从集群中去除。Hystrix 就是用来进行故障转移等功能。
API网关 Zuul
Zuul 用来做为API网关,第一个用处就是将请求的地址映射为真实的服务器地址,如:将 http://localhost/user/1
映射为最终的真实服务请求地址: http://localhost:8001/user/1
。相当于路由及分发的功能,在这里也可以加入负载均衡的功能。Zuul 的第二个用处就是提供过滤器,用来过滤那些恶意或无效的请求。
各个微服务在 Eureka 上注册服务。服务之间通过 Feign/Ribbon 基于 REST 风格进行功能的调用。