Docker、kubernetes、DevOps、持续交付、ServiceMesh等技术和理念都在关注、支持和跟随微服务架构的发展。
- 微服务架构是如何演进的?
- 微服务架构的主要流派?
- 当前主流的云原生应用于微服务之间的关系?
微服务架构的出现
单体应用架构 -> SOA架构 -> 微服务架构
分布式云平台的应用环境使得微服务成为互联网大型系统的架构选择。
单体应用架构
表示层:负责用户体验,UI
业务层:负责业务逻辑,如:电影、订单、用户
数据访问层(DAO):负责DB层的数据存取,实现增删改查的功能
业务层:定义了应用的业务逻辑,是整个应用的核心
所有这些模块都集成在一起---单体应用架构。
优点:
开发简单;易于调试;易于部署;通过负载均衡器,运行多个服务实例,可以轻松实现应用扩展。
适用于中小型项目、原型性初始版本的产品项目;
缺点:
整体性能主要依赖于硬件资源和逻辑代码实现;
可靠性
复杂性高
持续部署困难
扩展能力受限
阻碍技术创新
SOA架构
核心主体时服务,其目标时通过服务的流程化来实现业务的灵活性。
标准服务有相同的接口和语义表达规则。
服务要组装成一个流程和应用,还需要有效的管理,包括如何注册服务、如何发现服务、如何包装服务的安全性和可靠性,这些就是SOA治理。
完整的SOA架构由五大部分组成:
- 基础设施服务
- 企业服务总线
- 关键服务组件
- 开发工具
- 管理工具
微服务架构
微服务架构是一种使用一系列粒度较小的服务来开发单个应用的方式;每个服务运行在自己的进程中;服务间采用轻量级的方式进行通信;这些服务是基于业务逻辑和范围,通过自动化部署的机制来独立部署的,并且服务的集中管理应该是最低限度的,即每个服务可以采用不同的编程语言编写,使用不同的数据存储技术。
常用的组成及概念
服务注册于发现
负载均衡
服务网关
配置中心
集成框架
调用链监控
支撑平台
优点:
降低复杂性问题,易于开发、理解和维护;使得团队并行开发得以推进,可以自由选择开发技术,提供API服务,可以选择新技术;每个我微服务独立部署运行,不需要协调其他服务部署对本服务的影响,可以加快部署速度,使得持续化部署成为可能;使得每个服务易于独立扩展。
挑战:
运维要求较高
分布式固有的复杂性
接口调试成本高
重复劳动
可测试性的挑战
微服务架构的流派
- ZeroC IceGrid
- 基于消息队列
- Docker Swarm
- Spring Cloud
云原生与微服务
CNCF,云原生计算基金会
【云原生】
云原生应用的三大特征:
- 容器化封装
- 动态管理
- 面向微服务
云原生的组成:

【12原则】
- 基准代码
- 显式声明依赖关系
- 在环境中存储配置
- 把后端服务当作附加资源
- 严格分离构建、发布和运行
- 无状态进程
- 通过端口绑定提供服务
- 通过进程模型进行扩展
- 快速启动和优雅终止
- 开发环境与线上环境等价
- 日志作为事件流
- 管理进程
另外还有补充的三点:API声明管理、认证和授权、监控与告警
【容器化】
Docker是一个开源引擎,可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。
Docker的初衷是创建软件程序可移植的轻量容器,让其可以在任何安装了Docker的机器上运行,而不用关心底层操作系统。
Docker的优势:
- 隔离应用依赖
- 创建应用镜像并进行复制
- 创建容易分发的、即启即用的应用
- 允许实例简单、快速地扩展
- 测试应用并随后销毁它们
容器编排框架:用于调度和管理容器,常见的有:Kubernetes、Mesos、Docker Swarm。编排框架是容器平台的关键组成部分。
【DevOps】
DevOps是开发人员和运维技术人员之间的合作,目标是自动执行软件交付和基础架构更改流程,使得构建、测试、发布软件能够更加地快捷和可靠。
通过DevOps流水线加上Docker容器,可以实现自动化工程管理,实现开发、测试环境的自动申请和构建。通过Docker标准化打包应用配置和环境,可以生成轻量容器镜像,并使用镜像方式迭代开发、测试、部署,加速应用上线。自动化运维在合理保障应用高可用的前提下,能够提升资源利用率,降低成本。
【微服务】
优势:
将业务领域分解为多个可独立部署的环境时,能够将相关的变更周期解耦。可以实现更频繁和快速的部署,实现了持续的价值流动。
扩展更多的部署组件本身可以加快部署。
可以加快采用新技术的步伐。
微服务提供独立、高效的服务扩展。
从单体应用到微服务架构,再到云原生,本文深入解析了微服务架构的演进历程及其核心概念。介绍了微服务架构的组成、优势与挑战,以及与DevOps、容器化、持续交付等技术的紧密联系。

1650

被折叠的 条评论
为什么被折叠?



