SpringCloud简介
- 微服务介绍:
微服务是一种架构风格,一个大型复杂的系统是由一个或多个微服务组成的,系统间的各个微服务可以独立部署,每个微服务间是松耦合的,每个微服务只关注于完成一件任务,每个任务代表一个小的业务能力。
微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务可以在自己的程序中运行。通过这一点我们就可以将服务公开与微服务架构(在现有系统中分布一个API)区分开来。在服务公开中,许多服务都可以被内部独立进程所限制。如果其中任何一个服务需要增加某种功能,那么就必须缩小进程范围。在微服务架构中,只需要在特定的某种服务中增加所需功能,而不影响整体进程。
----来自百度百科
- 微服务中的spring-cloud
Spring Cloud是一个相对比较新的微服务框架,2016n年推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。
Spring Cloud 为开发者提供了在分布式系统(配置管理,服务发现,熔断,路由,微代理,控制总线,一次性token,全居琐,leader选举,分布式session,集群状态)中快速构建的工具,使用Spring Cloud的开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。
----来自简书
- Eureak
Eureka是Spring Cloud Netflix微服务套件中的一部分,本身是一个基于REST的服务,可以与Springboot构建的微服务很容易的整合起来。
Eureka包含了服务器端Eureka Server和客户端组件Eureka Client。服务器端,也被称作是服务注册中心,用于提供服务的注册与发现。
一、服务生产者启动时,向服务注册中心注册自己提供的服务
二、服务消费者启动时,在服务注册中心订阅自己所需要的服务
三、注册中心返回服务提供者的地址信息个消费者
四、消费者从提供者中调用服务
- Ribbon
- Ribbon客户端组件, Netflix发布的开源项目
- 主要功能:提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。
- 提供一系列完善的配置项如连接超时,重试等。
- 在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。简单地说,Ribbon是一个客户端负载均衡器。
- 工作时分为两步:第一步先选择 Eureka Server, 它优先选择在同一个Zone且负载较少的Server;第二步再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略,例如轮询、随机、根据响应时间加权等。
- Feign
- 声明式的web service客户端,使编写web service客户端更容易
- 创建接口,为接口添加注解,即可使用Feign
- Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。
- Spring Cloud为Feign添加了Spring MVC的注解支持,并整合了Ribbon和Eureka来为使用Feign时提供负载均衡。
- Hystrix
- 熔断器,容错管理工具,通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
- 具备服务降级、服务熔断、线程隔离、请求缓存、请求合并以及服务监控等强大功能。
- 实现了线程隔离、断路器等一系列的服务保护功能。