面试题:微服务是什么?springcloud,springboot是什么?

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

面试刷题37:微服务是什么?springcloud,springboot是什么?

面试中被问到为什么要使用微服务架构?springcloud的核心组件有哪些?

拿我们国家的兵种来说,如何把战争这个单体架构微服务化,就是根据适用的场景,拆分出不同的兵种(微服务)

然后每个兵种之间通过军区指挥部采用特有的通信协议连接起来(RPC) ;

每个兵种内部自治,有自己的业务,数据,部署单元(建制)对外提供打击服务(HTTP)。

微服务
微服务是一种架构风格:

把单体系统拆分成各种微服务(进程集群里面),服务之间通过HTTP或者RPC协议进行通信。

服务内部是围绕某一个问题领域的业务,有自己单独的业务流程,数据存储,自动化测试,和自动化独立部署机制。

解决单体系统的难题:
开发端:部分业务的修改要修改整个项目, 开发维护成本高,容易出错,不利于团队协作;
运维线:部分业务的上线影响整体服务质量,运维无法精确评估系统资源的需求量;

带来的问题:

1,运维需要维护数量庞大的进程;

2,接口的业务流程拉长,一致性比较更难以控制;

3,分布式的复杂性:网络延迟,异步消息,分布式事务等;

基于敏捷项目管理和自动化部署可以应对这些问题。

springcloud整体介绍
基于springboot实现的微服务架构开发工具。

提供了这些分布式问题的解决方案:

springboot带来了什么?
1,提供了一个开发微服务的脚手架(idea的initializer创建springcloud的微服务),减少了从0开始搭建项目的问题;

2,并非重写spring或者替代spring,主要是提供了自动化配置简化原有的样板配置

3,快速开发,提供了各种starter集成其它的组件和解决依赖管理问题

4,轻松部署,内置了web容器,轻松跟docker融合;

涵盖了项目的构建,开发,测试阶段;

springboot快速使用
idea的initializer创建springcloud的微服务

开发一个rest接口

开发接口的单元测试代码

例子代码点我获取!

工程结构

依赖处理
1, parent处理方式

2,dependencyManagemant处理方式

运行
1,java -jar x.jar 运行 正式环境

2,idea提供调试运行; 开发环境

3,maven的spring-boot:run插件运行  开发环境;

springboot配置
自动化配置是springboot最大的亮点。

配置的加载优先级如下:

1,命令行中的参数 ;

2, 系统环境变量中的SPRING_APPLICATION_JSON配置;

3,JNDI属性: java:comp/env

4,java的操作系统属性 System.getProperties();

5,  操作系统的环境变量

6,jar包外部的 application-${profile}.properties

7, jar包内部的 application-${profile}.properties

8, @Configuration注解修改过的类 @PropertySource注解定义的属性

9, SpringApplication.setDefaultProperties()

多环境配置
application.properties放通用配置,指定激活 dev环境

在其他的环境中提供差异化的配置,发布的时候通过命令行指定环境spring.profiles.active=prod;

springboot监控
微服务是的进程的数量增多,必须有一套自动化的监控运维机制来收集微服务的运行指标,进行监控和预警。

spring-boot-starter-actuator 来进行监控。

并配置开启的端点。

常见的监控端点: /health /beans /mappings

小结
首先宏观上回答了为什么微服务会出现,解决了什么问题?

然后初步介绍了spring-cloud带来了什么?

接着从spring-cloud的基础出发,即springboot分析了springboot带来了什么,简单实用,配置和监控;

springboot带来了什么?

以及快速使用springboot开发接口的过程;

简单介绍了 工程结构,依赖的处理方式 , 运行指令等细节;

然后基于配置,介绍了配置参数的加载顺序,多环境下的最佳实践。

最后介绍了微服务继续的自动监控和运维机制 actuator ,收集微服务的端点信息。

原文地址https://www.cnblogs.com/snidget/p/12691636.html

相关文章
|
16小时前
|
XML 开发框架 Java
springboot和springcloud有哪些区别?
springboot和springcloud区别有: 1、含义不同;2、作用不同;3、使用方式不同;4、特征不同;5、注释不同;6、优势不同;7、组件不同;8、设计目的不同。 其中,含义不同指的是springboot是一个快速开发框架,而SpringCloud是建立在SpringBoot上的服务框架。
13 4
|
8天前
|
消息中间件 Java RocketMQ
Spring Cloud RocketMQ:构建可靠消息驱动的微服务架构
【4月更文挑战第28天】消息队列在微服务架构中扮演着至关重要的角色,能够实现服务之间的解耦、异步通信以及数据分发。Spring Cloud RocketMQ作为Apache RocketMQ的Spring Cloud集成,为微服务架构提供了可靠的消息传输机制。
21 1
|
11天前
|
Java 数据安全/隐私保护 Sentinel
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
|
11天前
|
运维 监控 Java
SpringCloud&认识微服务
SpringCloud&认识微服务
13 0
|
12天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
18天前
|
缓存 监控 Java
这些年背过的面试题——SpringCloud篇
本文是技术人面试系列SpringCloud篇,面试中关于SpringCloud都需要了解哪些基础?一文带你详细了解,欢迎收藏!
|
18天前
|
人工智能 监控 安全
Java+Spring Cloud +Vue+UniApp微服务智慧工地云平台源码
视频监控系统、人员实名制与分账制管理系统、车辆管理系统、环境监测系统、大型设备监测(龙门吊、塔吊、升降机、卸料平台等)、用电监测系统、基坑监测系统、AI算法分析(安全帽佩戴、火焰识别、周界报警、人员聚众报警、升降机超载报警)、安全培训、设备监测。
21 4
|
19天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
12天前
|
Java API Nacos
第十二章 Spring Cloud Alibaba Sentinel
第十二章 Spring Cloud Alibaba Sentinel
22 0
|
12天前
|
存储 前端开发 Java
第十一章 Spring Cloud Alibaba nacos配置中心
第十一章 Spring Cloud Alibaba nacos配置中心
17 0