主题
SpringCloud(框架/P78)
1.为什么需要学习 Spring Cloud
不论是商业应用还是用户应用,在业务初期都很简单,我们通常会把它实现为单体结构的应用。但是,随着业务逐渐发展,产品思想会变得越来越复杂,单体结构的应用也会越来越复杂。这就会给应用带来如下的几个问题:
- 代码结构混乱:业务复杂,导致代码量很大,管理会越来越困难,同时,这也会给业务的快速迭代带来巨大挑战;
- 开发效率变低:开发人员同事开发一套代码,很难避免代码冲突。开发过程会伴随这不断解决冲突的过程,这会严重的影响开发效率;
- 排查解决问题成本高:线上业务发现 bug,修复 bug 的过程可能很简单。但是,由于只有一套代码,需要重新编译、打包、上线、成本很高。
由于单体结构的应用随着系统复杂度的增高,会暴露出各种各样的问题。近些年来,微服务架构逐渐取代了单体架构,且这种趋势会越来越流行。SpringCloud 是目前最常用的微服务开发框架,已经在企业级开发中大量的应用。
2.什么是 SprintCloud
Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙简化了分布式系统基础设施的开发,如服务发现注册,配置中心,智能路由,消息总线,负载均衡,断路器,数据监控等,都可以用 SpringBoot 的开发风格做到一键启动和部署。SpringCloud 并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 SpringBoot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发这留出了一套简单易懂,易部署和维护的分布式系统开发工具包
设计目标与优缺点
1.设计目标
协调各个微服务,简化分布式系统开发
2.优缺点
微服务的框架那么多比如:dubbo、Kubernetes,为什么就要使用 SpringCloud 的呢?
优点:
- 产出于 Spring 大家族,Spring 在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善
- 组件丰富,功能齐全。SpringCloud 为微服务架构提供了非常完整的支持。列如,配置管理,服务发现,断路器,微服务网关等;
- SpringCloud 社区活跃度很高,教程很丰富,遇到问题很容易找到解决方案
- 服务拆分粒度更细,耦合度比较低,有利于资源重复利用,有利于提高开发效率
- 可以更精准的制定优化服务方案,提高系统的可维护性
- 减轻团队的成本,可以并行开发,不用关注其他人怎么开发,线关注自己的开发
- 微服务可以是跨平台的,可以用任何一种语言开发
- 适于互联网时代,产品迭代周期更短