1. 简介
微服务应用是一系列自治服务的集合,每个服务只负责完成一块功能,这些服务共同合作来就可以完成某些更加复杂的操作。与单体的复杂系统不同,开发者需要开发和管理一系列相对简单的服务,而这些服务可能以一些复杂的方式交互。这些服务之间的相互协作是通过一系列与具体技术无关的消息协议来完成的,这些协议可能是点到点形式的,也可能是异步形式的。
在单体应用中,开发者会在类、模块、类库的层面来设计功能属性;而在微服务应用中,开发者的目标则变成了可独立部署的功能单元——要为这些功能单元设计功能属性。单个微服务应该是高内聚的:它应该只负责应用的某一个功能。同样,每个服务对其他服务的内部运行逻辑知道得越少,就越容易对自己的服务或者功能进行修改,而不需要强迫其他服务一起进行修改。
2. 微服务架构
- 详细介绍微服务架构的核心概念和原则,例如:
- 服务自治
- 契约驱动
- 轻量级通信
- 持续交付
- 高可用
3. 微服务技术选型
- 介绍一些常见的微服务技术选型,例如:
- 服务框架:Spring Boot、NestJS、Quarkus
- 通信协议:REST、gRPC
- 服务发现:Eureka、Consul、Nacos
- 服务治理:熔断器、限流、负载均衡
4. 微服务实践
- 分享一些微服务实践案例,例如:
- 微服务改造:从单体应用到微服务架构
- 微服务监控:日志收集、指标监控、链路追踪
- 微服务安全:认证、授权、API 安全
5. 微服务挑战
在设计和运行微服务应用时,开发者会遇到很多挑战,如下所示。
- 识别和划定微服务范围需要大量专业的业务领域知识。
- 正确识别服务间的边界和契约是很困难的,而且一旦确定,是很难对它们进行改动的。
- 微服务是分布式系统,所以需要对状态、一致性和网络可靠性这些内容做出不同的假设。
- 跨网络分发系统组件以及不断增长的技术差异性,会导致微服务出现新的故障形式。
- 越来越难以了解和验证在正常运行过程中会发生什么事情。
6. 总结
- 总结微服务架构的关键知识点。
- 提供学习资源和进一步研究方向。
7. 参考资料
【1】Dubbo: https://cn.dubbo.apache.org/zh-cn/