专访阿里雷卷:为什么 Reactive 会突然受到了关注?

专访阿里雷卷:为什么 Reactive 会突然受到了关注?

从SOA到微服务架构,再到中台,服务的粒度越来越小,服务的数量越来越多。于是,一直不温不火的Reactive再次走入了人们的视线,服务之间的通讯也成为了大家关注的焦点。在ArchSummit全球架构师峰会(北京站)的现场,InfoQ采访到了Reactive基金会的初创成员、RSocket开发者陈立兵(花名雷卷),听他分享Reactive和服务通讯协议的最新发展。
Reactive基金会的初创成员、RSocket开发者陈立兵(花名雷卷)
Reactive不是一个新事物,在其发展历程中,有几个比较关键的节点:

为什么在当前这个时间节点,Reactive会突然翻红呢?雷卷认为这与新技术的发展是密切相关的,同时他也点名了三种与Reactive发展相关的三种技术,微服务、云计算和DDD。
随着业务的快速发展、业务复杂度越来越高,传统单体应用逐渐暴露出了一些问题,例如开发效率低、可维护性差、架构扩展性差、部署不灵活、健壮性差等等。而微服务架构是将单个服务拆分成一系列小服务,且这些小服务都拥有独立的进程,彼此独立,很好地解决了传统单体应用的上述问题,因此受到了业内的重视和推崇。
但是落地微服务架构就必须解决服务之间的通讯问题。传统的通讯方式是RPC调用,但是服务与服务之间通讯不只有RPC,有些服务可能负责消费数据,有些可能负责数据采集或生成,有时服务之间的通讯是相互且对等的,服务的角色在分工细化之后,就需要一个更全面的通讯协议。
我们常说:“现在大家讨论的已经不再是要不要上云的问题,而是上哪朵云、怎么上的问题了。”企业上云已经是大势所趋,但是上云之后,大家首先会关心的就是成本问题。
上云之前,企业一般是在年初的时候就做好一年的规划,购买足够多的机器,所以对于机器的利用率不是特别关心,只要保证不超出预算就可以。但是上云之后,机器利用率的高低直接关乎着每个月的IT费用,所以大家都想着利用率能不能高点、再高点,费用能不能省点,再省点。
而异步就是提升机器利用率最好的方法之一,因此云计算的发展也推动了Reactive的发展。
领域驱动设计(DDD)是一个开放的软件设计方法论,从EricEvans出版《领域驱动设计》之后,DDD一直是业内推崇的设计方法学,其划分服务的BoundedContext理念已经被微服务设计所接受。但是在各个Context之间如何通讯,DDD推荐的做法是基于消息/事件的理念,但是具体使用什么样的技术、什么样的协议等等,这些都没有明确,可以说是一个宽泛的概念。
2014年,DeanWampler提出:“DDD是针对设计诞生的,关于实现使用了更多抽象概念,也就是没有明确如何实现,也许DDD以一种非OOP方式也许更好,Reactive方式很合适DDD实现。”
DDD+Reactive的结合,就很好地解决了Context之间如何相互通讯的问题,将抽象的概念能够以非常直观方式进行实现,这个也是DDD倡导的从问题域到实现域一整套解决思路。
新技术的发展使得异步化、协程、Reactive等重新走红,但是在具体微服务应用落地过程中,大家发现会遇到一个很大的难题,服务与服务之间的通讯变得非常复杂,而目前并没有一个功能全面的标准协议,大家都是在做各种协议的适配和组合。
于是,RSocket应运而生了。RSocket是一个二进制的异步消息通讯协议,由Facebook、Netifi和Pivotal等工程师联合开发,基于ReactiveStreams规范具有异步、背压支持、多路复用、基于消息通讯、可扩展等特性,同时提供了Java、JavaScript、Python、C++、Golang、Rust各种语言SDK实现,方便应用快速接入RSocket协议。
很多人都会好奇为什么我们会需要一个新的通讯协议?“原因很简单,因为原来的通讯协议功能不够丰富和高效。”雷卷表示:“现有的通讯协议基本都是解决特定领域的问题,并不能囊括所有通讯方式。”
目前最常见的应用间通讯协议是RPC和HTTPRESTAPI。这两者对于request/response的通讯完全没有问题,但是针对新的架构设计,比如Streaming、EventDriven、IoT和双向通讯,就有点力不从心。
而RSocket通讯协议可以覆盖四种通讯方式,而这四种方式几乎覆盖了所有的通讯模式。
“RSocket协议从根本上解决各种通讯问题,适配了新的技术发展。”雷卷表示:“以前的通讯协议能解决特定领域的问题就可以了,是很薄的一层。而实际的通讯是复杂的,一个设计很好的协议,可以从根本上满足不同应用之间通讯需求,解决应用之间互联互通的问题,而不是当前各种协议相互转换和适配,增加架构的复杂度。”
除了架构、性能等问题,开发语言支持也是开发者很关心的问题。据雷卷介绍,目前RSocket支持的编程语言包括Java(Kotlin)、Javascript(Browser&Node)、C++、Python、Golang、.Net、Ruby、Rust等,同时Dart、Swift的支持也在规划和开发当中了。
Reactive的目的之一就是支持异步化,而不少语言都包括了对异步化的支持,另外不同的编程语言有不同的特性,那么如何让RSocket在各个语言SDK实现更符合该语言的开发习惯呢?雷卷表示:“在做SDK的时候,我们坚持的一个原则是Language-Native,即一种编程语言的SDK必须要符合该种编程语言的习惯和规范。例如,Go语言SDK会使用goroutinue、PythonSDK中会使用asyncio。”
总的来说,RSocket在开发SDK时通常会有两个:一个是Reactive的API,一个是LanguageNative的API,开发者可以根据自己的开发习惯选择对应的API。
前面讲的这么热闹,有没有已经落地的RSocket产品呢?实话说,目前落地的产品很少,虽然SpringFramework内置了对RSocket的支持,但目前商业产品也就只有NetifiBroker。不过,阿里巴巴刚刚开源了一款基于RSocket协议的中间件产品——AlibabaRSocketBroker。
AlibabaRSocketBroker架构图
RSocketBroker的主要作用是桥接应用通讯的双方。
当应用启动后,会与Broker创建一个长连接,并同时表明自己的身份,如果是服务提供者,需要提交发布的服务信息,Broker会针对所有的连接和服务列表建立对应的映射关系。
当一个应用需要调用其他服务时,应用会将请求以消息的方式发给Broker,然后Broker会解析消息的元信息,然后根据路由表将请求转发给服务提供者,然后将处理结果后的消息再转发给调用方。
由于Broker是完全异步化的,且消息转发是基于ZeroCopy,所以性能非常高,无需担心中心化Broker会成为性能瓶颈,我们称之为软路由的设计策略。
RSocketBroker解决了哪些问题呢?具体来说,它解决了传统设计中的常见的以下问题:
AlibabaRSocketBroker开源地址:https://github.com/alibaba/alibaba-rsocket-broker欢迎大家试用并提出宝贵意见。

