软件工程能力
分布式软件工程能力主要体现在:提高服务的 SLA、能力和资源重用或复用、过程自动化。这三个本质与分布式的技术点是高度一致的,也就是下面这三个方面的能力。
- 分布式多层的系统架构
- 服务化的能力供应
- 自动化的运维能力
提高服务的 SLA(服务级别协议)
所谓服务的 SLA,也就是我们能提供多少个 9 的系统可用性。
提高系统的 SLA 主要表现在两个方面:
- 高可用的系统
- 自动化的运维
能力和资源重用或复用
软件模块的重用 和 软件运行环境和资源的重用 决定了开发运维的能力和资源的可重用性。需要有两个重要的能力:一个是“软件抽象的能力”,另一个是“软件标准化的能力”。软件抽象就是找出通用的软件模块或服务,软件标准化就是使用统一的软件通讯协议、统一的开发和运维管理方法等
过程的自动化
软件生产流水线和软件运维自动化的使用程度决定了整个过程的自动化程度。
PaaS 平台的本质
一个好的 PaaS 平台需要能够和 IaaS 层实现良好的联动,并且它应该具有分布式、服务化、自动化部署、高可用、敏捷以及分层开放的特征。
PaaS 跟传统中间件最大的差别:
服务化、分布式、自动化
服务化
服务化包括但不限于:软件模块重用、服务治理、对外提供能力,这些是 PaaS 平台的本质。
分布式
分布式包括但不限于:多租户隔离、高可用、服务编排,这些是 PaaS 平台的根本特性。
自动化
自动化包括但不限于:自动化部署安装运维、自动化伸缩调度,这些是 PaaS 平台的关键点。
PaaS 平台的总体架构
我们可以借助 Docker+Kubernetes 来实现一个技术缓冲层,从而能更高效的构建一个健壮的 PaaS 平台。
调度层(iPaaS)
调度层里的功能包括但不限于:生命周期管理、服务配置管理、服务监控、服务状态持久、服务弹性伸缩、服务编排、服务调度、服务命名发现,它的任务主要是确保 PaaS 的自动化和对于分布式高可用高性能的管控。
能力服务层(aPaaS)
能力层里的功能包括但不限于:中间件服务、数据服务、业务服务,它的任务主要是确保 PaaS 提供给用户的服务和能力。
流量调度接入模块
流量调度层的功能包括但不限于:降级、路由、灰度、流控、熔断、计算,它的任务主要是确保与流量调度相关的东西,包括对高并发的管理。
运营管理层
运维管理层的功能包括但不限于:软件、服务、硬件、许可、订阅、认证、授权、SDK/文档、API 目录、多租户、沙箱、安全、计量计费,他的任务是对软件资源库、软件接入、认证和开放平台门户进行管控。
运维管理层
运维管理层的功能包括但不限于:审查、构建、测试、部署、运维,它的任务主要是与 DevOps 相关的东西。
PaaS 平台的生产和运维
PaaS 的生产运维过程:
- 左上开始软件构建
- 软件资产库(Docker Registry+ 一些软件的定义)
- 经历 DevOps 的一套流程
- 借助整体架构控制器进入到生产环境
- 借助控制器来操作 Docker + Kubernetes 集群,以对软件的部署和生产做变更
- 同步服务的运行状态
- 通过生命周期管理来拟合状态
- 数据进入相关的应用监控
- 应用监控中的一些监控事件同步到生命周期管理中
- 由生命周期管理器来做出决定,通过控制器来调度服务运行
- 当应用监控中心发现流量变化,要进行强制性伸缩时,通过生命周期管理来通知控制系统进行伸缩
左下是服务接入的相关组件,主要是网关服务,以及 API 聚合编排和流程处理。
参考资料:
左耳听风(极客时间)链接:
https://time.geekbang.org/column/article/1610
GitHub链接:
https://github.com/lichangke/LeetCode
CSDN首页:
https://me.csdn.net/leacock1991
欢迎大家来一起交流学习