解决什么问题
→spring cloud是什么,解决什么问题;
→spring cloud通过什么组件相互解决问题,以及组件相互间的协作情况;
→spring cloud不适用的情况,以及使用时需要注意的情况问题;
→后续持续更新各组件的介绍、整合配置、原理分析、源码导读等,使整个架构能够实施到生产环境。
Spring Cloud是什么
引用官方的说明(懒得看这个):
Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。 分布式系统的协调导致了锅炉板模式,并且使用Spring Cloud开发人员可以快速地站起来实现这些模式的服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。
为什么使用Spring Cloud
→有spring这个爸爸,在企业级开发框架中无人能及,社区活跃确保后续的更新、完善。
→生态圈庞大,提供了一整套服务治理的子项目,几乎方方面面都考虑到,能让开发者快速的上手实现自己的应用。
→组件整合方便,开发开箱即用。
→spring cloud活跃度很高,教程很丰富,遇到问题很容易找到解决方案。
→spring cloud微服务相较soa的架构更偏向于“云”的思想。当公司有需求把系统迁移到云时,迁移成本更低。
→spring cloud微服务更容易做多语言系统的协作整合,和其他外部服务、接口的协作也更方便。
→结合运维工具(如容器docker)、系统管理监控工具(如ELK等)、项目管理工具(如maven)、测试工具等,比较方便实现自动化的运维集成和持续开发、统一管理、热部署扩容等。从而提高开发、运维效率。
Spring Cloud Netflix微服务组件架构图
部分核心组件流程图:
热更新流程图:
Spring Cloud应用注意事项
→ 不适合小型独立的项目。可以使用spring boot开发。
→组件多,用好学习成本较高。
→入门门槛较低,精通门槛高。
→有一定的自动化运维知识,堆人方式的运维会疯掉的。
→服务拆分的颗粒度需要注意拿捏。整体的思路是以单一原则为指导,每个服务具备各自满足单一原则的服务提供。