SpringCloud
spring Cloud 为开发者提供了工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话,集群状态)。分布式系统的协调导致了样板模式,使用 Spring Cloud 开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地工作,包括开发人员自己的笔记本电脑、裸机数据中心以及 Cloud Foundry 等托管平台。
开发分布式系统可能具有挑战性。复杂性从应用层转移到网络层,需要服务之间更大的交互。使您的代码“云原生”意味着处理12因子诸如外部配置、无状态、日志记录和连接到支持服务等问题。Spring Cloud 项目套件包含使应用程序在云中运行所需的许多服务。
Spring Cloud 架构亮点
服务发现
在云中,应用程序不能总是知道其他服务的确切位置。服务注册中心,例如Netflix 尤里卡,或边车解决方案,例如HashiCorp 领事, 可以帮助。Spring CloudDiscoveryClient为流行的注册表提供了实现,例如尤里卡,领事,动物园管理员, 乃至Kubernetes’内置系统。还有一个Spring Cloud 负载均衡器帮助您在服务实例之间仔细分配负载。
API网关
由于有如此多的客户端和服务器在运行,在您的云架构中包含一个 API 网关通常会很有帮助。网关可以负责保护和路由消息、隐藏服务、限制负载以及许多其他有用的事情。春天云网关为您提供对 API 层的精确控制,集成 Spring Cloud 服务发现和客户端负载平衡解决方案以简化配置和维护。
云配置
在云中,配置不能简单地嵌入到应用程序中。配置必须足够灵活,以应对多个应用程序、环境和服务实例,并在不停机的情况下处理动态变化。春天云配置旨在减轻这些负担,并提供与 Git 等版本控制系统的集成,以帮助您保持配置安全。
断路器
分布式系统可能不可靠。请求可能会遇到超时或完全失败。断路器可以帮助缓解这些问题,并且春云断路器为您提供三种流行选项的选择:弹性4J,哨兵, 要么海斯特里克斯.
追踪
调试分布式应用程序可能很复杂并且需要很长时间。对于任何给定的故障,您可能需要将来自多个独立服务的信息痕迹拼凑在一起。春云侦探可以以可预测和可重复的方式检测您的应用程序。当与齐金,您可以将可能遇到的任何延迟问题归零。
测试
在云中,您可以通过拥有可靠、值得信赖、稳定的 API 获得额外加分,但实现这一目标可能是一段旅程。基于合同的测试是高绩效团队经常用来保持进度的一种技术。它通过形式化 API 的内容并围绕它们构建测试来确保代码处于检查状态。
Spring Cloud 合约使用 Groovy、Java 或 Kotlin 编写的合约为 REST 和基于消息的 API 提供基于合约的测试支持。
特征
Spring Cloud 专注于为典型用例提供良好的开箱即用体验,并提供可扩展机制以覆盖其他用例。
- 分布式/版本化配置
- 服务注册和发现
- 路由
- 服务到服务调用
- 负载均衡
- 断路器
- 全局锁
- 领导选举和集群状态
- 分布式消息传递
SpringCloud和SpringBoot的关系
SpringBoot专注于开苏方便的开发单个个体微服务;
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务,整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由、为代理、事件总栈、全局锁、决策竞选、分布式会话等等集成服务;
SpringBoot可以离开SpringCloud独立使用,开发项目,但SpringCloud离不开SpringBoot,属于依赖关系;
SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架;
Dubbo 和 SpringCloud技术选型
- 分布式+服务治理Dubbo
目前成熟的互联网架构,应用服务化拆分 + 消息中间件
- Dubbo 和 SpringCloud对比
可以看一下社区活跃度:
https://github.com/spring-cloud
对比结果:
最大区别:Spring Cloud 抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式
严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这个优点在当下强调快速演化的微服务环境下,显得更加合适。
品牌机和组装机的区别
社区支持与更新力度的区别
总结:二者解决的问题域不一样:Dubbo的定位是一款RPC框架,而SpringCloud的目标是微服务架构下的一站式解决方案。
SpringCloud能干嘛
Distributed/versioned configuration 分布式/版本控制配置
Service registration and discovery 服务注册与发现
Routing 路由
Service-to-service calls 服务到服务的调用
Load balancing 负载均衡配置
Circuit Breakers 断路器
Distributed messaging 分布式消息管理
…
SpringCloud下载
官网:http://projects.spring.io/spring-cloud/
版本号有点特别:
SpringCloud没有采用数字编号的方式命名版本号,而是采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序,比如最早的Realse版本:Angel,第二个Realse版本:Brixton,然后是Camden、Dalston、Edgware,目前最新的是Hoxton SR4 CURRENT GA通用稳定版。
自学参考书:
SpringCloud Netflix 中文文档:https://springcloud.cc/spring-cloud-netflix.html
SpringCloud 中文API文档(官方文档翻译版):https://springcloud.cc/spring-cloud-dalston.html
SpringCloud中国社区:http://springcloud.cn/
SpringCloud中文网:https://springcloud.cc