开源Fn项目—Oracle下一代无服务器计算

服务器
在整个平台上我们还对Docker和Kubernetes进行了包装,向外提供Oracle容器引擎。不同于直接安装Kubernetes,Oracle容器引擎可以打造强大的跨可用域分布式集群管理,它主要和Oracle的IaaS结合在一起。

 云开发开源策略

从2017年开始Oracle在云开发和开源方面逐渐加大了力度,17年9月份Oracle以铂金身份加入CNCF。 Oracle的开源策略主要从几个维度出发,***是支持开源,所有在CNCF中列出的技术我们都是支持的。第二是云中立,开发者所开发的应用可以应用在任意的云平台上。第三是容器原生,Oracle未来所有的开发路线都将是在Docker和Kubernetes环境中。

Oracle Java新战略

在这样的一个大环境下,我们再回过头来看下Java。从17开始Oracle会将J2EE开放给Eclipse基金会,J2EE 8之后的所有技术标准和规范由Eclipse基金会进行制定,Oracle和其他厂商一样也是一个参与者。这样就给微服务开发带来了更多的敏捷性、灵活性、开放性、兼容性。

在微服务敏捷开发快速迭代的时代下,为了让Java更好的支撑未来的技术发展,Java 9 于17年9月21号发布。Java 9 中有个关键的项目——Jigsaw,它主要是在微服务方面增加了很多的敏捷开发支持。在Java 9 之后Java将进入一个快车道,我们会每隔6个月发布一个版本,也就是说之后的版本发布是在18年3月份和18年9月份。大家都知道Oracle有OpenJDK和OracleJDK,OpenJDK是OracleJDK的一部分,也就是开源出去的那部分JavaJDK。在某些方面OpenJDk仍然不满足企业级客户的要求,这主要是在安全性方面。因此我们准备之后慢慢的将OracleJDK开源出来,让OpenJDK 功能将和 OracleJDK 功能迈向一致。

容器原生云平台策略

在容器原生云平台方面Oracle的定位也是基于开源策略。大致有以下几个方向。首先是提供完整、集成、开发的容器原生云套件,容器平台选择的是Docker,容器的编排工具选择的是Kubernetes,在CI CD方面是Wercker,该套件有着持续集成、持续交付,编排、调度,管理、运维,分析等特性。第二个是社区驱动,云中立和开源。***是提供差异化的服务质量和卓越运营,Oracle提供全面、透明的管理,同时和Oracle的IaaS服务进行无缝集成。

容器原生云平台架构

 

开源在企业上的应用和互联网公司的开源化方式还是有着一定差异。在这部分的解决方案中,Oracle的容器原生云平台架构和一般所理解的架构稍微有些不同,Oracle所理解的是API驱动。在所有Oracle的解决方案中都是API驱动的,云平台中提供的所有的服务也都是API。云平台底层的技术架构中采用了Docker、kubernetes、镜像仓库,在这些基础组件之上是微服务架构Server Mesh,同时还提供Serverless。使用这样架构的底层平台其实可以认为是容器原生,它可以支持客户端的任意语言,同时还确立了云中立。在性能优化以及安全性方面Oracle针对Java做了一些特殊的增强,可以看图中最右侧,主要是监控和诊断方面。

Oracle容器引擎

在整个平台上我们还对Docker和Kubernetes进行了包装,向外提供Oracle容器引擎。不同于直接安装Kubernetes,Oracle容器引擎可以打造强大的跨可用域分布式集群管理,它主要和Oracle的IaaS结合在一起。

Oracle的IaaS叫做裸金属服务器,你可以认为它是在某个城市的数据中心,每隔几十公里建一个AD,每个AD之间的传输速度是几百微秒,利用这样的服务就可以实现同城容灾。Oracle的解决方案提供了一键部署,Kubernetes可以实现跨AD域之间的集群, Oracle的环境其实是将Kubernetes环境、Docker环境和企业级的可用域结合在一起。

目前开源的技术有很多,到底什么样的技术才能成为将来的流行趋势?

我这里有两个观点,虽然不一定正确,但还是可以关注。***是否被CNCF立项,没有的立项的可以关注但不一定参与,第二已经立项同时又有像微软、Google等大公司参与的,成功几率会更大。

 

上图展示的就是Oracle完整的容器原生云平台所包含的内容,有容器流水线、容器引擎、微服务以及Serverless和Java。

Fn项目介绍

Serverless是继Docker之后下一代将要爆发的热点。一般来说如果开发人员既要编写代码还要对服务器、存储、网络进行调度的话,运作起来还会非常困难。理想情况是开发人员只需要发布指令就能够接收到反馈,无需关心后端的网络、服务等。Serverless所实现的就是这种基于事件或触发的形式。

