For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
无服务器编程开发是目前大多数软件开发项目都会用到的一个编程开发方法,下面我们就通过案例分析来了解一下,无服务器编程开发都有哪些常见问题。
管理应用程序状态
广泛采用FaaS的一个先决条件是针对快速而简单的状态管理方法的解决方案,或者一系列解决方案。无服务器计算是一种无状态模式。我们不能假定任何有用的状态存在,即不存在即时执行环境内不同的运行时调用之间的有用状态。一些应用程序在这种限制下依然适用。例如,单纯进行数据转换的消息驱动组件不需要访问外部状态,拥有无限制响应时间需求的WebService组件,其每一次调用时需要连接到一台远程数据库,这种做法也是可以接受的。但是对于其他应用程序来说,这种限制就显得有些不足了。
当供应商服务不充足时,对于混合动力系统来说,一种改变方式是团队坚持开发追踪状态的长生命周期组件。这些组件可能被部署在CaaS(容器即组件,Containers-as-a-Service)或者PaaS(平台即组件,Platform-as-a-Service)环境,和FaaS功能协同工作。
这种混合动力系统组合了长期运行的组件逻辑和每一次FaaS功能请求逻辑。另一类做法是完全地聚焦于FaaS功能,让这些FaaS功能超越它们当前执行的环境,极其快速地获取和持久化状态。一种可能的实施方式是确保一个特定的FaaS功能,或者一系列FaaS功能,确保它们拥有类似于Redis这样的外部缓存机制,起到低延时访问作用。通过启动类似于Amazon的same-zoneplancementgroups(置放组群)这样的特性可以做到这一点。虽然这种解决方案较内存/本地磁盘状态方案来说有些延迟,但是很多应用程序会认同这种解决方案。
混合方法的好处是经常被访问的状态可以和逻辑一起保存在环境当中,那样并不复杂,但是可能有点贵,必须要有逻辑网络选址和外部状态。另一方面,一个单纯的FaaS方式的有点是更加一致性的编程模型,外加无服务器带来的更为宽广的伸缩使用和可操作性优势。当前的发展势头显示终混合方式会胜出,但是我们也应该对其他方式开放,比如类似于启用置放群组Lambdas。
无服务器协作服务
超越业务管理和状态管理,我们可以预见到其他组件的服务化和商业化,即使在云端环境,传统意义上我们希望开发,或者至少自己管理这些服务。例如我们可以停止运行在EC2机器上面的Mysql数据库服务器,转而使用Amazon的RDS服务器,我们可以使用Kinesis替换我们自管理的Kafka消息总线安装程序。其他的基础设施服务包括文件系统和数据仓库,而更多的面向应用示例包括认证和语音分析。
这种趋势还会继续,我们需要进一步地减少创建或者维护产品所带来的工作量。我们可以设想更多的预安装的消息逻辑(把ApacheCamel想象成服务,构建到AmazonKinesis或者SQS里面),并且进一步开发通用机器学习服务。
这里比较有意思的一个想法是FaaS功能,由于它们轻量级的应用模式,可以将自己紧紧地绑定一个服务,使得FaaS调用服务功能的生态环境时可以调用其他的FaaS功能,诸如此类等等。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。