微服务Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩展。
特点:分别运作在不同的进程。
微服务架构需要的功能或使用场景
- 我们把整个系统根据业务拆分成几个子系统。
- 每个子系统可以部署多个应用,多个应用之间使用负载均衡。
- 需要一个服务注册中心(比如Eureka),所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。
- 所有的客户端都通过同一个网关(比如:Zuul)地址访问后台的服务,通过路由配置,网关来判断一个URL请求由哪个服务处理。请求转发到服务上的时候也使用负载均衡。
- 服务之间有时候也需要相互访问(比如:用到Feign)。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。
- 需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。
- 还需要一个监控功能,监控每个服务调用花费的时间等。
目前主流的微服务框架:Dubbo、 SpringCloud、thrift、Hessian等
spring cloud 架构图:
Springcloud利用springboot开发的便利性,简化了分布式系统基础设施的开发,如服务注册发现、配置中心、消息总线、负载均衡、断路器、数据监控等。
Spring cloud netflix
Netflix Eureka 或者 Spring Cloud consul 服务注册发现
Feign 服务的调用和负载均衡
Netflix Hystrix 断路器, 处理服务的熔断,防止故障扩散
Netflix Zuul 动态路由 负载均衡,反向代理,权限认证,网关
Spring Cloud config 服务集群配置中心,支持本地存储,git,svn
Spring Cloud bus 消息总线
Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。
Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。