spring cloud 微服务架构学习笔记

什么是微服务架构

“微服务”一词源于Martin Fowler的名为Microservices的博文。简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成许多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过RPC/RESTFul API进行通信协作。

微服务九大特征

  1. 服务组件化
  2. 按业务组织团队
  3. 做“产品”的态度
  4. 智能端点与哑管道
  5. 去中心化治理
  6. 去中心化管理数据
  7. 基础设施自动化
  8. 容错设计
  9. 演进式设计

Spring Cloud 微服务架构原理

spring cloud 微服务架构学习笔记_第1张图片

微服务化后,微服务间我们通过 http restful api 通信,问题是调用的服务是一个集群,我们怎么知道应该请求哪一个服务?这里引入Eureka 来解决,微服务将自己的相关信息注册到Eureka Server, 同时又能拿到别的服务的信息,这样本地客户端我们再通过ribbon决策出请求哪一个服务,做负载均衡。然后我们再通过 hystrix 做好熔断,避免个别服务问题导致整个系统雪崩的问题。微服务化后,服务实例变多了,这些实例很多配置都是相同的,这里我们使用 Spring Cloud Config 来统一做配置,避免配置复杂繁琐不一致的问题。以前我们通过nginx这类反向代理软件来做网关路由,这类需要手动的去维护路由规则和可用服务列表,比较麻烦。spring cloud 提供zuul网关来帮我们简化这部分工作,可用的服务列表直接从eureka里取,不需要手动维护了。

 

Spring Cloud 常用组件

 

  1. 服务发现——Netflix Eureka
  2. 客服端负载均衡——Netflix Ribbon
  3. 断路器——Netflix Hystrix
  4. 服务网关——Netflix Zuul
  5. 分布式配置——Spring Cloud Config

 

Spring Cloud vs Dubbo

spring cloud 微服务架构学习笔记_第2张图片

  1. Spring Cloud是Dubbo的超集,定位为一套完整的微服务解决方案,而Dubbo只是专注于RPC和服务治理。
  2. Dubbo 采用RPC 长链接通信,比Spring Cloud 的http restful 性能要好些,对响应时间要求很高的系统Dubbo有优势
  3. Dubbo 的注册中心依赖 zeekeeper,如果 zeekeeper 出问题就不可用了,而Spring Cloud 的Eureka支持高可用集群
  4. Spring Cloud 基于 Spring Boot ,易用性强于Dubbo

你可能感兴趣的:(架构)