写点什么

SaaS 平台上的多线程控制与故障处理

  • 2013-08-16
  • 本文字数:2145 字

    阅读完需:约 7 分钟

资深工程师 Judith M. Myerson 结合自己的实际经历,讲述了内部部署的 COBOL 程序成功地转化为基于 Java 的软件即服务 (SaaS) 应用程序,开发人员应该小心提防多线程问题。

Judith 提出了“多线程控制的模型云用户”概念:

多线程阈值的用途就是设置某个任务可以并行执行的线程数限制。在达到阈值时,完成自己工作的线程可以从其他线程队列中获取工作。

他分别比较了不同云平台上的控制粒度。

SaaS:用户拥有最少的控制,而供应商拥有最大控制。

  • 最终用户控制:最终用户拥有的惟一控制就是从移动设备或虚拟台式计算机访问 SaaS 应用程序,无论它是私人的、企业的(中小型)还是政府机构的。SaaS 应用程序示例包括船只到达和离开的时间表、客户关系管理、人力资源以及电子数据表。
  • SaaS 供应商控制:至少,供应商可以通过限制授权用户的数量来管理访问控制,正如用户阈值策略中所述,授权用户能够同时访问多线程应用程序。供应商控制运行 SaaS 应用程序所需的核心、操作系统、服务器和网络基础架构。
  • 多线程阈值控制:SaaS 最终用户没有多线程阈值的控制。供应商可能会将多线程的阈值限制为最大核心数,应用程序可用于并行处理线程。供应商设置的最大值取决于 SaaS 最终用户选择的订阅率。

PaaS:开发人员拥有更多的控制,而供应商只有较少的控制。

  • 开发人员控制:开发人员控制并保护整个业务生命周期内的所有应用程序,这些应用程序是使用 PaaS 创建的。开发人员将多线程阈值设置为在构建应用程序时可用于并行处理线程的核心数。开发人员可能会设置用户和虚拟桌面线程阈值的级别。
  • PaaS 供应商控制:供应商至少可以控制运行 SaaS 应用程序、开发新应用程序或测试在云中运行多线程所需的核心、操作系统、服务器和网络基础架构,以及应用程序的可扩展性。供应商可以设置资源、数据请求、社交媒体和负载平衡的阈值级别。
  • 多线程阈值控制:开发人员可以根据应用程序中线程算法的复杂程度设置多线程的阈值。供应商将开发人员设置的阈值限制为开发人员执行线程时可能使用的最大核心数。

IaaS:基础架构或者网络专家拥有最多的控制。

  • 网络专家控制:基础架构或者网络专家在虚拟级别控制核心、操作系统、网络设备和部署的多线程应用程序。基础架构专家能够扩大或者缩小虚拟服务器或者存储区域块,他们利用社交媒体工具与其他 IaaS 专家、PaaS 专家和供应商进行通信。基础架构专家可能会设置用户、负载平衡和虚拟桌面阈值级别。
  • IaaS 供应商控制:供应商至少可以控制位于虚拟机底层的传统计算资源的基础架构、分配给基础架构或者网络专家的最多核心数,以及应用程序访问 IaaS 所需的应用程序。供应商可以设置用户、资源、数据请求、社交媒体和负载平衡的阈值级别。
  • 多线程阈值控制:基础架构专家可能会设置多线程阈值。供应商可能会就各个虚拟服务器上的最大核心数与基础架构专家进行磋商。

接着,Judith 谈到了自己对 Java 多线程使用的理解:

为了使用 Java 语言创建线程,可以实例化一个 Thread 类型(或者一个子类)对象,然后向它发送一个 start() 指令。线程将继续运行,直至 run() 返回主程序。这时线程将终止。大多数应用程序需要使用线程与其他进行通信,并同步其行为。要在 Java 程序中完成这项任务,至少需要使用锁。为了避免多次访问同一个线程,在使用资源前,线程可以获得和释放锁。试图获取某个正在使用中的锁的线程会陷入休眠状态,直到占用这个锁的线程将其释放。释放锁后,休眠线程就会移到准备运行的队列中。

锁的使用也会带来多线程的问题,包括死锁(两个或者多个相互竞争的操作等待其中一个完成工作,却导致无论哪个操作都无法完成。在计算机科学中,涉及两个相互竞争操作的死锁称为僵局 (deadly embrace))。工作无法完成,因为很多线程都在等待永远无法释放的锁。局部引用无法在线程间传递,只在用来创造它们的线程中有效。如果传递局部引用,则无法在不再需要它们时将其释放。您应该经常将局部引用转化为全局引用,因为多线程有可能用到同一个引用。

另一个问题是,如果被调用的 COBOL 程序在执行中遇到 THREAD 编译器选项问题,那么使用设计良好的多线程程序调用 Java 程序将会失败。

