50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:232243
用户头像

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

关注

评论

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

Python 的 sum():Pythonic 的求和方法

华为云开发者联盟

Python 列表 元组 Pythonic 求和

怎么阅读 Linux 内核源码

程序员小呆

Java Linux 程序员 架构师

亿级流量架构演进实战 | 从零构建亿级流量API网关 01

松然聊技术

亿级架构

阿里技术官耗时半年总结出“满分”架构笔记,拿捏分布式到微服务

进击的王小二

Java 架构 分布式 微服务

MySQL索引总结:14张图+代码+文字

Java MySQL 数据库 架构 后端

Alibaba最新神作!耗时182天肝出来的1015页分布式全栈手册太香了

编程 程序员 IT 计算机 java

2021Flexera云报告:企业积极拥抱多云,但云上成本仍然居高不下

行云管家

区块链 云计算 企业上云 上云

Apache ShardingSphere 在京东白条场景的落地之旅

SphereEx

开源 数据架构 架构设计 ShardingSphere SphereEx

三面阿里,有惊无险成功拿到offer定级P7,只能说是真的难

Java 编程 java架构

百亿级系统架构首公开!阿里这份300多页的设计实录你还没有吗?

Java 程序员 架构 面试 后端

一篇神文让你深入理解计算机系统——学习笔记

程序员小呆

Java 程序员 架构师 计算机

第 17 章 -《Linux 一学就会》- Linux计划任务与日志的管理

学神来啦

Linux 运维 linux学习 linux云计算 linux基础

性能加速最高可达28倍!这个NLP工具包不容错过

百度开发者中心

预训练模型 NLP 大模型

太绝了吧! 终于有人能把TCP/IP 协议讲的明明白白了

程序员 架构 面试 后端 java

遭 GitHub 连夜封杀下架?被泄露的阿里内部 Java 面试手册到底有多强?

收到请回复

Java 面试 阿里 大厂Offer

架构师一定要看!微服务设计的四个原则

Java 程序员 架构 面试 后端

数据上报那些事

神策技术社区

数据 神策数据

太香了!Github疯传的阿里分布式设计实录让面试进阶齐飞!

Java 程序员 架构 面试 后端

面试官提问:如何通过sql方式将数据库表行转列?

Java 数据库 sql 面试 后端

量化模拟线上流量实践

FunTester

性能测试 接口测试 测试框架 FunTester 线上流量

接连三次霸榜GitHub,这个国产GitHub项目是真的强...

百度开发者中心

最佳实践 方法论 百度飞桨 开源技术

☕【Java技术指南】「编译器专题」深入分析探究“静态编译器”(JAVA\IDEA\ECJ编译器)是否可以实现代码优化?

码界西柚

Java 编译器 静态编译器 10月月更

一篇神文让你"一夜封神"Mycat中间件(最详细讲解)

程序员小呆

Java 程序员 架构师 mycat

容器化 | ClickHouse Operator 原理解析

RadonDB

数据库 Kubernetes Clickhouse

优酷鸿蒙开发实践 | 鸿蒙卡片开发

阿里巴巴终端技术

ios android HarmonyOS 优酷 移动端

元宇宙NFT区块链游戏系统开发

涨薪60%,从美团干到阿里p7,这份Github上的面试笔记把所有Java知识都写出来了

Java 程序员 架构 面试 后端

211本+985硕+计算机专业投面百度,坐等一周迎来三面,已拿offer

Java 学习 程序员 架构 大厂面试

云栖大会|盛宴之下,共赴一场视频云的进化论

阿里云CloudImagine

阿里云 音视频 WebRTC 视频云 云栖大会

亿级流量架构演进实战 | 从零构建亿级流量API网关 02

松然聊技术

亿级架构

Python代码阅读(第37篇):获取两个列表中相同的元素

Felix

Python 编程 Code Programing 阅读代码

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