BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Autodesk无服务器微服务架构样例

| 作者 Abel Avram 关注 4 他的粉丝 ,译者 谢丽 关注 5 他的粉丝 发布于 2016年8月24日. 估计阅读时间: 3 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

在题为“什么比微服务更好?无服务器微服务”的网络直播中,Alan Williams(Autodesk)、Asha Chakrabarty(Amazon)和Alan Ho(Apigee)讨论了一个无服务器微服务的架构。其中,该微服务的构建使用了AWS lambda 函数和运行在AWS上的Apigee端点。

据Chakrabarty介绍,无服务器是一种相对比较新的架构风格,其中的计算单元不是虚拟机,而是一个封装了待执行代码(事件触发)的函数。Williams指出,无状态计算模型的主要特点是:“代码为主(code focused)”、没有需要管理的服务器、没有需要配置和管理的EC2实例、无需人工扩展、没有空闲资源、没有SSH或RDP。

下图简单地描述了一个由Autodesk实现的无服务器微服务的架构(点击查看大图):

该微服务有多个入口点作为HTTP端点(由Apigee管理)暴露。用户发起一个HTTP调用,并不知道其请求会由一个无服务器微服务提供服务。该服务由多个Python编写的lambda函数组成,这些函数之间通过AWS SNS异步通知进行通信。Lambda函数是相互独立的,可以使用不同的语言开发,可以由不同的团队维护。

由于lambda不是短期的,所以它们需要将状态在某个地方持久化,其中一个选择是使用DynamoDB表。这些表的访问通过IAM角色控制,并且仅限于那些需要对它们进行读/写访问的函数。这可以避免将不需要的数据暴露给某个lambda函数,如果存在安全漏洞的话,这还可以缩小微服务的攻击面。Autodesk之所以选择使用DynamoDB存储状态,是因为它简单,可以将数据作为JSON传递,不需要管理一个服务器实例,并且支持自动向上扩展。

上图底部的DynamoDB表(talr-taskstatus)将来自多个lambda函数的状态持久化,并在表被修改时产生流式事件。这些事件由另一个lambda函数监控(talr-validator),它会在必要时采取行动。

对于在AWS上实现一个无服务器架构,Williams列举了如下好处。

  • 敏捷性:只需数周就可以实现。
  • 不需要管理基础设施,无需EC2或ELB实例,不需要打安全补丁。
  • 开发人员只需专注于他们编写的代码。
  • 通过无服务器框架管理代码的能力。
  • 成本。根据他们的经验,运行lambda解决方案的成本只是传统云解决方案的一小部分(约1%)。由于不需要雇佣运维人员配置和监控EC2和ELB实例,所以成本还会进一步降低。

Williams还提到,无服务器架构不适合运行长期工作负载或者第三方应用程序。在那些情况下,他认为容器更合适。

本次直播还展示了如何在AWS上通过无服务器框架组织代码、部署和运行演示程序。

查看英文原文:A Sample Serverless Microservice Architecture from Autodesk

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT