摘要: 8月9日2016云栖大会北京峰会拉开帷幕,阿里中间件高级产品专家奕成带来了“云服务总线CSB——‘连’无边界”的重要演讲。其中谈及了服务互通开放典型问题,也介绍了企业业务能力API化,着重说明了云服务总线CSB的服务处理过程,最后概括了综合场景。精彩不容错过——
本文主要谈及了服务互通开放典型问题,也介绍了企业业务能力API化,着重说明了云服务总线CSB的服务处理过程,最后概括了综合场景。
云服务总线CSB与ESB有什么关系呢?CSB就是互联网以及云计算场景下的企业服务总线,但重点不同,CSB真正要做的是能力开放平台,无论是ESB还是CSB,它们都是要实现系统之间的服务互通。
举个例子,如果用企业互联网架构平台 Apsara Aliware的“三驾马车”(EDAS/DRDS/MQ)构建一个新系统,怎样与原来的系统交互呢?两个系统之间协议和接口形态可能很不一样(同步异步、参数结构、报文格式)。从服务消费者的角度来说,想把某些东西为我所用,想要集成或者调用的东西是确定的,配置或者实现对应的适配器就好,这就是ESB的典型场景。而云服务总线CSB更多从服务提供者的角度来考虑,他的一个已有系统要对外开放服务,要面对的是更不确定更广泛的服务消费用户群,消费者应用的体量和类型可能是各式各样的。那么,首先应该有一个方便的机制,使得在CSB上发布服务的时候不需要针对不同的消费方协议做不同的处理,而消费方应用也可以很方便地使用广泛通用的、或者自己偏好的服务协议来调用这个服务;其次,还要让服务发布者可以在CSB上设定开放出来的接口结构和原有接口的差异,做一定的变化、简化、甚至屏蔽,不单是参数个数和列表结构上的不同,也包括参数内容格式的转换,即通常所谓的报文转换。
企业内部的网络结构和系统之间的部署和隔离的情况可能会比较复杂。例如一个系统配置了防火墙,假设只能从内部访问到外部,外部不能访问内部,但又需要把系统内部的服务开放出去给别人用,CSB该怎么解决?又例如企业有多个子系统,相互之间是网络隔绝的,只能和一个中心系统交互,那么CSB如何让一个子系统的服务能为另一个子系统所用?
安全性管理授权鉴权:系统间的服务的访问通常都需要认证和鉴权。在CSB的服务处理中,认证就是确定访问方是系统认可的合法服务消费者,鉴权是指用户对指定服务的访问是得到过授权的。
从服务消费者的角度来看,一定会对服务调用频度有要求,但作为服务提供方,需要考虑其服务器集群能支撑的业务访问量,我们CSB需要一些保护措施保证不会被爆发的服务请求压垮,首先会做限流,将一部分服务请求挡掉,而挡掉哪些放行哪些,又要考虑是否引入服务以及消费者的优先级处理。
在互联网场景里,我们经常会看到应用用户量和业务量有非线性增长的情况,这个增长通常也很难预期,从服务提供方的角度讲,我们CSB要有快速便捷进行线性扩容的能力。
有些企业本身内部的系统环境就比较多,再结合互联网云计算,系统间服务互通的情况就更复杂了。不同的数据中心、地域、云上、云下,多个企业之间等等,每一个节点可能属于不同的业务域,属于不同的企业、不同的环境,之前也提到过,又由于防火墙以及网络规划,节点之间又会有这样那样的访问约束。那么CSB要支持跨节点之间的服务互通,必须要解决路径打通,以及路径上不同归属的节点之间的授信问题。
现在的企业正在面对迅速变化的经济、市场以及技术环境,需要更灵活敏捷地进行产品设计开发,以应对快速的业务变化和紧张的经费压力。企业可以采用例如阿里巴巴Aliware这样的企业互联网架构技术,实现自身的服务化沉淀和组织,形成以厚实的中台共享业务,高效灵活支撑前台多变业务需求的结构。同时可以根据自身技术能力、资金以及时间各方面情况的考虑,选择专业、高效、更有成本优势的第三方服务,来快速、灵活、组合式地构建企业应用。
另一方面,越来越多的企业组织也需要以API方式把自己的核心业务资产整理开放给合作伙伴,或者让第三方的应用整合。结合之前提到的系统间服务互通的典型问题,可以注意到,CSB更强调从服务提供方的角度来看,面对更多变和广泛的消费群,怎样更高效、更灵活、更弹性地开放服务。从服务消费者的角度来讲,会希望有这样一个平台,能够方便地搜寻和消费需要的服务,不需要冗长、繁琐的商务过程,简单订阅调用就实现了服务能力的集成,这就是API的概念。
对服务提供方来说,如果想把API开放出来,需要持续对自身能力做分析和梳理,而且开放成API后,来自服务消费方的反馈也是非常直接的,有利于帮助企业思考自身的业务能力,到底什么东西最有价值,有助于发掘新的业务模式,提高服务水平。当把一个能力以API的形式开放出来后,由于消费的便捷和高效,更利于潜在客户的发掘和合作空间的拓展。我们需要这样一个产品,无论是跟已有系统的集成,还是把企业的能力开放出来给别人用,还是把企业内部各个系统之间以能力互通的方式去促进各个业务的创新和融合,都需要有一个能力的开放平台。
服务请求经过负载均衡,需要经过一个网络的防护,例如设置一些IP上的黑白名单,也可以集成一些网络安全的产品,来预防DDOS等网络攻击。当CSB确定是一个来自合法来源的请求后 ,需要进行协议适配,看服务调用者到底是谁,访问的是哪个服务。然后,CSB进行鉴权,识别是否是合法身份的调用者,是否被授权访问目标服务,以及是否达到约定的服务访问限制等等。接下来,如果不是本地节点提供的服务。需要进行CSB级联处理,可能会转接到另外的CSB实例。如果服务确实是本地节点能够提供,我们就要做进一步的服务请求的解析和校验。然后进入结果缓存模式,因为拿到的请求不一定需要放到后端去,如果服务发布者指定对该服务开启CSB缓存功能,一定时间内对该服务相同的请求,可以直接返回缓存的结果。紧接着要进行服务编排,常见的是服务路由处理。接下来进行消息映射和报文转换,最后通过协议适配到达服务提供方,获得结果经过转换返回给调用方。这就是CSB处理一个请求的大体过程。
如果链路很复杂,我们从链路的调用端到服务的提供端,任何一个环节都有可能出问题,这时候我们CSB需要有一个监控的机制,并且要有一个链路级的分析方式,帮助快速地排查、分析、解决问题。
图中连接不同环境的是一个典型的双箭头的双鱼型的标志,它其实就是所谓的CSB实例。用CSB实例间的连接为桥梁,实现它们各自“负责”的不同环境内部以及相互之间的服务互通。整个场景里可以看到,CSB可以放在企业自己的数据中心和阿里云等环境里,打通各个系统,实现企业内部互通,企业内外互通,云上云下互通,复杂级联互通。在任何一个节点上,我们开放出去的服务,也可以是我们自己的一些终端应用、设备在消费。合作伙伴、内外系统、移动端和云端应用, 用CSB可以连接一切。
云服务总线(Cloud Service Bus,简称CSB)公测中,可访问官网查看具体产品信息:
https://www.aliyun.com/product/csb
更多企业互联网架构平台内容可访问: https://www.aliyun.com/aliware