Spring Cloud面试系列-01

1. 什么是 Spring Cloud 框架?

Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud的子项目,大致可分成两大类:

一类是对现有成熟框架“Spring Boot化”的封装和抽象,也是数量最多的项目;

第二类是开发一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的是kafka, ActiveMQ这样的角色。

对于快速实践微服务的开发者来说,第一类子项目已经基本足够使用,如:

1)Spring Cloud Netflix是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等;

2)Spring Cloud Config将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件;

3)Spring Cloud Bus分布式消息队列,是对Kafka, MQ的封装;

4)Spring Cloud Security对Spring Security的封装,并能配合Netflix使用;

5)Spring Cloud Zookeeper对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用;

6)Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。注意的是从2.x起,官方不会继续开源,若需要使用2.x,风险还是有的。但是我觉得问题并不大,eureka目前的功能已经非常稳定,就算不升级,服务注册/发现这些功能已经够用。

2. Spring Cloud 框架有哪些优缺点?

Spring Cloud优点:

1)服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率,每个模块可以独立开发和部署、代码耦合度低;

2)可以更精准的制定优化服务方案,提高系统的可维护性,每个服务可以单独进行部署,升级某个模块的时候只需要单独部署对应的模块服务即可,效率更高;

3)微服务架构采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量,模块专一性提升,每个模块只需要关心自己模块所负责的功能即可,不需要关心其他模块业务,专一性更高,更便于功能模块开发和拓展;

4)技术选型不再单一,由于每个模块是单独开发并且部署,所以每个模块可以有更多的技术选型方案,如模块1数据库选择mysql,模块2选择用oracle也是可以的;

5)适于互联网时代,产品迭代周期更短。系统稳定性以及性能提升,由于微服务是几个服务共同组成的项目或者流程,因此相比传统单一项目的优点就在于某个模块提供的服务宕机过后不至于整个系统瘫痪掉,而且微服务里面的容灾和服务降级机制也能大大提高项目的稳定性;从性能而言,由于每个服务是单独部署,所以每个模块都可以有自己的一套运行环境,当某个服务性能低下的时候可以对单个服务进行配置或者代码上的升级,从而达到提升性能的目的。

Spring Cl

相关推荐

  1. MySQL面试系列-01

    2024-03-16 00:08:01       45 阅读
  2. Elasticsearch面试系列-01

    2024-03-16 00:08:01       45 阅读
  3. MyBatis面试系列-01

    2024-03-16 00:08:01       40 阅读
  4. 架构设计面试系列-01

    2024-03-16 00:08:01       63 阅读
  5. Spring Boot面试系列-01

    2024-03-16 00:08:01       48 阅读
  6. Spring MVC面试系列-01

    2024-03-16 00:08:01       36 阅读
  7. Spring Cloud面试系列-01

    2024-03-16 00:08:01       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-16 00:08:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-16 00:08:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-16 00:08:01       87 阅读
  4. Python语言-面向对象

    2024-03-16 00:08:01       96 阅读

热门阅读

  1. 【gpt实践】实用咒语分享

    2024-03-16 00:08:01       44 阅读
  2. uniapp内实现链接跳转到浏览器网页上

    2024-03-16 00:08:01       44 阅读
  3. jdk8与jdk17的区别。springboot2.x与springboot3.x的区别

    2024-03-16 00:08:01       47 阅读
  4. 4.Python从入门到精通—Python 基础语法详细讲解-下

    2024-03-16 00:08:01       40 阅读
  5. Reactor,Proactor,Actor网络模型

    2024-03-16 00:08:01       32 阅读
  6. 蓝桥杯第1167题——荷马史诗

    2024-03-16 00:08:01       46 阅读
  7. 用 C 语言模拟 Rust 的 Box 类型

    2024-03-16 00:08:01       39 阅读
  8. Flink读取iceberg表

    2024-03-16 00:08:01       41 阅读
  9. 软件工程师,是时候了解下Rust编程语言了

    2024-03-16 00:08:01       45 阅读
  10. jsp中el表达式带有英文单双引号

    2024-03-16 00:08:01       43 阅读
  11. <个人笔记>数论

    2024-03-16 00:08:01       46 阅读
  12. C语言练习作业5

    2024-03-16 00:08:01       41 阅读
  13. LeetCode 热题 HOT 100(P11~P20)

    2024-03-16 00:08:01       36 阅读