在云端

本文探讨了云计算的概念及其带来的变革,包括从C/S模式向B/S模式的转变,以及SaaS和服务导向架构如何解决多样化需求问题。

……………………

……………………

在云端遇见你的地方
在生命的转弯
你让我有天堂能想像
在云端你深邃的目光
从世界另一端
最神秘的磁场
唉呀呀唉唷梦一场

……………………

……………………

周华健的一首《在云端》,相信很多人都听过,今天的话题正好是跟“云”有关,只不过不是蓝天白云,而是隐藏在互联网背后的云-------云计算(Cloud Computing)

什么是云计算?下面我引用李开复的一段话:

“在云计算的模式中,用户所需的应用程序并不运行在用户的个人电脑、手机等终端设备上,而是运行在互联网上大规模的服务器集群中。用户所处理的数据也并不存储在本地,而是保存在互联网上的数据中心里。提供云计算服务的企业负责管理和维护这些数据中心的正常运转,保证足够强的计算能力和足够大的存储空间可供用户使用。而用户只需要在任何时间、任何地点,用任何可以连接至互联网的终端设备访问这些服务即可。

云计算在给我们诠释一种回归,计算机最初的发展阶段是单机时代,很多用户通过一个个终端来分享计算机资源,终端非常简单,无非是可供输入的键盘和可供显示的显示器。后来PC的出现及普及把计算任务转移到了个人电脑上,个人电脑的配置越来越高,功能越来越强大,C/S(客户端/服务器)编程模式应运而生,在这个编程模式里面,我们的原则是能在Client(客户)端做的尽量在客户端做,尽量不要增加服务器的额外负担。随手举几个C/S的例子:几乎每个人都在用的QQ,MSN等即时聊天工具,大部分的炒股软件等。但是这种模式有一个问题:因为客户端也要完成大量的计算任务,当客户端出现问题的时候,如何维护将成为一个很严峻的问题,因为大多数客户对计算机的了解并不多,而有可能分布在全球各地。维护成本的增加是这种编程模式淡出历史舞台的主要原因。后来人们越来越倾向于“瘦客户端“,目前最瘦的客户端莫过于浏览器了,于是B/S(浏览器/服务器)编程模式越来越受人青睐,因为这种模式可以让开发者把精力都集中在服务端的建设上。所有的维护工作都可以在家里完成,节约了成本。用户也乐意接受,因为不需要再象以前一样装各种客户端,装软件并不是每个客户都擅长的事情。但因为受制于浏览器的功能,用户体验方面B/S仍不能完全替代C/S,所以目前仍然有很多应用是用C/S开发的,但这种变革是一种必然的趋势。

云计算的出现给这种变革以巨大的推动力,因为它将使得这种B/S的应用更符合客户的利益,数据的存储和计算都是由专业服务商来提供的,如果我要建设一套公司内部的管理系统,只需要注册一个帐户就可以了,然后按月或者按年向服务商缴纳一定的使用费用即可。不必再自己购买服务器,购买专门的软件,不必再聘用专门的维护人员,因为有更专业的服务商在背后为客户服务。同时这也给我们这些开发者提了个醒:为什么有些技术大行其道?答案很简单,因为它更加符合客户的利益。

在这种趋势下,未来我们需要的硬件应该越来越简单,只需要它能够支撑起一个功能足够强大的浏览器的运行就可以,我们的每个终端,PC、手机等电子设备作为云端接入到互联网的云计算网络就可以享受到各种体验。甚至是我们家里的每一样电器都可以作为云端,我跟我的搭档曾经畅想过这样一番场景:快下班了,你打开手机,利用服务商提供的服务打开了自家的电饭锅,当你乘车到家时,饭已经做好了,我们可以坐下来享受美食。这并不是幻想,在不久的将来这将是很现实的事情。

以上写的是相对遥远的事情,下面来看看我们身边发生了什么?

SaaS(Software as a Service,软件即服务):初次接触SaaS是在今年的十一长假去看望舅舅时,舅舅做了一辈子的会计,他拿出了一本杂志,让我按照杂志上所说的网址上去帮他申请一个账号,并让我教他该怎么用。其实那就是金蝶的一个SaaS产品,只需要在上面申请一个账号,就可以用里面的财务管理功能,数据的存储等等都不用管。只需要每年交上几百元的服务费即可。这件事给我留下了很深的印象,因为的使用成本很低,必定会吸引很多客户。那这些SaaS厂商如何提供多样化的服务呢?因为客户所需要的可不都是财富管理功能。SOA(service-oriented architecture,面向服务架构)很好的解决了这个问题。先来了解一下什么是SOA

