内容简介:本文虽然是谈论Ballerina(芭蕾舞女)编程语言是如何从专门为企业服务总线(ESB)而编程的语言如何转变成云原生语言,但是可以看出传统SOA到云原生转变演进的内在逻辑性。Ballerina语言是专门设计用来集成不同的企业应用而诞生。“我们正致力于努力改进ESB配置语言已经很长一段时间,一直在寻找正确的方法来演进它,”该语言的创建者、WSO2的首席执行官兼创始人Sanjiva Weerawarana表示。使用数据流用来集成传统系统的方法并不合适,正因为配置方法不足,才让他们想到如何使用编程实现集成的功能
本文虽然是谈论Ballerina(芭蕾舞女)编程语言是如何从专门为企业服务总线(ESB)而编程的语言如何转变成云原生语言,但是可以看出传统SOA到云原生转变演进的内在逻辑性。
Ballerina语言是专门设计用来集成不同的企业应用而诞生。“我们正致力于努力改进ESB配置语言已经很长一段时间,一直在寻找正确的方法来演进它,”该语言的创建者、WSO2的首席执行官兼创始人Sanjiva Weerawarana表示。
使用数据流用来集成传统系统的方法并不合适,正因为配置方法不足,才让他们想到如何使用编程实现集成的功能。
但是现有的编程语言如 Java 或JS等设计目的不是为了轻松处理集成任务,例如引入外部源等,这些工作留给了驱动程序和客户端库,需要开发人员进行额外的工作(以及潜在的错误和性能问题)。
现在企业应用正在迁移到云原生模式,转向微服务架构,小型服务之间彼此通信,所有这些细粒度分解导致更多端点endpoint,这些端点需要通过API访问。
为了创建芭Ballerina语言,Weerawarana借鉴了WSO2经常用于完成客户端部署的工具,也就是序列图,他有编写语言的经验,甚至还教过大学课程,公司建立了一个由60名开发人员组成的团队,“Ballerina语言芭蕾舞女”这个名字来自Weerawarana对于芭蕾舞如何紧密协调的迷恋,他认为这应该是企业整合都应该追求的优雅流程。
Ballerina将网络服务视为一等公民的概念,可实现轻松集成,这是一种能理解网络概念的完整编程语言,Ballerina不是仅针对集成任务的领域特定语言(DSL),它实际上是一种成熟的编程语言, Weerawarana可以自认为在未来十年内取代Java
Weerawarana预测,从长远来看,将不再需要ESB和应用服务器等中间件工具,ESB的路由功能将嵌入代码中,使用诸如Ballerina之类的语言,或者由诸如Kubernetes之类的编排引擎或诸如Istio之类的服务网格软件承担。
最近,WSO2在旧金山召开了第一次Ballerinacon用户大会,与会者了解了Ballerinacon如何成为世界上第一个云原生编程语言。
以下是Ballerina的六个功能,使其成为云原生计算的编程语言。
1.内置容器支持
Ballerina可以为云原生格式运行程序做很多基本准备工作,为开发人员节省时间,可以对代码进行注释,以便编译器自动创建Dockerfile,并将其打包在一个映像中,然后可以作为容器运行,因为编译器可以完成所有这些额外的工作,所以开发人员可以更快地构建和测试多个迭代。
Ballerina还为Kubernetes开源容器编排引擎提供了一个库,如果想通过单个命令协调多个程序的操作,这就很方便。
2.无服务器友好
Ballerina已经受到许多无服务器平台的支持,包括OpenWhisk和Bitnami的Kubeless。
Ballerina由OpenWhisk平台本地支持,WSO2本身运行托管的OpenWhisk服务,称为WSO2无服务器解决方案,在OpenWhisk命令行,只要上传你的函数和服务,它将其编译并将其放在容器中,并提供实际需要的资源,使用负载进行自动扩展。
Kubeless提供了一种将Ballerina程序作为无服务器功能进行管理的方法,Kubeless为该函数设置了自定义资源定义,因此可以由Kubernetes管理,并可通过Kubeless命令行访问。
Ballerina一个有趣的方面是任何函数都可以转换为API端点,实际上使每个函数都成为独立的微服务,反过来,这开启了使用单个语义域进行集成操作,可以生成用于开放API网关的Swagger文件。
3.可观察性
默认情况下,Ballerina程序是可观察的:Ballerina支持基于微服务的日志记录,跟踪和指标,而不是添加额外的库,Ballerina生成的二进制文件默认输出这些数据,除了配置最终客户端来解释和显示数据之外,用户不必为可观察性功能做任何额外的工作。
用于系统调试商用Honeycomb软件,以及开源的Prometheus时间序列监控,这两个平台可以轻松地与Ballerina程序一起使用。对于跟踪,生成的数据已经适合OpenTracing模型,对于可视化,它与Grafana很好地集成,日志数据可以通过ELK堆栈轻松消化或写出到平面文件。拥有各种基于 SQL 的数据库系统连接器,并且有一个用户API供开发人员创建自定义测量指标。
4.使用或不使用服务网格
由于许多微服务彼此通信的性质,服务网格的作用变得越来越重要,其中它负责诸如服务发现(微服务在动态系统中找到彼此的微服务)和认证之类的职责,Ballerina装备精良,适合这样的环境。
如果你决定使用像Istio这样的服务网格,Ballerina效果很好,只需通过创建单个YAML文件手动注入边车,这对于添加Istio的特定服务(如虚拟服务网关)非常有用,这里的想法是网络功能可以由Istio(用于控制平面)和Envoy(用于数据平面)处理,同时保持Ballerina用于业务逻辑本身。
作为集成语言编写的Ballerina也可以执行类似服务网格的职责,提供内置功能,如服务发现,可观察性和多协议支持,它还可持在代码内封装控制或数据平面逻辑等情况。
5.使用流式SQL轻松处理流
今天的数据来源越来越不仅仅是静态的,通常,数据一旦产生,就从诸如Apache Kafka的流处理系统中收集。
Ballerina具有通过执行复杂事件处理(CEP)来处理流数据的功能,它通过流式SQL的变体来实现这一点,流式SQL是大多数开发人员已经知道的SQL变体,能在时间窗口上处理事件集合,你可以设置包含必填字段的表,然后永久阻止执行,这意味着它会在刷新数据时不断重新评估数据。
在Ballerina中,网络事件是自然原生的,是一流的概念,开发人员可以建立带有丰富注释和过滤器的服务端点和服务客户端,此外,支持流行的数据交换格式(如JSON和XML),允许开发人员直接对数据进行编程。
6. 内嵌安全性
安全性也融入了Ballerina,在IDE上实现了一系列安全检查,并具有安全感知编译器,编译器进行静态分析,检查代码是否存在明显的缺陷,例如可能的缓冲区溢出。
还有运行时分析,每个函数都有内置的安全注释,当被激发时,@ sensitive注释将仅接受可信数据,这可以防止SQL注入攻击;@tainted注释将标记任何被认为不可信的计算。
以上所述就是小编给大家介绍的《自称十年内取代Java的企业集成语言:Ballerina(芭蕾舞女)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed Shaw / Example Product Manufacturer / 2011
This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!