12.22 Day 7 - 洞悉 PaaS 平台的本质
大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 7 天,也是我第 7 次进行打卡这种操作。今天我温习了该专栏里一篇叫《洞悉 PaaS 平台的本质》的文章。关键词总结:软件工程能力(提高服务的 SLA:Service-level agreement 服务级别协议、能力和资源重用或复用、过程自动化)、PaaS 平台的本质(服务化、分布式、自动化)、PaaS 平..
大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 7 天,也是我第 7 次进行打卡这种操作。
今天我温习了该专栏里一篇叫《洞悉 PaaS 平台的本质》的文章。
关键词总结:软件工程能力(提高服务的 SLA:Service-level agreement 服务级别协议、能力和资源重用或复用、过程自动化)、PaaS 平台的本质(服务化、分布式、自动化)、PaaS 平台的总体架构(调度层、能力服务层、流量调度、运营管理、运维管理)、PaaS 平台的生产和运维。
所学总结:
软件工程能力
分布式软件工程能力主要体现在:提高服务的 SLA、能力和资源重用或复用、过程自动化。
提高服务的 SLA(服务级别协议)
分布式系统中的可用性和自动化效率决定了 SLA 的 9 的个数,如果没有自动化的故障恢复,那么 SLA 将很难得到提高。
能力和资源重用或复用
软件模块的重用性以及软件运行环境和资源的重用性决定了开发运维的能力和资源的可重用性。
过程自动化
软件生产流水线和软件运维自动化的使用程度决定了整个过程的自动化程度。
分布式多层的系统架构、服务化的能力供应以及自动化的运维能力等等这些技术的使用程度决定了云计算威力(Cloud Native)的高度。
PaaS 平台的本质
一个健壮的 PaaS 平台需要能够和 IaaS 层实现无障碍的沟通,并且它应该具有分布式、服务化、自动化部署、高可用、敏捷以及分层开放的特征。
服务化
服务化包括但不限于:软件模块重用、服务治理、对外提供能力,这些是 PaaS 平台的本质。
分布式
分布式包括但不限于:多租户隔离、高可用、服务编排,这些是 PaaS 平台的根本特性。
自动化
自动化包括但不限于:自动化部署安装运维、自动化伸缩调度,这些是 PaaS 平台的关键点。
PaaS 平台的总体架构
我们可以借助 Docker+Kubernetes 来实现一个技术缓冲层,从而能更高效的构建一个健壮的 PaaS 平台。
调度层(aPaaS)
调度层里的功能包括但不限于:生命周期管理、服务配置管理、服务监控、服务状态持久、服务弹性伸缩、服务编排、服务调度、服务命名发现,它的任务主要是确保 PaaS 的自动化和对于分布式高可用高性能的管控。
能力服务层(iPaaS)
能力层里的功能包括但不限于:中间件服务、数据服务、业务服务,它的任务主要是确保 PaaS 提供给用户的服务和能力。
流量调度层
流量调度层的功能包括但不限于:降级、路由、灰度、流控、熔断、计算,它的任务主要是确保与流量调度相关的东西,包括对高并发的管理。
运营管理层
运维管理层的功能包括但不限于:软件、服务、硬件、许可、订阅、认证、授权、SDK/文档、API 目录、多租户、沙箱、安全、计量计费,他的任务是对软件资源库、软件接入、认证和开放平台门户进行管控。
运维管理层
运维管理层的功能包括但不限于:审查、构建、测试、部署、运维,它的任务主要是与 DevOps 相关的东西。
PaaS 平台的生产和运维
PaaS 的生产运维过程:
- 软件构建 ->
- 进入软件资产库(Docker Registry + 些许软件的定义) ->
- 经历 DevOps 的一套流程 ->
- 借助整体架构控制器进入到生产环境 ->
- 借助控制器来操作 Docker + Kubernetes 集群,以对软件的部署和生产做变更 ->
- 同步服务的运行状态 ->
- 通过生命周期管理来拟合状态 ->
- 数据进入相关的应用监控 ->
- 监控事件同步至生命周期管理中 ->
- 生命周期管理器做决定 ->
- 通过控制器来调度服务的运行 ->
- 监控中心监测到流量变化需要执行伸缩操作时 ->
- 通过生命周期管理来通知控制系统进行伸缩。
末了
文中还提到了构建分布式系统中会面临的主要问题及其解决方案。
主要问题有:
- 故障发生率高;
- 服务间单点故障产生的调用链依赖问题;
- 单点、非自治和状态化;
- 通信协议不一致;
- 复杂的故障处理流程;
- 流量调度技术的缺失;
- 分布式事务导致的最终数据不一致;
- 复杂的测试和排错过程;
- 系统访问量的暴增,系统响应时间的延时。
解决方案有:
- 一套完善的监控系统;
- 将故障的非关键服务从其他服务中自动剔除(降级);
- 借助 SOA 和微服务来实现软件的服务化;
- 通过 Docker 和 Kubernetes 来调度服务;
- 在服务和软件接口之间使用标准的通信协议;
- 引入健壮的处理流程,自动构建服务的依赖地图,做到能快速定位和恢复故障;
- 借助 API 网关来控制服务的流向,对流量进行管控操作;
- 在存储层实现分布式事务的处理,或者借助更方便的 Paxos、Raft、NWR、TCC 等最终一致性方案,或借助 2PC 等强一致性方案。
- 模拟生产环境,在生产环境做灰度发布。做足单元测试和集成测试。服务出现故障时其负责团队需要进行自行排查的操作。
- 借助异步调用来支撑更高的并发访问量。为关键服务提供专属的硬件设施,对软件进行逻辑方面的优化以减少响应的时间。
更多推荐
所有评论(0)