对于SpringCloud的理解和认识

微服务

    SpringCloud是Spring为微服务架构思想做的一个一站式实现。从某种程度是可以简单的理解为,微服务是一个概念、一个项目开发的架构思想。SpringCloud是微服务架构的一种java实现。
 
    什么是微服务?
    微服务没有一个标准统一的概念,个人理解:微服务是一种可以让软件职责单一、松耦合、自包含、可以独立运行和部署的架构思想。
    关键思想:拆分、单一、独立、组件化。把原本一个庞大、复杂的项目按业务边界拆分一个一个独立运行的小项目,通过接口的方式组装成一个大的项目。
 
    微服务的出现解决了什么问题?
    相对于微服务,普通的项目都会包含很多功能,是一个大而全的“超级”工程。比如:以普通架构方式实现的电商平台会是一个包含:登录、权限、会员、商品库存、订单、收藏、关注、购物车等功能单一项目。随着项目业务越来越复杂、开发人员越来越多相应开发、编译、部署、技术扩展、水平扩展都会受到限制。
 

  • 开发

    太多功能在一个项目中,可能会让代码复杂、结构混乱、业务关联混乱、技术单一。过多的功能,让整个项目结构复杂,业务相互交织,可能导致开发人员对业务的理解和代码实现相互交织,最后没人能完全理解整个项目。而且也很难控制每个开发人员能“合法合规”的编码,可能会把两个本来松耦合、互不影响的功能因为实现“简单”就偷懒强关联在一起。

  • 技术单一

    单一的项目为了技术的统一和管理的简单方便,一般都会采用统一的技术实现。但是超大型业务如电商平台,不可能只采用一种技术,可能会结合业务及不同技术优缺点和技术团队优执采用不同的技术。如果把项目拆分成不同的小项目,每个小项目可以根据自己的特点采用不同的技术,只需要提供统一的接口实现对接即可,最大化技术的优势。

  • 编译

    过于庞大的代码 也会导致整个项目编译时间过长,一次简单的修改或一个简单的单元测试需要漫长的编译和启动。

  • 版本控制

    过多的开发人员在同一个项目中共同开发不同业务模块,也会大大增加版本冲突。

  • 部署

    一个简单的修改需要部署整个项目。当多个功能同时上线,但仅仅因为一个小功能失败,就会导致其它所有功能一起回滚。

  • 扩展

    互联网的飞速发展,用户和请求量急剧增加,传统的项目很难扩展,即集群和分布式扩展的问题。
 
    微服务如何解决上面的问题?
    核心思路:就是拆分。

SpringCloud

    SpringCloud是基于SpringBoot的一套实现微服务的框架。它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,跟SpringBoot框架一起使用的话,会让你开发微服务架构的云服务非常方便。
 
    SpringCloud五大核心组件

  • 服务注册发现-Netflix Eureka
  • 配置中心 - spring cloud config
  • 负载均衡-Netflix Ribbon
  • 断路器 - Netflix Hystrix
  • 路由(网关) - Netflix Zuul

猜你喜欢

转载自blog.csdn.net/liuziteng0228/article/details/80145754