本文共 2336 字,大约阅读时间需要 7 分钟。
微服务面试题总结
微服务是一种架构风格,将应用程序构建为以业务领域为模型的小型自治服务集合。这些服务可以独立开发、部署并根据需求进行缩放,支持敏捷开发和持续交付,提供高效的故障隔离和混合技术堆栈。以下是关于微服务及其相关技术的面试问题和答案总结。
1. 微服务的定义
微服务是一种以业务领域为模型的小型自治服务集合。每个服务独立于其他服务,专注于单一功能,并通过标准化接口与其他服务协作。
2. 微服务架构的优势
- 独立开发:每个服务可以单独开发和部署。
- 故障隔离:一个服务的故障不会影响其他服务。
- 混合技术堆栈:支持使用不同的语言和技术。
- 粒度缩放:可以根据需求缩放单个服务。
- 解耦:服务之间通过标准化接口通信,减少耦合。
3. 微服务的特点
- 解耦:服务间通过接口通信,系统组件化。
- 自治:每个服务独立运行,团队可以自主开发。
- 业务能力:服务专注于单一业务功能。
- 持续交付:支持自动化测试和快速发布。
- 敏捷:支持快速迭代和功能开发。
4. 设计微服务的最佳实践
- 单一责任:每个服务负责特定业务逻辑。
- 标准化接口:定义统一的API接口。
- 去中心化:允许服务选择最优工具和技术。
- 弹性扩展:通过水平缩放解决性能问题。
- 分布式设计:服务间通过事件或消息协作。
5. 微服务架构如何运作
微服务架构包括以下主要组件:
- 客户端:发送请求的用户或其他服务。
- 身份验证:验证用户身份并颁发令牌。
- API网关:处理客户端请求并路由到目标服务。
- 管理平衡器:动态分配请求并监控服务状态。
- 服务发现:注册和查找服务实例。
- 远程服务:允许服务在分布式环境中远程访问。
6. 微服务架构的优缺点
- 优点:
- 透明度高:服务间通过可见接口协作。
- 可扩展性强:可以通过水平缩放解决性能问题。
- 强调单一职责:服务专注于特定功能。
- 缺点:
- 配置管理复杂:需要动态配置和环境管理。
- 调试难度大:分布式环境下难以定位问题。
- 额外开销:分布式系统需要处理网络延迟和带宽问题。
7. 单片、SOA和微服务的区别
- 单片架构:所有组件紧密集成,缺乏灵活性。
- SOA架构:服务通过技术规范协作,架构风格松散。
- 微服务架构:服务以业务能力为模型,支持自动化和弹性扩展。
8. 使用微服务架构的挑战
- 自动化组件:需要自动化Build、Deploy和Monitor。
- 易感性:大量服务难以维护和监控。
- 配置管理:在多环境下维护配置复杂。
- 调试难度:分布式环境下难以定位问题。
9. SOA和微服务的主要区别
SOA和微服务架构的主要区别在于粒度和弹性扩展:
- SOA:关注整体架构的设计和服务协作。
- 微服务:以单个服务为单位,支持独立部署和弹性扩展。
10. 微服务的核心特点
- 解耦:服务间通过接口通信。
- 组件化:服务可以独立开发和替换。
- 自治:服务独立运行,团队可以自主开发。
- 持续交付:支持自动化测试和快速发布。
- 责任清晰:服务专注于特定业务逻辑。
11. 领域驱动设计(DDD)
领域驱动设计通过将应用程序划分为有界上下文,聚焦于特定业务领域,提高系统的可理解性和可维护性。
12. DDD的必要性
DDD通过将大型系统划分为小型有界上下文,解决跨领域协作和复杂性问题,为业务逻辑提供清晰的建模方法。
13. 无所不在的语言(UL)
无所不在的语言是一种通用语言,用于跨领域解释和翻译,确保团队成员在同一页面上理解业务逻辑。
14. 内聚力与耦合
- 凝聚力:模块内部元素的结合程度。
- 耦合:组件间依赖关系的强度。高内聚力和低耦合性是好的设计原则。
15. RESTful API
RESTful API是一种基于HTTP协议的资源表示状态转移架构,用于构建松散耦合的微服务架构。
16. Spring Boot的优势
- 简化开发:提供默认配置,减少样板代码。
- 依赖管理:通过 Maven依赖减少冲突。
- 快速启动:无需手动配置服务器和依赖。
- 环境配置:支持基于环境的动态配置。
17. Spring Boot的监视器
Spring Boot Actuator提供监控和健康度评估功能,通过HTTP端点公开指标数据。
18. Spring Boot的安全性
Spring Boot Security通过配置简化身份验证和授权流程,支持多种安全协议。
19. Spring Boot的分页和排序
使用Spring Data JPA实现分页和排序,通过注解简化数据库操作。
20. Swagger与Spring Boot
Swagger生成API文档,支持在线沙箱测试,帮助开发人员理解服务接口。
21. Spring Profiles
Spring Profiles允许根据环境选择不同的配置文件,支持多种部署环境。
22. Spring Batch
Spring Batch处理大量数据记录,支持事务管理、日志、作业统计和重新启动功能。
23. Spring Boot的异常处理
通过@ControllerAdvice处理所有异常,提供统一的错误处理逻辑。
24. CSRF攻击
CSRF攻击伪造请求,强制用户执行不需要的操作,需要通过令牌验证防止。
25. WebSocket
WebSocket提供全双工通信,通过TCP连接实现实时数据传输。
26. AOP(面向方面编程)
AOP通过横切关注点实现日志、事务、权限等方面的功能,减少代码重复。
27. Apache Kafka
Kafka是一个分布式发布-订阅系统,适合构建高效的消息系统。
28. Spring Cloud的作用
Spring Cloud提供服务注册、发现、配置管理、负载均衡等功能,支持微服务治理。
以上问题和答案为技术面试准备提供参考,希望对您有所帮助!
转载地址:http://xhvg.baihongyu.com/