主题测试文章,只做测试使用。发布者:最新稳定辅助网,转转请注明出处:https://www.744broad.com/17482.html

(0)
上一篇 2023年3月11日 上午9:51
下一篇 2023年3月11日 上午9:55

相关推荐

  • ALEO隐私简介

    ALEO隐私简介 Aleo是第一个提供完全私有应用程序的平台。Aleo利用去中心化系统和零知识密码学为用户提供具有绝对隐私的无限计算。通过构建一个默认为私有、开源且为Web构建的区块链,Aleo具有独特的优势来解决区块链采用的缺点。使用Aleo,用户可以访问真正个性化的Web服务世界,而无需放弃对其私人数据的控制。LEO语言Aleo已经构建了一个非常雄心勃勃…

    RUST资讯 2023年2月16日
    70
  • 汽车零部件出口、海上运输如何防锈?

    汽车零部件出口、海上运输如何防锈? 经过上百年的发展,汽车工业各项技术已然趋于成熟,并向着智能、和节能开拓发展,这种情况下汽车在市场中的各类问题也是层出不穷,各品牌汽车的召回事件更是其中广泛受到社会各界关注和讨论的热点,其中不乏大众、保时捷等国际知名品牌,而在所有造成汽车召回的影响因素中,锈蚀问题占了很大比重,这也给汽车厂商们敲响了警钟:细节决定成败!锈蚀问…

  • 军报刊文:“和平病”是一种什么病?

    军报刊文:“和平病”是一种什么病? “和平病”因其迷惑性、隐蔽性、传染性而危害极大。虽然和平意味着百姓安居乐业、尽享天伦,但不意味着军人“刀枪入库、马放南山”。“和平病”对军人而言通常表现为敌情意识淡薄、武备废弛、贪图享乐、追名逐利。患上“和平病”的军队,看似“金玉其外”,其实“败絮其中”,无一例外经受不住“糖衣炮弹”的考验和真枪实弹的检验。“和平病”是一种…

  • 和马发文祝贺米卡,谈庆怜没出道:很震惊

    和马发文祝贺米卡,谈庆怜没出道:很震惊 4月24日晚,《创造营2021》迎来总决赛,而早前宣布退赛的日本选手和马也在社交媒体上发文称自己一直在关注节目,还发长文告白好兄弟庆怜、米卡以及粉丝。文中,和马表示:自己一直和家人一起关注比赛,很高兴看到兄弟们的成长,坦言自己离开得太早了,但相信这个团会很出色,自己也会永远珍惜这次经历和收获的友情。而对于一直以来的队友…

    RUST资讯 2023年2月26日
    40
  • Jackson 解析 JSON 详细教程

    Jackson 解析 JSON 详细教程 JSON对于开发者并不陌生,如今的WEB服务、移动应用、甚至物联网大多都是以JSON作为数据交换的格式。学习JSON格式的操作工具对开发者来说是必不可少的。这篇文章将介绍如何使用Jackson开源工具库对JSON进行常见操作。什么是JSON?JSON是”JavaScriptObjectNotation“的缩写,JSO…

    RUST资讯 2023年2月18日
    90
  • 现在是开源软件的黄金时代?Java之父:我不知道如何回答……

    现在是开源软件的黄金时代?Java之父:我不知道如何回答…… 出品|开源中国文|局长JamesGosling,加拿大计算机科学家,完成了Java的原始设计,并实现了Java最初版本的编译器和虚拟机,也是公认的“Java之父”。Evrone是一家企业软件开发公司,旗下担任技术布道师(DevRel)的GrigoryPetrov最近对JamesGosling进行了…

  • 如何在游戏里当个合格的“过年氛围组”

    如何在游戏里当个合格的“过年氛围组” “年味越来越淡”,这是老生常谈了。几年前,大家聊起这个话题大多是吐槽——春晚越来越无聊、拜访亲戚好麻烦、假期出游人挤人……今时却不同往日。相比去年此时被疫情带来的不安所笼罩,这个春节平稳了许多。只是许多人响应号召原地过年,春运没了以往的拥挤,大街小巷的店铺们便也照常营业,诸多年轻人们第一次度过一个没有家人相伴的除夕夜………

  • 刚哥谈架构 (十) 开源关系型数据库架构

    刚哥谈架构 (十) 开源关系型数据库架构 我之前跟大家分享了数据库架构(刚哥谈架构(六)谈谈数据库架构),今天我们来讨论一下数据库中最为常见的关系型数据库的架构。我们把主要的开源关系型数据库分为三类,来分别了解一下它们的架构和设计,并了解一下它们各自的优缺点。OLTP是在线事务处理,在3层体系结构中支持面向事务的应用程序。OLTP管理组织的日常事务。主要目标…

    RUST资讯 2023年2月25日
    60
  • 3DM速报:赛博朋克2077新补丁带来新Bug,塞尔达无双出货350万

    3DM速报:赛博朋克2077新补丁带来新Bug,塞尔达无双出货350万 欢迎来到今日的三大妈速报三分钟带你了解游戏业最新资讯大家好,我是米瑟《赛博朋克2077》的新补丁出了,新Bug们也是;Steam周销榜:“给她爱”,你可终于没了!《塞尔达无双:灾厄启示录》出货量破350万,“无双”系列第一。1、《赛博朋克2077》的新补丁出了,新Bug们也是新补丁它来了…

    RUST资讯 2023年2月14日
    60
  • 重磅!Docker 与 WasmEdge 合作,添加 Wasm 支持

    重磅!Docker 与 WasmEdge 合作,添加 Wasm 支持 byVivianHu原文戳:https://www.infoq.com/news/2022/11/docker-webassembly/在上周KubeConNA2022的CloudnativeWasmday[1]大会上,Docker与CNCF的WasmEdgeRuntime[2]项目发布了…

    RUST资讯 2023年3月12日
    30
关注微信