掌握高并发、高可用架构
第四章 微服务
本章介绍微服务的概念、为何要引入微服务、微服务会引发的问题,以及流行的微服务架构等。
第一节 微服务基础
微服务
1. 微服务的定义
Martin Flower在2014年的一篇论文《MicroServices》中提出的,在某种程度上微服务是面向服务的架构SOA继续发展的下一步,它是一些协同工作的小而自治的服务,很小,专注于做好一件事,具有自治性,其主要特点是:
- 与组织结构相匹配,每个服务可按照业务、团队进行划分,使小的团队在小的代码库上高效工作
- 可组合性,易于重用已有功能
- 技术异构性,每个服务不限制开发语言,不限制使用的数据库,服务之间通过轻量级API调用
- 简化部署,每个服务独立部署,服务之间互不影响,管理自动化
- 弹性扩展,可针对用户访问流量大的服务单独扩展,从而节约资源
- 对可替代性的优化,微服务中的多个相似服务,重写或移除一个或多个服务的阻碍会很小
2. 引入微服务会面临的挑战
虽然微服务看上去很美好,但引入微服务需要考虑以下几个问题
- 微服务强调服务大小,但没有一个统一标准,大多是根据经验来划分业务模块。要记住,微服务是达到目的的手段,而不是目标
- 微服务的部署必然是分布式的,这会造成程序的复杂性。分布式事务、网络延迟、系统容错、服务之间的通信,以及服务发现、调用链跟踪和代码质量
- 微服务架构下,不同的服务可能使用不同的数据库。CAP(分布式环境下,一致性Consistency、可用性Availablity、分区容错性Partition tolerance)原则的约束,使得不得不放弃强一致性,转而接受最终一致性
- 对测试的挑战
- 跨服务的系统变更
- 部署,微服务由不同的大量服务构成,每种服务都有自己的配置、应用实例数量以及基础服务地址,所以我们需要统一的配置中心,服务发现机制,以及更好的部署策略和高度自动化水平
所有的挑战体现在微服务的每一个细节
- API网关 Gateway
- 服务间调用
- 服务发现
- 服务容错
- 服务部署
- 数据调用
3. 微服务的七大原则
- 围绕业务概念建模
- 接受自动化文化
- 隐藏内部实现细节
- 去中心化
- 独立部署
- 设计故障模式
- 高度跟踪
原文地址:https://blog.51cto.com/liusw94/2434583
时间: 2024-11-11 04:53:15