- 定义: 软件架构风格,其中应用程序由通过网络进行通信的小型独立服务组成。
- 优点:可扩展性、灵活性、独立部署、灵活性、更好的故障隔离。
- 挑战:管理复杂性、网络延迟、分布式数据管理和强大性 DevOps 实践的需要。
- 定义: 动态发现和连接微服务架构中的服务机制。
- 工具:Eureka(Netflix),Consul(HashiCorp),Zookeeper(Apache)。
- 模式:客户端发现,服务器端发现。
- 定义: 将客户端要求的入口点路由到适当的服务。
- 职责:要求路由、组合和协议翻译。
- 工具:Kong、NGINX、Zuul(Netflix)。
- 同步通信: 通常通过直接服务到服务通信 HTTP/REST 或 gRPC。
- 异步通信:通过RabitMQ等消息系统进行通信、Kafka或AWS SQS。
- 模式: 请求-响应、事件驱动、发布-订阅。
- 每个服务数据库: 每个服务管理自己的数据库模式,促进数据自治。
- 挑战: 维护跨服务和分布式事务的数据一致性。
- 解决方案:最终一致性,Saga模式,CQRS(命令查询职责分离)。
- 定义: 一种逻辑设计模式,用于检测故障并包装以防止故障重复。
- 工具:Hystrix(Netflix),Resilience4j.
- 用途: 防止级联故障,提高容错能力。
- 技术: 重试逻辑、加时设置、回退方法。
- 模式:隔板模式、重试模式、超时模式.
- 工具:Hystrix、Resilience4j.
- 定义: 管理不破坏现有客户端的实现 API 中的更改。
- 技术: URI 版本控制,查询参数版本控制,自定义标头。
- 策略: 弃用旧版本,保持向后兼容性。
- 重要性: 了解微服务的行为和性能至关重要。
- 工具:Prometheus、Grafana、ELK Stack(Elasticsearch、Logstash、Kibana)、Zipkin(分布式跟踪)
- 最佳实践:集中日志记录、分布式跟踪、指标收集。
- 技术: OAuth2、JWT(JSON Web Tokens)用于身份验证和授权。
- 挑战: 确保服务间的通信安全和管理秘密。
- 工具:Spring Security、Keycloak、Vault(HashiCorp)。
- 容器:为了实现跨环境的一致性,通常在容器中部署微服务。
- 工具:Docker、Podman.
- 编排: Kubernetes,用于自动化容器的部署、扩展和操作。
- 重要性: 微服务的自动化测试、构建和部署过程。
- 工具:Jenkins、GitLab CI、CircleCI.
- 最佳实践:自动化测试、蓝绿部署、金丝雀发布。
- 定义: 通过事件通信的微服务允许松散耦合和可扩展性。
- 工具:Kafka、RabbitMQ、AWS SNS/SQS.
- 模式: 事件溯源,CQRS。
- 定义: 一种专注于业务领域建模的软件开发方法。
- 概念: 上下文有界,聚合,实体,值对象。
- 用途: 帮助在微服务架构中定义服务边界。
- 测试类型: 单元测试、集成测试、合同测试、端到端测试。
- 工具:JUnit、TestNG、Postman、WireMock(用于模拟服务)。
- 最佳实践:自动化,CI/CD 使用集成、测试替身。
- 了解基础知识:了解微服务的核心原理。
- 动手实践: 使用 Docker、Kubernetes 和 Spring Boot 等工具。
- 保持更新:微服务发展迅速;跟上最新趋势和最佳实践。
祝你面试顺利!
与我联系:- LinkedIn:https://www.linkedin.com/in/nikko-ferwelo-358b11213
- GitHub:https://github.com/NullVoidKage
以上是微服务面试备忘单的详细内容。请关注图灵教育的其他相关文章!