Serverless的理念就是给出input后马上接收到output,input可以是任何一种语言,重要的是能够不关心语言马上给出响应。Serverless运行的***环境是在云上,只有云上才能够更好的实现Serverless。

Function as a Serverless

Serverless的实现技术各不相同,有的公司采用的是Function as a Serverless(函数即服务)。它是以Paas为基础提供的一种更微型的云计算架构,代码的运行环境和计算能力都由云服务商提供。云服务商会动态管理机器资源的分配。

FaaS一般按应用运行实际产生的资源消耗来收费,也就是从API调用时开始计费,调用返回时结束。应用程序可以实现单纯的无服务器发布,也可以通过微服务的方式和传统部署结合起来。

所有的这种无服务计算的Serverless框架都是通过事件驱动,同时也是无状态,高可用的。执行时间相对来说比较短,性价比比较高。高度抽闲极大地减缓应用开发。

FaaS的市场现状

Iron.io最早提出Serverless,并实现多云平台任务队列(taskqueuing),使用Docker容器技术实现云部署和本地架构上相似的体验。

亚马逊(Amazon)在2014年的AWSre:Invent大会上宣布推出 AWS Lambda,是最早提供FaaS Runtime这类服务的商业供应商。一旦将代码上传至Lambda,该服务会处理基础设施的全部容量、规模伸缩、补丁 安装以及管理工作,从而为代码运行提供必要环境。

目前Iron.io的创始人以及整个Serverless研发团队都已经加入Oracle,成立了Oracle的Serverless项目组,该项目就是Fn项目,已于17年11月初正式开源。

Fn项目的开源目标是支持各种编程语言,目前主要还是Java和Go以及其他一些流行语言。

Fn项目主要有四大组件:Fn服务、Fn FDK’s开发套件、Fn负载均衡、Fn Flow。

详细介绍

 

Fn可以提供无容器化的体验。首先是一键安装,开箱即用。开发者可以在自己的环境环境中使用Fn,只要满足Docker版本为17.0.5的版本之上,安装通过一条命令就能够完成。

 

运行也非常简单,使用Fn start 就可以在linux环境中启动Docker引擎,***次运行的时候会下载Fnserver需要的一些镜像库。

 

上图展示的就是如何在Java环境下使用Fn,通过Fn初始化命令指定运行环境后会自动的生成一些脚本和文件。

 

然后就可以在类似上图的环境中根据需要进行开发。另外还可以定义版本或者一些特性的信息,比如和远端和本地的server交互。

 

通过上图的方式执行之后server端就会返回相应的响应或请求。其实在这一块最主要的就是当你用最简单的Serverless框架去设计的时候,在将来云服务平台里面就可以基于事件触发或者基于一些事件调用,去做无状态处理,就可以发起很多请求。而后台也是基于Docker运行的,所以可以利用分布式或伸缩性去做自动的一些扩展。

 

在基本部署的时候,还可以定义一些服务的脚本控制,比如打包成App发送到后台。

Fn中还存在一个简单的,单艺主线的web UI,让开发者可以通过GUI来监控应用情况。

Fn特点

***这里来总结下Fn的特点。首先Fn是开源、云中立的。其次它支持各种语言,但是我们会对Java做特殊优化,毕竟目前J2SE的部分还是有Oracle来开发。第三它有着容器原生,本地开发的体验,因为Fn Server是运行在Docker环境中,所以并不需要在意开发环境。第四是调度独立,Fn支持Kubernetes、Mesos、Swarm、etc,一般我们建议选择Kubernetes,毕竟它的市场份额摆在那里,Oracle的Serverless版本发布之后也会针对Kubernetes进行集成。***还有一个特点就是可以无痛迁移Amazon Lambda程序

责任编辑:武晓燕 来源: IT大咖说
相关推荐

2012-04-25 09:44:54

服务器虚拟化

2013-07-27 21:28:44

2020-09-27 17:27:58

边缘计算云计算技术

2020-09-16 10:28:54

边缘计算云计算数据中心

2014-01-07 09:41:41

网络虚拟化下一代服务器SAN

2015-09-28 16:24:34

YARNHadoop计算

2023-04-28 10:02:50

2024-02-26 14:46:53

移动计算人工智能5G

2018-09-11 08:00:00

DevOpsAIOps机器学习

2018-09-27 18:47:45

AIOpsDevOps

2019-06-18 08:55:36

无服务器公共云架构

2013-05-15 12:49:03

IBM PowerLi应用服务器

2013-06-27 11:21:17

2016-08-03 15:24:00

IT架构云计算微服务架构

2016-08-03 10:21:10

云计算

2020-10-28 09:53:40

云计算

2015-07-02 11:46:01

互联网根服务器

2021-12-19 07:29:54

CentOSCPU服务器

2015-12-03 17:38:18

云桌面

2013-07-22 09:47:17

大数据IBM技术大会
点赞
收藏

51CTO技术栈公众号