【技术干货】原来阿里云自助实验室的系统架构是这样的啊~
大家都知道阿里云上线了自助实验室的学习平台了吗~该平台又叫云中沙箱!
本文就是来告诉大家整个平台的系统架构和基本实现方式,希望对想要在云上开发的您有一定的帮助~
云中沙箱是什么?
如今越来越多的企业用户将传统机房服务器迁移至云计算平台,无论是稳定性的提高,抑或是维护成本的降低,都是云计算带来的不可否认的优势。然而,如果仅仅是从物理主机转变为虚拟云主机,那显然是不够的,云计算平台在提供云主机服务的同时,也推出了各种其他相应的产品。那么这些产品如何使用,如何互相配合完成生成目的,依然是需要技术人员需要了解的内容。云中沙箱便是这么一个为技术人员提供云产品培训,并可以模拟真实云计算平台环境的一个培训平台。
此外,云中沙箱本身也是部署在云计算平台上,那么下面就简单介绍一下云中沙箱的技术实现。
云中沙箱用到了哪些云产品?
云中沙箱本身所需要的云产品并不复杂,极端地说,绝大多数应用就算仅仅是用云主机也是可行的,但这并不是一个好主意。根据具体需求选择所需产品才较为合理。云中沙箱根据本身的需求,使用了阿里云四大件(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后端生成的任务。
以上便是云中沙箱的技术实现,也算是阿里云使用的一个案例。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Alluxio简介
一、Alluxio是什么? Alluxio是一个基于内存的分布式文件系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。 Alluxio的前身为Tachyon。 二、Alluxio应用场景 Alluxio居于传统大数据存储(如:Amazon S3,Apache HDFS和OpenStack Swift等)和大数据计算框架(如Spark,Hadoop Mapreduce)之间,如下图所示: 在大数据领域,最底层的是分布式文件系统,如Amazon S3、Apache HDFS等,而较高层的应用则是一些分布式计算框架,如Spark、MapReduce、HBase、Flink等,这些分布式框架,往往都是直接从分布式文件系统中读写数据,效率比较低,性能消耗比较大。而如果我们将其架构与底层分布式文件系统与上层分布式计算框架之间,以文件的形式在内存中对外提供读写访问服务的话,那么Alluxio可以为那些大数据应用提供一个数量级的加速,而且它只要提供通用的数据访问接口,就能很方便的切换底...
- 下一篇
Ubuntu Docker 简单安装 GitLab
1. 安装和配置 安装命令: sudo docker run --detach \ --hostname 40.125.206.47 \ --publish 443:443 --publish 80:80 --publish 8888:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest 参数说明: --detach: 设置容器后台运行 --hostname: 设置容器的 hostname --publish: 端口转发规则(80:Http 访问端口,443:Https 访问端口,8888:主机的 ssh 访问端口,22:Docker 容器中 ssh 访问端口) --name:容器名称 --restart always:每次启动容器就重启GitLab --v...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度