Spring-Cloud 初探(序)

来源:互联网 发布:淘宝童装模特 编辑:程序博客网 时间:2024/06/05 14:29

介绍

Spring Cloud 为开发者提供了在用于构建分布式系统环境下一些常见模式的工具(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)。用于构建一些常见模式的工具。对于分布式系统间的协调产生的分发模式,开发人员可以使用Spring-Cloud快速构建实现了那些模式的服务和应用。Spring-Cloud可以在任何的分布式环境下良好运行,包括开发者自己的笔记本电脑,裸机数据中心,以及Cloud Foundry托管平台。

原文如下:

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer's own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.

Spring Cloud是基于Spring Boot的一套微服务框架。所以Spring Boot的优点也同样适用于Spring Cloud。

微服务与Spring Cloud

微服务架构在当下十分的流行,而采用微服务构建系统,也会呈现出更加清晰的业务划分和可扩展性。

简单来说,服务化的核心就是将传统的一站式应用,根据不同的业务,来拆分成一个个独立的服务,而微服务在是这个基础上,要更加彻底地去除耦合(比如使用独立的DB、KV,去掉重量级ESB),并且强调DevOps和快速演化。而Spring-Cloud恰逢应时的出现。

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。他要求开发、测试、运维进行一体化的合作,进行更小、更频繁、更自动化的应用发布,以及围绕应用架构来构建基础设施的架构。这就要求应用充分的内聚,也方便运维和管理。这个理念与微服务理念不谋而合。

特性

Spring Cloud专注于提供典型用例方案的良好开箱体验,以及可覆盖替换的扩展机制。

  • 分布式/版本化配置
  • 服务注册与发现
  • 路由
  • 服务间调用
  • 负载均衡
  • 断路器
  • 全局锁
  • 决策竞选和集群状态
  • 分布式消息

Spring Cloud 架构

我觉得下图已经足够说明一切,不再文字赘述。

Dubbo 架构

Dubbo是阿里开源的一个SOA服务治理解决方案,文档丰富,在国内的使用度非常高。不过目前已经不再维护,如果要使用,可以考虑在此基础上衍生出来的Dubbox。
这里只是列出了Dubbo的框架依赖关系图,更多关于Dubbo的内容可以前往Dubbo 开发者指南学习


和Dubbo对比

相比Dubbo,Spring-Cloud提供的功能更加全面,而且是维护程度高,很多功能和技术栈还在逐渐完善。

功能DubboSpring-Cloud服务注册与发现ZookeeperEureka服务调用方式RPCRESTful API断路器负载均衡
路由和过滤分布式配置集群决策竞选分布式消息全局锁

由于Dubbo只支持RPC调用。使得服务提供方与调用方在代码上产生了强依赖,服务提供者需要不断消费者提供公共代码的jar包使用。一旦jar包存在问题,将会导致服务调用者在使用时出错。

而Spring Cloud采用的是基于HTTP的REST方式。虽然牺牲了服务调用的性能,但是相比Dubbo采用RPC调用更为灵活,服务提供方和调用方之间的依赖仅仅只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。

而最为关键的是,Spring Cloud与Spring社区的其他产品如Spring Framework、Spring Boot、Spring Data、Spring Batch等项目可以完美融合。

微服务注重的就是可持续集成和快速交付,而在服务使用的是一个统一生态环境下的技术框架,这明摆着要比整合不同的技术要更有效率的多,同时风险也更小。

参考文献

http://projects.spring.io/spring-cloud/

https://springcloud.cc/

原创粉丝点击