文档章节

如何在Rancher上运行无服务器应用程序

RancherLabs
 RancherLabs
发布于 2017/09/08 15:45
字数 1542
阅读 7
收藏 0
点赞 0
评论 0

最近,系统设计中较新颖的概念之一要属“无服务器架构”理念。毫无疑问, 这有点夸张, 因为确实有服务器参与其中, 但这意味着我们可以以不同的方式看待服务器。

无服务器的潜在上升空间

想象一下,一个简单的基于Web的应用程序,处理来自HTTP客户端的请求。而不是让一些程序运行时等待请求到达,然后调用一个函数来处理它们,如果我们可以按需启动运行每个函数,然后将其丢弃,那会怎样?我们不需要担心可以接受连接的运行的服务器数量,或者在伸缩时处理复杂的配置管理系统以构建应用程序的新实例。此外,我们还将减少诸如内存泄漏、分段错误等状态管理的常见问题。

或许最重要的一点是,这种按需调用函数的方法将允许我们伸缩每个函数,以匹配请求数并对它们并行处理。每个“客户”都将获得一个专门的流程来处理他们的请求,而流程数只会受到您处理的计算能力的限制。当与一个大型云提供商耦合,其可用的计算大大超过您的使用量,此时无服务器就有可能移除大量的复杂性,从而伸缩应用程序。

潜在的缺点

诚然, 在为每个请求构建进程时, 仍存在增加的滞后时间的挑战。无服务器永远不会像预先分配的进程和内存那样样快;然而,问题不在于它是否更快, 而在于它是否足够快。从理论上讲, 我们会接受无服务器的延迟, 因为我们会得到回报。然而, 这一权衡需建立在对手头的情况进行仔细评估的基础上。

使用Rancher和开源工具实现无服务器

Docker为我们提供了很多工具来实现这个无服务器的概念,并在最近的DockerCon上给出了很好的演示。Rancher将这些能力最大化了。因为我们的平台承担您的容器基础架构的管理,所以只需操作一个API即可添加和删除计算容量。通过软件定义栈的这部分能力,支持用户实现全面的应用程序自动化。

栈中的下一层即为无服务器系统编写代码的可用框架。您可以自己编写、或者扩展一些中间件来处理这个问题,但有很多开源项目提供了工具来简化这一过程。其中一个项目是Iron.io的Iron功能。我在Rancher上做了一个快速的POC,发现它很容易使用。使用这些compose文件可以在Rancher中快速启动该设置。

要使用这些文件,请将repo中的docker-compose.yml和rancher-compose.yml文件复制并粘贴到Rancher UI的“Add Stack(添加栈)”部分。或者从Rancher CLI中,简单地运行“rancher up”(确保设置以下环境变量:RANCHER_URL,RANCHER_ACCESS_KEY,RANCHER_SECRET_KEY)。

栈启动时,您应该可以在Rancher UI中看到。此外,您可以通过单击栈中第一个项目(“API - lb”)旁边的“i”图标,查找 Iron Functions API端点和UI的URL。

输入图片说明 部署完成后运行无服务器栈

输入图片说明 找到您的IronFunctions端点的URL

一旦您运行栈,请按照Iron.io的Github repo上的“Write a Function(编写一个函数)”的说明进行操作。您可能需要一些时间来适应,因为这需要您在编写应用程序时稍作改变。将不会有任何共享的状态供您的函数引用,而库之类的东西利用起来可能会又困难又昂贵。在我的例子中,我从Iron.io中选择了一个简单的golang函数:

package main

import (
"encoding/json"
"fmt"
"os"
)

type Person struct {
Name string
}

func main() {
p := &Person{Name: "World"}
json.NewDecoder(os.Stdin).Decode(p)
fmt.Printf("Hello %v!", p.Name)
}

下一步是将函数部署到我们在Rancher中设置的Iron函数的实例中。为了使这更容易尝试,我编写了一个为您执行所有步骤的脚本。参照这个repo中的README。一旦部署了函数,您应该能够在UI中看到它,然后就可以试着用它了:

