本文作者 上海驻云资深系统开发工程师  周逸灵

大家都知道阿里云上线了自助实验室的学习平台了吗~(点击阅读原文前往)该平台又叫云中沙箱!

本文就是来告诉大家整个平台的系统架构和基本实现方式,希望对想要在云上开发的您有一定的帮助~

 

云中沙箱是什么?

 

如今越来越多的企业用户将传统机房服务器迁移至云计算平台,无论是稳定性的提高,抑或是维护成本的降低,都是云计算带来的不可否认的优势。然而,如果仅仅是从物理主机转变为虚拟云主机,那显然是不够的,云计算平台在提供云主机服务的同时,也推出了各种其他相应的产品。那么这些产品如何使用,如何互相配合完成生成目的,依然是需要技术人员需要了解的内容。云中沙箱便是这么一个为技术人员提供云产品培训,并可以模拟真实云计算平台环境的一个培训平台。

 

此外,云中沙箱本身也是部署在云计算平台上,那么下面就简单介绍一下云中沙箱的技术实现。

 

云中沙箱用到了哪些云产品?

 

云中沙箱本身所需要的云产品并不复杂,极端地说,绝大多数应用就算仅仅是用云主机也是可行的,但这并不是一个好主意。根据具体需求选择所需产品才较为合理。云中沙箱根据本身的需求,使用了阿里云四大件(ECS、RDS、SLB、OSS)来部署整个产品:

 

1. ECS(云主机)和SLB(负载均衡)

 

ECS的使用方法和普通主机并无太大区别,而在项目部署中,云主机配置的选择缺需要有一定考量。这里有把SLB一起,正是这个理由。

 

如今只要是有一定访问量的网站,想必都不会进行单机部署。那么在多服务器部署时,就需要有一个统一入口,将每个请求转发到这些服务器上去,在这里SLB就承担了这个任务。依靠阿里云控制台的统一管理,将众多ECS添加为SLB的后端服务器变得异常简单。此外,HTTPS证书的管理、健康检查、会话保持机制等无不在向人们表明,ECS就是应该和SLB一起使用。而云中沙箱正是使用了这种方式来部署网站应用。

 

2. RDS(数据库)

 

数据库管理始终是任何项目的关键所在,而数据库的维护也或多或少困扰着DBA们。出于这方面的考虑,云中沙箱的数据库直接使用RDS,图形化方式管理数据库用户,慢SQL查询,数据库日志查询,各项指标的检测,自动备份等功能为开发工作提供了极大的便利。同时,RDS可以仅开放内网访问,提高数据库的安全性。

 

3. OSS(对象存储)

 

涉及到用户上传下载文件的功能,在多Web服务器同步数据时就会遇到各服务器之间文件同步的问题。如果将用户上传的文件存放在Web服务器本地,一来有容量问题,二来需要同步到其他Web服务器;如果以二进制方式存放在数据库也不是个好的选择;如果单独配置专门存放用户文件的服务器,成本和维护也是个需要考虑的问题。所以,云中沙箱选择了OSS,这种方式非常接近于前面的第三种单独配置文件服务器的方式,但却不需要开发人员专门维护,使用成本也非常低。

 

云中沙箱用到了哪些开发技术?

 

云中沙箱在技术选型阶段,便综合考虑了用户体验、网站并发量以及开发维护成本等因素。主要分为负责呈现网站的Web部分和创建云计算平台实验模拟环境的Service部分。同时,Web部分进行了前后端分离,以实现负责各部分功能的开发人员可以同步进行开发。

 

 

1. Web前端(AngularJS)

 

云中沙箱整个页面呈现的部分使用了AngularJS框架,并以单页应用的模式进行开发。得益于AngularJS双向绑定的特性,几乎所有的请求都以JSON格式数据通过AJAX请求发送至Web后端。用户在使用网站时的页面无刷新、快速的响应,使云中沙箱实现了与传统后端渲染方式呈现页面的网站应用完全不同的用户体验。此外,在开发方面,传统枯燥的表单处理在Angular框架下也变得轻松简单。

 

2. Web后端(NodeJS)

 

由于前后端的完全分离,云中沙箱的Web后端实际就是一个HTTP API服务器,通过JSON格式数据与Web前端进行交互。服务器框架使用了Express4进行开发。

 

由于Nodejs的异步特性,Web后端可以承受相当大的并发量,并且由于只是HTTP API,仅仅接受和返回JSON格式的数据,而不是完整的页面,通讯的数据量也能尽可能做到最少。此外,用户认证方面,云中使用了Token的方式而不是传统的Cookie保存SessionID的方式进行。选用这种模式,使得与第三方合作伙伴对接,内部管理工具开发,以及未来移动端接入方面留有余地。

 

3. Service(Python)

 

云中沙箱除了网站页面呈现本身之外,一个核心价值就在于可以根据培训课程的内容,自动在阿里云平台创建实验环境。网站本身的访问需要考虑高并发,但创建实验环境并不需要那么高并发,此外,创建实验环境需要一定时间,浏览器发来的请求需要立刻返回。所以,与Web服务器不同,Service并没有继续使用Nodejs。同时,由于创建实验环境属于相对流程化的处理,最终选择了比Nodejs更为简单直观的Python进行开发,并单独部署在一台ECS上。

 

而与Web服务器之间的衔接,则是通过Redis充当消息队列来实现。比如,当用户在网站上发起一个创建实验的请求后,Web服务器会首先进行基本的处理。随后,生成一个任务发送至消息队列。Service从消息队列接收到任务后,按照任务内容去创建所需要的实验环境。创建完成后,再通知Web服务器即可。

 

 

小结

 

在考虑维护成本及实现便利的基础上,选用了阿里云四大件(ECS、RDS、SLB、OSS)来部署。Web前端使用AngularJS,Web后端使用Nodejs和Express4,任务处理使用Python开发,并从Redis充当的消息队列接收Web后端生成的任务。

 

以上便是云中沙箱的技术实现,也算是阿里云使用的一个案例。

版权声明:本文为zhuyun1234原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhuyun1234/p/5307173.html