微服务
目录
警告
本文最后更新于 2022-08-20,文中内容可能已过时。
微服务特点
微服务是一种架构风格,允许将应用程序拆分为可以独立部署、可维护并可重用的独立可扩展组件。微服务通常具有以下几点特点:
- Technology Heterogeneity:微服务之间使用不同技术,如 Java 和 Node.js。它们具有较少地耦合,使企业能够更快地进行灵活性开发与产品部署。
- Robustness:微服务具有高度的容错能力,易于检测并及时恢复,即使在低级失败的情况下也不会影响整个系统的其余部分。
- Scaling:微服务的整体健壮性和松散耦合使其能够快速地扩展,无损地支持新的功能和服务。
- Ease of Deployment:微服务使得部署和更新应用程序变得容易。因为微服务并不联系所有功能,所以它们可以被更快地部署。
- Organizational Alignment:微服务能够更好地根据组织内架构实践进行整合和功能服务,同时也可以更轻松地与不同的组织结构相集成。
- Composability:微服务可以轻松地组合,可以使用许多不同的服务来构建复杂系统,允许企业通过灵活组织不同的核心功能组件构建出具有强大能力的系统。
微服务的劣势
- Developer Experience:由于微服务拆分出来的多个部分,会使开发者面临繁琐和复杂的工作。
- Technology Overload:由于在进行微服务时,有必要扩展衡量现有的技术基础架构,因此需要做各种额外的工作,它们中的一些可能还不熟悉。
- Cost:如果要实施微服务,就必须付出设计,构建并部署过程的不可忽视的成本。
- Reporting:在一个散乱的系统中,可能需要构建大量的报告,对于定量分析是不可缺少的。
- Monitoring and Troubleshooting:因为服务是分散在多个复杂系统内,所以在故障方面会更加麻烦,耗费大量的工作量去监测故障和解决问题。
- Security:应用程序中的多种服务特别暴露了系统,使系统更容易被攻击。
- Testing:想要有效和完整地测试微服务,则需要全面地测试以保证每个系统的完整性。
- Latency:每个服务都需要独立部署,网络调用上的延迟将具有一定影响。
- Data Consistency:微服务系统中的状态同步问题,所有服务都必须在某些特定条件下返回相同的结果,以确保数据的一致性。