输入图片说明 IronFunctions的Dashboard

输入图片说明 你的正在执行的函数的结果

从Rancher内部,您可以根据您的需求扩张或缩减员工人数。Rancher会把它们放在一个主机上,并将它们连接到一个负载均衡器上。根据最佳实践指南,您可以简单地根据“wait_time”度量,从而使伸缩操作相对简单。

若您也想过用这种方式构建应用程序,我觉得本文的教程会是一个很有用的尝试。如果您对此有任何意见或反馈,不要犹豫,联系我们!我们一如既往地期待听到您的反馈!

欢迎关注Rancher官方微信公众号(RancherLabs),获取第一手技术干货推送;欢迎添加客服微信(RancherLabsChina)为好友,加入Rancher官方技术交流群,获取免费技术支持,与数千Docker/Rancher使用者互动。

9月27日,北京海航万豪酒店,容器技术大会Container Day 2017即将举行。

CloudStack之父、海航科技技术总监、华为PaaS部门部长、恒丰银行科技部总经理、阿里云PaaS工程总监、民生保险CIO······均已加入豪华讲师套餐!

11家已容器落地企业,15位真·云计算大咖,13场纯·技术演讲,结合实战场景,聚焦落地经验。免费参会+超高规格,详细议程及注册链接请戳 输入图片说明

© 著作权归作者所有

共有 人打赏支持
RancherLabs
粉丝 11
博文 98
码字总数 192073
作品 0
深圳
程序员
Rancher 2.0快速上手指南

内容导读 准备一台Linux主机 启动Rancher服务器,进入Rancher UI 如何在Rancher UI下添加一个主机 如何导入现有的Kubernetes集群 如何在Rancher UI下添加一个容器 启动Calalog应用 如何使用高...

RancherLabs ⋅ 2017/10/10 ⋅ 0

梁胜博士亲解Rancher 2.0:K8s之上的Rancher魔法

经过数月的努力,我们终于发布了Rancher 2.0 Technology Preview,这对Rancher Labs而言也是历史性的、值得铭记的一刻。 Rancher 1.x容器管理平台一直为市场和用户所喜爱,自2016年3月Ranch...

RancherLabs ⋅ 2017/09/30 ⋅ 0

【开源访谈】Rancher Labs 秦小康:容器技术的兴起及未来发展方向

近两年,Docker 容器技术迅速在国内兴起,市场对容器的接受程度也是前所未有。有关调查显示,超过50%的企业在其生产环境当中部署了至少一种容器应用程序,并且现有部署比例仍在不断增长。为何...

OSC源创君 ⋅ 2017/04/27 ⋅ 7

Docker宣布拥抱k8s,k8s将一统天下?

Docker官方于DockerCon EU 2017上宣布将在下一个Docker企业版中支持Kubernetes。容器编排之战似乎胜负已分,Kubernetes即将一统天下?容器市场下一步会如何发展? 2017年10月17日,全球瞩目的...

RancherLabs ⋅ 2017/10/18 ⋅ 0

通过Rancher部署并扩容Kubernetes集群基础篇一

一 应用场景描述 持续跟踪研究Kubernetes也有一段时间了,Kubernetes作为谷歌开源的生产级别的容器调度系统从开源初始便获得了众多的关注。一些有研发实力的公司调研过Kubernetes的设计理念以...

自由linux ⋅ 2017/07/11 ⋅ 0

Rancher 2.0 正式发布:加速企业 Kubernetes 落地

Rancher Labs 团队宣布 Rancher 2.0 已正式发布! Rancher 2.0 是一个 100% 开源的 Kubernetes 管理平台,为企业用户提供 Kubernetes-as-a-Service (Kubernetes即服务),并且 Rancher 2.0 能...

王练 ⋅ 05/03 ⋅ 13

利用Racher轻松构建PASS平台

一,Rancher是什么 1.1 Rancher背景 ❶Rancher Labs成立于2014年。总部设立在美国加州的Cupertino。在美国的亚利桑那州的菲尼克斯和中国的深圳设立有研发中心。 ❷核心团队自2008年就在一起工...

