微服务架构 Spring Cloud 组件

[b]SpringCloud分布式开发五大组件:[/b] 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config [b]1、Eureka[/b] 由两个组件组成:Eureka服务器和Eureka客户端 Eureka Client:负责将这个服务的信息注册到Eureka Server中 Eureka Server:注册中心,里面有一个注册表,保存了各个服务所在的机器和端口号 [img]http://dl2.iteye.com/upload/attachment/0131/1690/5aa5db27-1d80-3486-ae5e-a9312e5032a7.png[/img] [img]http://dl2.iteye.com/upload/attachment/0131/1665/8805f406-9ffe-312e-acca-b6c7adff07e3.png[/img] [img]http://dl2.iteye.com/upload/attachment/0131/4779/01119fc4-d34e-3f51-a9cd-f42d7373816e.png[/img] [b]2、Ribbon[/b] 主要提供客户侧的软件负载均衡算法。 Ribbon客户端组件提供一系列完善的配置选项,好比链接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略: 简单轮询负载均衡 加权响应时间负载均衡 区域感知轮询负载均衡 随机负载均衡 [img]http://dl2.iteye.com/upload/attachment/0131/4773/88ec6461-3b2a-33f0-830e-eb1eee4c2220.png[/img] [img]http://dl2.iteye.com/upload/attachment/0131/4775/f60b321d-574a-3186-8760-4732727eab29.png[/img] [b]3、Hystrix[/b] 断路器能够防止一个应用程序屡次试图执行一个操做,即极可能失败,容许它继续而不等待故障恢复或者浪费 CPU 周期,而它肯定该故障是持久的。断路器模式也使应用程序可以检测故障是否已经解决。若是问题彷佛已经获得纠正​​,应用程序能够尝试调用操做。 [img]http://dl2.iteye.com/upload/attachment/0131/4777/594f7801-1b1b-3d72-9c01-c8679e260744.png[/img] [b]4、Zuul[/b] 是一个网关组件。提供动态路由,监控,弹性,安全等边缘服务的框架。 [img]http://dl2.iteye.com/upload/attachment/0131/4771/4beef36c-49fb-34cb-b791-bbade59eb3f5.png[/img] [b]5、Spring Cloud Config[/b] 远程配置服务,这个仍是静态的,得配合Spring Cloud Bus实现动态的配置更新。 远程配置是每一个都必不可少的中间件,远程配置的特色通常须要:多节点主备、配置化、动态修改、配置本地化缓存、动态修改的实时推送等。 config容许配置文件放在git上或者svn上,和spring boot的集成很是容易。 [img]http://dl2.iteye.com/upload/attachment/0131/1698/92967046-3ea7-3f73-947a-9823de047af1.png[/img] [b]6、总结[/b] Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,而且Eureka Client还能够反过来从Eureka Server拉取注册表,从而知道其余服务在哪里 Ribbon:服务间发起请求的时候,基于Ribbon作负载均衡,从一个服务的多台机器中选择一台 Hystrix:发起请求是经过Hystrix的线程池来走的,不一样的服务走不一样的线程池,实现了不一样服务调用的隔离,避免了服务雪崩的问题 Zuul:若是前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务 [img]http://dl2.iteye.com/upload/attachment/0131/4781/9106fc19-06cc-35ce-913b-0f416a81fe71.png[/img]