面向服务的体系结构(service-oriented architectureSOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

上面的解释过于专业,下面我来将其通俗化:为了满足客户的不同要求,我们写很多很多功能模块,每个模块只完成一个特定的任务,但这个模块是开放的,也就是可以被外部调用的。通过使用接口定义语言定义的接口进行通信。这让我想起了写COM程序时用IDL语言定义接口的情形。这些模块间可以通过这些接口进行自由组合,如果客户有多种需求,可以通过组合不同的模块来满足客户的需求。这似乎又是一个回归,让我想起了Unix下的kissKeep it Simple and Stupid,我们在Linux下写程序的时候,可以在vi/vim里面运行Shell命令,可以在vi/vim里利用gdb调试程序。

在我们的工作中也了解到,客户的机器上往往运行着多种不同的应用,而且这些应用都是不同厂商用不同的语言实现的,如何实现他们之间的数据共享?如果每一个系统都是独立的,那么在客户的多个应用里面肯定会存在不同程度的重复,操作起来更加复杂,结果是客户花了更多的钱,工作负担依然很大,因为他要熟悉多种应用。假如每个应用都提供对外通讯接口,那么成本就能够降低很多。

SaaS不一定会成功,但这种模式代表着未来。

下面来看看我们的厂商:

微软:微软已经宣称在其下一代操作系统和.NET框架里集成了云计算(SD2.0大会)。

谷歌:目前我最感兴趣的公司,看看谷歌的产品,或许我们能了解些什么:

            Android:嵌入式操作系统

            Chrome:浏览器

            Docs  在线文档

            Map  地图

      ………………

    谷歌还有很多互联网应用,并且它们都是开源的,而且几乎都是免费的。这里我想对Chrome多说两句,当我们在Chrome里同时打开多个标签时会发现,Chrome采用的是多进程的架构,这就使得它更加安全,更加稳定。据说ChromeJavasrcipt引擎的性能也并其它浏览器高出几十倍,这些将保证Chrome将会给用户以更佳的体验。

我想起了以前看过的一段新闻,微软嘲笑谷歌有很多产品,但是没有几个能赢利的。其实不然,Android会用户在终端的选择上有了更大的余地,各种在线应用把更多用户的注意力吸引到了互联网上,谷歌只需要在搜索上赢利就足够了。

      文章中若有偏颇之处,请指正!

<think>好的,我现在要解决用户关于如何在云端部署或运行Streamlit应用的问题。用户提到想要教程或了解在云平台上的运行方式。首先,我需要回忆一下Streamlit的基本信息和常见的部署方法。 首先,Streamlit是一个用于快速构建数据科学和机器学习Web应用的开源Python库。用户通常会在本地开发应用,但部署到云端可以让应用公开访问。常见的云平台包括AWS、Heroku、Google Cloud、Azure等。另外,用户提到的StreamCloud可能是一个特定的部署平台,但根据引用[1],StreamCloud需要注册账号,可能是一个托管服务。不过用户主要询问的是云端部署的一般方法。 接下来,我需要整理部署Streamlit应用的步骤。通常部署流程包括准备应用、配置依赖、选择云平台、设置服务器或容器服务、部署并公开访问。可能还需要处理环境变量、静态文件配置等。 用户提供的引用中,引用[1]提到了StreamCloud,引用[2]介绍了Streamlit的简单应用和部署计算机视觉项目,引用[3]涉及在AWS上搭建AI平台。因此,可能需要结合这些信息,尤其是AWS的部署方法。 可能的步骤包括: 1. 准备Streamlit应用代码,确保可以在本地运行。 2. 创建必要的依赖文件如requirements.txt或Dockerfile。 3. 选择云平台(如AWS EC2、AWS App Runner、Heroku等)。 4. 配置云平台环境,上传代码,安装依赖。 5. 启动应用并设置公开访问的URL。 需要注意的问题包括:处理端口设置(Streamlit默认使用8501端口),安全组配置,使用反向代理(如Nginx)以提高性能,或者使用容器化部署(Docker)以便于环境一致性。 另外,用户可能对具体的平台教程感兴趣,比如AWS的具体步骤。根据引用[3],亚马逊云科技有相关的解决方案,可能需要指导用户使用EC2实例或弹性容器服务(ECS)部署。 需要确保回答结构清晰,分步骤说明,并引用提供的资料。同时,生成的相关问题要围绕部署的优化、不同平台的比较、常见问题解决等。</think>### 如何在云端部署或运行StreamLit应用? StreamLit 是一个用于快速构建数据科学和机器学习Web应用的开源框架。以下是在云平台上部署StreamLit应用的通用方法及具体步骤: --- #### **1. 准备工作** - **本地调试**:确保应用在本地通过`streamlit run app.py`正常运行。 - **依赖管理**:创建`requirements.txt`文件,包含所有依赖包(如`streamlit`, `numpy`, `pandas`等)。 - **配置端口**:StreamLit默认使用端口`8501`,需在云平台安全组中开放该端口[^2]。 --- #### **2. 选择云平台与部署方式** ##### **AWS EC2(弹性云服务器)** 1. **启动EC2实例**:选择Ubuntu或Amazon Linux镜像,配置安全组开放端口`8501`。 2. **上传代码**:通过`scp`或Git将代码和依赖文件上传至实例。 3. **安装依赖**: ```bash pip install -r requirements.txt ``` 4. **运行应用**: ```bash streamlit run app.py --server.port=8501 --server.address=0.0.0.0 ``` 5. **访问应用**:通过实例的公有IP地址访问`http://<公网IP>:8501`[^3]。 ##### **AWS App Runner(容器化部署)** 1. **创建Dockerfile**: ```dockerfile FROM python:3.9-slim COPY . /app WORKDIR /app RUN pip install -r requirements.txt EXPOSE 8501 CMD ["streamlit", "run", "app.py"] ``` 2. **构建镜像并推送至ECR**:使用AWS Elastic Container Registry存储镜像。 3. **在App Runner中创建服务**:选择镜像并配置端口为`8501`,自动生成访问URL[^3]。 ##### **Heroku** 1. **安装Heroku CLI**并登录。 2. **添加Procfile**: ```Procfile web: streamlit run app.py --server.port=$PORT --server.address=0.0.0.0 ``` 3. **部署代码**: ```bash git push heroku main ``` Heroku会自动分配域名,如`https://<app-name>.herokuapp.com`。 --- #### **3. 高级配置** - **反向代理(Nginx)**:提升性能并支持HTTPS。 ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:8501; } } ``` - **环境变量管理**:通过云平台控制台注入敏感信息(如API密钥)[^2]。 - **自动化部署**:结合GitHub Actions或AWS CodePipeline实现CI/CD。 --- #### **4. 专用平台:StreamCloud** 根据引用[^1],注册StreamCloud账号后,可直接上传代码并一键部署,适合无运维经验的用户。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值