内容简介:从2017年开始Oracle在云开发和开源方面逐渐加大了力度,17年9月份Oracle以铂金身份加入CNCF。 Oracle的开源策略主要从几个维度出发,第一是支持开源,所有在CNCF中列出的技术我们都是支持的。第二是云中立,开发者所开发的应用可以应用在任意的云平台上。第三是容器原生,Oracle未来所有的开发路线都将是在Docker和Kubernetes环境中。在这样的一个大环境下,我们再回过头来看下Java。从17开始Oracle会将J2EE开放给Eclipse基金会,J2EE 8之后的所有技术标准和
云开发开源策略
从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程序
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 开源硬件可以抵御下一代黑客的攻击
- Twitter下一代流式计算框架Heron开源了
- Twitter下一代流式计算框架Heron开源了
- 知乎如何基于开源 Druid 打造下一代数据分析平台?
- Omi 5.0.5 发布,腾讯开源的下一代 Web 框架
- Google 开源下一代高安全性机密运算开发框架 Asylo
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。