本系列持续更新中
SpringCloud微服务框架01-SpringCloud简介
SpringCloud微服务框架02-Eureka服务注册与发现
SpringCloud微服务框架03 - Ribbon负载均衡
SpringCloud微服务框架04 - Config统一配置中心
文章中设计到的项目源码,会逐步整理到github上。github除了本系列文章设计到的源码信息,还有Spring Cloud整合的项目框架。有同样正在学习Spring Cloud的小伙伴可以加我一起学习交流。
github地址:https://github.com/hack-feng/maple-cloud
1、什么是微服务(Microservice)
微服务架构模式是将整个Web项目应用根据业务拆分为一系列的小的Web服务。这些小的Web服务可以独立的编译及部署,并各自暴露API接口相互通讯。它们之间相互协作,作为一个整体为用户提供功能,而且可以独立进行扩展。
微服务架构需要的功能或使用场景
1:我们把整个系统根据业务拆分成几个子系统。
2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。
3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。
4:所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。
5:服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。
6:需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。
7:还需要一个监控功能,监控每个服务调用花费的时间等。
目前主流的分布式框架有:Dubbo、SpringCloud等。
2、SpringCloud项目简介
SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线)。分布式系统的协调导致了样板mosh模式,使用Spring Cloud开发人员可以快速的支持实现这些木事的服务和应用程序。他们将在任何分布式环境中良好运行,ba包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry托管平台。
特性:
Spring Cloud专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖
- 分布式/版本化管理
- 服务注册与发现
- 路由
- service - to - service
- 负载均衡
- 断路器
- 分布式消息传递
spring Cloud框架结构
服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。
Eureka(服务注册与发现)
一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。提供在分布式环境下的服务发现,服务注册的功能。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
Ribbon(负载均衡)
Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略:
- 简单轮询负载均衡
- 加权响应时间负载均衡
- 区域感知轮询负载均衡
- 随机负载均衡
Ribbon中还包括以下功能:
- 易于与服务发现组件(比如Netflix的Eureka)集成
- 使用Archaius完成运行时配置
- 使用JMX暴露运维指标,使用Servo发布
- 多种可插拔的序列化选择
Spring cloud Hystrix 熔断器
断路器(Cricuit Breaker)是一种能够在远程服务不可用时自动熔断(打开开关),并在远程服务恢复时自动恢复(闭合开关)的设施,Spring Cloud通过Netflix的Hystrix组件提供断路器、资源隔离与自我修复功能。
Spring Cloud Zuul(服务网关)
类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。
本文参考:
联系方式:
QQ:246843101
微信: