微服务架构介绍
系统机构需要演进的原因:
1 互联网的爆炸性发展
2 硬件设施的快速发展
3 需求复杂性的多样化
4 开发人员的急剧增加
5 计算机理论及技术的发展
微服务架构的原理及特征
基本概念
- 服务: 一组具有相同逻辑的运行实体
- 实例: 一个服务中,每个实体即为一个实例
- 单体服务,一般是简单的函数调用,发送http协议
- 微服务间的通信是网络传输, 多数采用RPC(Thrift, gRPC)
核心服务治理功能
服务发布
- 概念: 让一个服务升级运行新的代码的过程
- 服务发布难点
- 服务不可用
- 服务抖动
- 服务回滚
- 蓝绿部署
- 将服务分成两个部分,分别先后发布
- 简单、稳定
- 但需要两倍资源(通常在服务器人数少的时候使用此方式)
- 灰度发布(金丝雀发布)
- 先发布少部分实例,接着逐步增加发布比例
- 不需要增加资源
- 回滚难度大,基础设施要求高
流量治理
- 流量控制
- 在微服务架构中,可以从各个维度对端到端的流量在链路上进行精确控制
- 控制维度
- 地区维度
- 集群维度
- 实例维度
- 请求维度
负载均衡
常见的LB策略
- Round Robin
- Ring Hash
- Random
单体架构(all in one process)
优势:性能最高,冗余小 劣势:debug困难,模块相互影响(非核心功能可能导致程序崩溃),模块分工、开发流程困难
垂直应用架构——按照业务线垂直划分
优势:业务独立开发维护 劣势:不同业务存在冗余,每个业务还是单体架构
分布式架构——抽出业务无关的公共模块
优势:业务无关的独立服务
劣势:服务模块bug可能导致全站瘫痪;调用关系复杂;不同服务冗余
SOA架构——面向服务(Service Oriented Architecture)
优势:服务注册
劣势:整个系统设计是中心化的;需要从上至下设计;重构困难
微服务架构——彻底的服务化
优势:开发效率;业务独立设计;自下而上;故障隔离
劣势:治理、运维难度急剧增加;观测挑战;安全性;分布式系统
微服务架构的核心要素
服务治理:服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理 可观测性:日志采集、日志分析、监控打点、监控大盘、异常报警、链路追踪 安全:身份验证、认证授权、访问令牌、审计、传输加密、黑产攻击
微服务架构在现代软件开发中具有重要的地位,它通过拆分应用程序为小型服务单元,提高了灵活性、可扩展性和可维护性。然而,成功实现微服务架构还需要有效的治理实践来确保系统的稳定性和可持续性。通过合适的服务注册与发现、负载均衡、弹性设计、分布式跟踪、安全性、日志和监控等实践,可以建立一个健壮的微服务生态系统,克服挑战,实现系统的高效运行。要注意,微服务架构并不适用于所有场景,团队在决定是否采用微服务架构时应该充分考虑自身的业务需求和团队状况。同时,持续关注微服务领域的最新发展,以便在实践中保持敏捷和创新。