划水大佬教你SpringCloud-入门篇

SpringCloud是什么?

简单来说,Spring Cloud是一个微服务框架的规范,只是规范,他不是任何具体的框架

为什么要用微服务?(面试问题)

  • 架构的演进

    • 单体架构

      单体架构在小微企业比较常见,典型代表就是一个应用、一个数据库、一个 Web 容器就可以跑起来
      ps:在我的印象中 (用户量达到5000要考虑 单应用的集群了,达到5w-10w 抱歉!不改框架的话,准备跑路吧,每天不是运营找你,就是老板叼你)
      Windows Tomcat允许每个进程maxThreads(最大线程数)2000
      Linux Tomcat允许每个进程maxThreads(最大线程数)1000
      Nginx:承受3万并发连接数
      

      这里进行一个扩展:Spring Boot 默认支持的并发量

      Nginx承受并发连接数

    • SOA

      SOA 代表面向服务的架构,将应用程序按照不同的职责划分为不同的模块,不同的模块直接通过特定的协议和接口进行交互。
      说白了,就是单体程序已经不够支撑业务进行了。
      

    • 微服务

      微服务是一种架构模式,叫微服务架构更合理,就是把一个系统中的各个功能点都拆开为一个个的小应用然后单独部署,同时因为这些小应用多,所以需要一些办法来管理这些小应用。
      

  • 微服的特性

    • 1.每个服务都可独立运行
    • 2.一系列独立运行的微服务共同构建起了整个系统;
    • 3.每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等
    • 4.微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用
  • 开发中微服务体现

    • 易于开发和维护(运维要求较高)
    • 启动较快
    • 局部修改容易部署(赞同)
    • 技术栈不受限(这个就不一定,有些程序员就不适合开发,硬伤!别问,问就是我带的团队中就出现过这种人)
    • 分布式的复杂(没做过SOA项目的=小白)
    • 重复劳动 (赞同)

微服务设计原则(架构师必看)

  • 单一职责原则
  • 服务自治原则
  • 轻量级通信原则
  • 接口明确原则
  • 加一点: 一定要好理解,不然下面的人沟通下来 也是很大的成本!

SpringCloud 常用组件

  1. eureka (提供服务注册与发现功能)

  2. ribbon(提供负载均衡功能)

  3. Feign(整合了ribbon和Hystrix,具有负载均衡和熔断限流等功能)

  4. Hystrix (提供了熔断限流,合并请求等功能)

  5. Zuul (提供了智能路由的功能)

  6. Hystrix Dashboard (提供了服务监控的功能,提供了数据监控和友好的图形化界面)

  7. Hystrix Turbine (Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。也是监控系统的功能)

  8. spring cloud config (提供了统一配置的功能)

  9. Spring Cloud Bus (提供了配置实时更新的功能)

    可以用Nacos或者Zookeeper来替换eureka. 推荐使用 Nacos

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