架构师小秘圈 ⋅ 2017/09/29 ⋅ 0

Prometheus监控的最佳实践——关于监控的3项关键指标

本文来自Weaveworks的工程师Anita Burhrle在Rancher Labs与Weaveworks联合举办的Online Meetup上的技术分享。在此次分享中,嘉宾们讨论了如何使用Rancher、Weave Cloud和Prometheus来轻松部署...

RancherLabs ⋅ 2017/10/13 ⋅ 0

Rancher v1.3 发布 对 Windows Container 支持

2016年12月初,当我们发布Rancher v1.2时,就定下了未来「更频繁的迭代」的计划。就在上周,Rancher v1.3正式发布啦!除了对v1.2中一些bug的修复之外,它还有几个新的功能:1)用户界面修复;...

O0oo0O ⋅ 2017/01/13 ⋅ 1

CNCF启动K8s软件一致性项目,Rancher入选全球首批K8s认证平台

CNCF于美国旧金山当地时间2017年11月13日宣布推出Certified Kubernetes Conformance Program,并公布了首批通过认证的32个Kubernetes平台的名单。 此次认证项目中得到认证的Kubernetes产品与...

RancherLabs ⋅ 2017/11/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud相关项目

Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。 Spring Cloud Bus 事件、消息总线,用于在集群(例如,配...

明理萝 ⋅ 27分钟前 ⋅ 1

更新队友POM文件后报错

打开报错的地方的pom及其引用方法所在文件的pom,观察其版本号是否一致,不一致进行更改

森火 ⋅ 32分钟前 ⋅ 0

IDEA使用sonarLint

一、IDEA如何安装SonarLint插件 1.打开 Idea 2.点击【File】 3.点击【Settings】 4.点击【Plugins】 5.在搜索栏中输入“sonarlint”关键字 6.点击【Install】进行安装 7.重启Idea 二、IDEA如...

开源中国成都区源花 ⋅ 37分钟前 ⋅ 0

Succinct Data Structure

作者:唐刘 最近看了一篇论文 SuRF: Practical Range Query Filtering with Fast Succinct Tries,里面提到使用一种新的数据结构 Succinct Range Filter(SuRF) 替换掉了 RocksDB 默认的 Bloo...

TiDB ⋅ 38分钟前 ⋅ 0

Java进阶之内存模型介绍

Java进阶之内存模型介绍 前言 不管在什么编程语言里面,读取和写入都是我们程序最普遍的操作,在单线程的程序里面我们可能不关注线程的读写问题,但是一旦到多线程的环境下,读和写就会变得非...

九劫散仙 ⋅ 40分钟前 ⋅ 0

在windows上搭建一个ftp服务器

一、关于ftp FTP 是File Transfer Protocol的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。基于不同的操作系统有不同的FTP应用程序...

zctzl ⋅ 44分钟前 ⋅ 0

JDK8 排序

import java.util.Collections;import java.util.List;import java.util.ArrayList;import java.util.Comparator; public class JavaTest { public static void main(String......

Jeam_ ⋅ 54分钟前 ⋅ 0

api管理平台汇总

swagger crapApi RAP xxl-api apidoc

facula ⋅ 54分钟前 ⋅ 0

Java 11 快要来了,编译 & 运行一个命令搞定!

Java 11 马上要来了,原定于 9 月发布,还有不到 3 个月了,敬请期待更多新功能被加入到 11 当中,本文本讲的是 JEP 330 这个新特性。 化繁为简,一个命令编译运行源代码 看下面的代码。 //...

Java技术栈 ⋅ 56分钟前 ⋅ 0

谷歌运营了一年多的无人出租车,得出了四条宝贵的经验

简评:并不是谷歌运营,不过国内对 Waymo 不敏感,就标题党了一下请多谅解。另外网友对于无人出租车是认可的,但是觉得如果价格没有优势,还是回去乘坐人类驾驶的汽车,毕竟这是人家的经济来...

极光推送 ⋅ 57分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部