对于多线程 SaaS 故障场景,Judith 认为主要从以下 4 个方面来解决问题:

  • 中止损害:为了中止损害,供应商应该提前计划,准备采用 SaaS 应用程序作为自动故障恢复的实例。根据 SaaS 订购者和供应商之间的协议,SLA 应该准备就绪。通知 SaaS 客户,在供应商解决问题时,应该同时在另一数据中心继续进行服务。请记住,将客户置于混乱的情况下往往会导致对您的不利。
  • 解决问题:测试 SaaS 应用程序是否存在死锁和其他多线程问题。 设置各个语言界面(COBOL 和 Java)的多线程阈值。 安装多线程 SaaS 应用程序实例,允许将故障从一个数据中心转移到另一个数据中心。定期检查备用磁盘是否工作正常,并且没有错误。
  • 恢复系统:下线数据中心已崩溃的系统。 将多线程 SaaS 应用程序迁移到恢复系统。然后测试恢复后的系统恢复力,确保将故障相对顺畅地转移到另一数据中心。在将它移动到生产环境中之前,应备份一个已恢复系统的副本。
  • 通知客户:只要在故障数据中心恢复 SaaS 应用程序,供应商就应该通知客户恢复已经完成,SaaS 应用程序已经移动到生产环境,SLA 条款(无条件信用、退款和一个终止机会)正如与 SaaS 订阅者协商的那样在继续执行。
2013-08-16 21:232043
用户头像

发布了 501 篇内容, 共 268.1 次阅读, 收获喜欢 62 次。

关注

评论

发布
暂无评论
发现更多内容

2022中国信通院安全运营发展论坛成功召开

中国IDC圈

安全

LeaRun.Java表单快速开发工具

力软低代码开发平台

35人首次上榜、行者皆勇者——创业邦3040新青年创投峰会圆满落幕

创业邦

转行软件测试跳槽到新公司,工作如何快速上手?

伤心的辣条

Python 程序员 软件测试 自动化测试 接口测试

CVPR2022 |小红书首创多图交互建模挑战热门研究课题,大幅提升行人重识别性能

小红书技术REDtech

Transformer CVPR2022 行人重识别

国际SaaS企业有哪些机遇和挑战

ToB行业头条

测试员该知道的软件测试流程,你都知道吗?

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

俄航天局局长:外星生命或正在研究人类文明

Dylan

俄罗斯 外星人 航天局

三星堆重大发现!信息量巨大

Dylan

三星堆 四川省 文物

GPU渲染全解读:GPU渲染器的发展与对比

Finovy Cloud

渲染器 GPU服务器

元气部落仿站开发,元气部落盲盒系统APP开发

WDL22119

盲盒小程序开发 盲盒源码 盲盒H5开发 盲盒APP系统开发 元气部落仿站开发

Vue-8-计算属性和侦听属性

Python研究所

6月月更

国家先进计算产业创新(宜昌)中心正式落地 由中科曙光、升哲科技联合运营

SENSORO

人工智能 物联网 新基建 智慧城市

给你一个项目,你将如何开展性能测试工作?

伤心的辣条

Python 程序员 IT 自动化测试 接口测试

博云《应用上容器指南》首发!详解应用容器化改造

BoCloud博云

容器 云原生 容器云 应用

3 个技巧来破解你可以立即使用的 Flutter 生产力!

坚果

6月月更

养老金融政策频出,市场有多大?

易观分析

养老消费

直播回顾 | 传统应用进行容器化改造,如何既快又稳?

BoCloud博云

云原生 容器云 应用

想学好软件测试,这些软件必不可少

伤心的辣条

Python 程序员 程序人生 软件测试 自动化测试

InnoDB体系架构

龙空白白

MySQL InnoDB

OSPO如何帮助保护你的软件供应链

安势信息

开源 DevOps 开源社区 SCA opensource

Executor

急需上岸的小谢

6月月更

从功能测试进阶自动化测试,熬夜7天整理出这一份3000字超全学习指南【附网盘资源】

伤心的辣条

Python 程序员 软件测试 IT 自动化测试

前端工程化:保姆级教学 Jenkins 部署前端项目

伤心的辣条

Python 程序员 jenkins 自动化测试 接口测试

如何高效的进行接口测试?【工具篇】

Liam

测试 Postman 接口测试 API接口管理 接口测试工具

打造软件供应链安全平台,「安势信息」完成数千万元天使轮融资

安势信息

Git 不要只会 pull 和 push,学学这 5 条提高效率的命令

CRMEB

安势信息加入OpenSSF (开源安全基金会), 共建软件供应链安全

安势信息

Linux DevOps SCA工具 opensource

云上360行丨深耕快消品行业数字化转型,纷享销客与华为云合力同行

华为云开发者联盟

人工智能 modelarts 快消品 纷享销客

UI自动化测试框架搭建-优化企业微信通知

伤心的辣条

Python 程序员 软件测试 自动化测试 UI自动化

信用卡业务愈卷愈烈,银行机构如何突围?

易观分析

信用卡业务

SaaS平台上的多线程控制与故障处理_服务革新_崔康_InfoQ精选文章