What‘s new in dubbo-go v1.5.6

简介: dubbogo 社区近期发布了 dubbogo v1.5.6。该版本和 dubbo 2.7.8 对齐,提供了命令行工具,并提供了多种加载配置的方式。

头图.png

作者 | 铁城  dubbo-go 社区 committer
来源 | 阿里巴巴云原生公众号

dubbogo 社区近期发布了 dubbogo v1.5.6。该版本和 dubbo 2.7.8 对齐,提供了命令行工具,并提供了多种加载配置的方式。

相关改进实在太多,本文只列出相关重大 feature 和 性能提升项。

1. 命令行工具

熟悉dubbo 的朋友可能知道 dubbo 支持 telnet 命令行在线调试。

本次发布也增加了 dubbo-go 的 cli 命令行工具,可以方便用户直连特定服务,通过编写 json 文件来定义传输结构和数据,发起调用进行在线调试,打印返回数据和耗时情况。

目前支持嵌套 struct,但是只支持单个参数的请求包和回包。数据类型由于需要在 json 中定义,只支持 golang 基本数据类型:字符串、整形、浮点。

社区后续会再发一篇文章,着重讲解其原理和实现。相关 pr 为 https://github.com/apache/dubbo-go/pull/818,由 dubbogo 最年轻的 00 后 apache committer 李志信同学实现。

2. 代理实现扩展

重构 Proxy,添加 ImplementFunc 函数,允许项目对 Proxy 的代理进行重新实现。在使用 ProxyFactory 自定义注册的场景下,创建的 proxy.Proxy 也自定义实现,可以对返回数据进行修改。

主要应用场景为在网关泛化调用场景下。懂得的人自然懂。

相关 pr  https://github.com/apache/dubbo-go/pull/1019,由本文作者亲自操刀。

3. 启动时指定配置文件的路径

用户使用之前版本的 dubbogo 时,一直吐槽其只提供环境变量的方式,加载指定的配置文件。

export CONF_PROVIDER_FILE_PATH="../profiles/dev/server.yml"
export CONF_CONSUMER_FILE_PATH="../profiles/dev/server.yml"
export APP_LOG_CONF_FILE="../profiles/dev/log.yml"

v1.5.6 提供了新的配置文件加载接口:在启动命令行通过  proConf、conConf、logConf三个 flag 设定配置文件路径。

服务提供方:

go run . -proConf ../profiles/dev/server.yml -logConf ../profiles/dev/log.yml

服务消费方:

go run . -conConf ../profiles/dev/client.yml -logConf ../profiles/dev/log.yml

相关 pr https://github.com/apache/dubbo-go/pull/1039,由南京信息工程大学大三学生 陈家鹏实现。

4. 自定义加载 ServerConfig 和 ReferenceConfig

新增 ConfigPostProcessor 接口,用户可以依据该接口提供两个的方法,在部署 dubbogo 服务时加载自定义的配置。

// 服务提供方配置
PostProcessServiceConfig(*common.URL)// 服务消费方配置
PostProcessReferenceConfig(*common.URL)

相关 pr  https://github.com/apache/dubbo-go/pull/943,由即将奔五十的 dubbo chairman 北纬亲自操刀实现,chairman 同志老当益壮,号召大家向 chairman 筒子学习。

5. 扩展 URL 的比较

在common/url.go里面提供 CompareURLEqualFunc,可以让用户自定义 URL 比较,提高比对效率。相关技术细节见如下链接。

common/url.go:
https://github.com/apache/dubbo-go/pull/854/files#diff-5111f14762c010c3029a67743796fea97ab1015d35c96670a4cfa25f30145464

目前的 URL 实现并未达到最终状态。未来的 dubbogo 3.x 版本中,将借鉴 dubbo 的 URL 实现,将 common.URL 拆分为ServiceConfigURL、ServiceAddressURL和InstanceAddressURL,分别对应配置中心、注册中心和元数据中心的 schema,尽量将变更压力降低到最低粒度。

该功能对应的 pr  https://github.com/apache/dubbo-go/pull/854 由阿里双十一中间件大队长展图同学实现。展图同学一直奋战在编程一线。

6. 注册中心优化

复用了 zookeeper 链接以及优化了服务发现中心逻辑,大大减少了与 zookeeper 的 tcp 链接数目,减少了使用的 goroutine 数目,降低了 dubbo-go 的内存占用量。

我们会把同样的逻辑服用到 nacos、etcd、consul 等各个注册中心,通过减少 goroutine 数目,减轻注册中心压力,并减少 consumer 和 provider 内存的使用。

该功能对应的 pr https://github.com/apache/dubbo-go/pull/1010 由现在蚂蚁中间件工作的 王文学 同学在涂鸦工作时实现。

7. API 形式进行配置

以前版本的 dubbogo 只提供了从配置文件读取配置选项,该功能增加以 API 的方式进行配置,用户可以通过调用相关 API 初始化配置。

用户可以通过 API 进行相关参数设定,无需再加载配置文件。

可以参考示例: https://github.com/apache/dubbo-go-samples/tree/master/config-api

相关 pr https://github.com/apache/dubbo-go/pull/1020 也是由李志信实现。

8. grpc 优化

  • 打通 dubbo-go中 consumer config 的超时时间 connect_timeout 和 gRPC server 的超时时间,用户可以自定义 gRPC 超时时间机制。
# connect timeout
connect_timeout: "3s"# application config
application:organization: "dubbo.io"name: "GreeterGrpcConsumer"module: "dubbo-go greeter grpc client"version: "0.0.1"environment: "dev"
  • 将处理注册中心服务变更事件的机制改为同步,防止 provider 端服务频繁重启导致上下线事件处理顺序出错。
  • 使用 gRPC 协议时,异步等待 dubbo-go 的 service 都暴露完后,才将所有 dubbo-go service 对应的 gRPC service 注册到 gRPC server 上并启动 gRPC server。以此修复 provider 端的只能注册一个 service 的问题。

总体功能由 https://github.com/apache/dubbo-go/pull/1056 等多个 pr 构成,由 All In 了 dubbogo 的 上海识装信息科技有限公司【知名 APP 得物所在公司】工程师 柯瞻、 dubbogo 社区负责人 于雨、阿里工程师云兴 以及 南京某公司的张天同学 共同负责实现。

9. hessian2 go 最新 feature

除了  dubbo-go 自身的改进外,dubbo-go-hessian2 项目截止目前最新版本 v1.9.2 也做了如下重大改进:

  • 内置支持 java.util.Locale:https://github.com/apache/dubbo-go-hessian2/pull/264
  • 内置支持 java.util.UUID:https://github.com/apache/dubbo-go-hessian2/pull/256
  • 支持编码 no pojo object:https://github.com/apache/dubbo-go-hessian2/pull/243
  • 内置支持 java.sql.Time:https://github.com/apache/dubbo-go-hessian2/pull/219
  • 内置支持 java.sql.Date:https://github.com/apache/dubbo-go-hessian2/pull/221

dubbo-go-hessian2:https://github.com/apache/dubbo-go-hessian2

总体 pr 由 dubbo-go-hessian2 项目负责人 望哥、李志信、张艳明等同学完成。

10. 回顾与展望

dubbogo 目前处于一个比较稳定成熟的状态,1.5 版本会被持续维护,以修复 BUG 和进行一些必要的最低幅度的优化。

更多信息:https://github.com/apache/dubbo-go/releases/tag/v1.5.6

目前最新的朝云原生方向的发展3.0 版本基于 v1.5.x,在兼容 dubbo 3.0 的同时,将向后兼容 v2.7.x,计划于 4 月底发布第一个版本。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为彭松:基于C.A.F模型构建联接竞争力,创造新增长

10月19日,第七届全球超宽带高峰论坛(Ultra-Broadband Forum 2021)在迪拜开幕。期间,华为运营商BG Marketing与解决方案销售部总裁彭松发表了题为“联接,新增长”的主题演讲,定义并深入探讨了C.A.F&#xff…

关于写文章的一点经验

简介: 过去的一年,借着《如何画好一张架构图?》、《2020总结(个人篇):关于个人成长的再认知》以及《2020 总结(团队篇):招之即来,来之即战,战之必…

倒计时 3 天!1024 程序员节全日程曝光,105 场深度演讲点燃数字经济新时代

湘江之滨,岳麓山下,一年前,我们于此完成了一场备受业界关注的硬核技术与开源文化深度融合的大型技术大会——长沙中国1024程序员节,国内顶尖技术专家学者齐聚千年书院,九大操作系统掌门人共话开源技术创新、操作系统新…

13新功能_新功能简介|MySQL8.0数据查询脱敏

数据库管理员会负责维护数据的隐私和完整性。针对数据的脱敏,通常的方案是:应用端实现或者引入加密机等。不过现在MySQL8.0实现了数据脱敏这个功能,可以减少应用的复杂性、减少开发的工作量,也能友好的保护了数据的隐私和完整性。…

贝壳基于 Flink 的实时计算演进之路

简介: 贝壳找房在实时计算之路上的平台建设以及实时数仓应用。 摘要:贝壳找房大数据平台实时计算负责人刘力云带来的分享内容是贝壳找房的实时计算演进之路,内容如下: 发展历程平台建设实时数仓及其应用场景事件驱动场景未来规划G…

python动态规划详解_python----动态规划

不能放弃治疗,每天都要进步!! 什么时候使用动态规划呢? 1. 求一个问题的最优解 2. 大问题可以分解为子问题,子问题还有重叠的更小的子问题 3. 整体问题最优解取决于子问题的最优解(状态转移方程) 4. 从上往…

Flink 在唯品会的实践

简介: Flink 在唯品会的容器化实践应用以及产品化经验。 唯品会自 2017 年开始基于 k8s 深入打造高性能、稳定、可靠、易用的实时计算平台,支持唯品会内部业务在平时以及大促的平稳运行。现平台支持 Flink、Spark、Storm 等主流框架。本文主要分享 Flink…

1024 程序员节专题论坛来袭,聚焦企业级开源数据库 openGauss

技术驱动下,现代企业快速发展,产生海量的数据。被称为基础软件三驾马车之一的数据库,一直处于 IT 系统的核心地位,并在技术发展中不断变化。基础数据是“十四五”的重点关注方向,中国数据库正在快速发展崛起&#xff0…

6 张图带你彻底搞懂分布式事务 XA 模式

简介: XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。目前主流的数据库,比如 oracle、DB2 都是支持 XA 协议的。 作者 | 朱晋君 来源 | 阿里巴巴云原生公众号 XA 协议是由 X/O…

龙蜥降世,神龙升级,阿里云投入 20 亿发力操作系统

作者 | 贾凯强、伍杏玲 出品 | CSDN云计算(ID:CSDNcloud)10 月 20 日,阿里巴巴云栖大会继续在杭州进行,与开幕第一天的主论坛不同,第二天活动的主论坛更加聚焦与技术领域和技术实践。20 日上午&#…

连续三年入围 Gartner 容器竞争格局,阿里云容器服务新布局首次公开

简介: 近日,国际知名信息技术咨询机构 Gartner 发布 2021 年容器竞争格局报告,阿里云成为国内唯一连续三年入选的中国企业,产品丰富度与成熟度持续保持全球领先水平。 来源 | 阿里巴巴云原生公众号 近日,国际知名信息…

双向可控硅触发电路图大全

双向可控硅触发电路图一: 为了提高效率,使触发脉冲与交流电压同步,要求每隔半个交流电的周期输出一个触发脉冲,且触发脉冲电压应大于4V,脉冲宽度应大于20us.图中BT为变压器,TPL521-2为光电耦合器&#xff…

视图计算背后的技术架构思考

简介: 5G时代海量视图计算场景,阿里云边缘计算节点聚焦视频上云和处理方向,阿里云高级技术专家为您解读海量视图计算背后的技术与架构能力。 作者:胡帆 数据载体、算力分布正在根本性变化 视频和图片因其强大的信息承载力&…

Graph + AI 2021全球峰会圆满落幕 TigerGraph企业版3.2发布

中国上海,2021年10月22日——由企业级可扩展图分析平台TigerGraph主办的“图创未来无界精彩”Graph AI 2021中国峰会于前日圆满落幕。本次峰会超3500人参与,较往届增长340%,与会者包括来自耐克、特斯拉、联合利华、西门子、通用电气等上百家…

重磅发布 | 阿里云视图计算,边缘计算的主“战”场

简介: 云计算情报局第10期,阿里云产品专家云觉对新产品——视图计算的产品设计背景、产品功能以及应用场景和价值进行了全面的在线揭秘,带领网友探索全新“视”界。 近日云计算情报局第10期,阿里云产品专家云觉对新产品——视图计…

两个对象数组交集_yiduobo的每日leetcode 349.两个数组的交集 amp;amp; 350.两个数组的交集II...

祖传的手艺不想丢了,所以按顺序写一个leetcode的题解。计划每日两题,争取不卡题吧349.两个数组的交集https://leetcode-cn.com/problems/intersection-of-two-arrays/350.两个数组的交集II https://leetcode-cn.com/problems/intersection-of-two-arrays…

flink sql设置并行度_Flink集成Hivestream模式用例

01背景基于前面的文章Flink集成hive bath模式用例knowfarhhy,公众号:大数据摘文Flink 集成Hive,我们继续介绍stream模式下的用例。02流模式读取HiveEnvironmentSettings bsSettings EnvironmentSettings.newInstance().useBlinkPlanner().in…

微软副总裁、Kubernetes 头号贡献者的他,给云原生带来奇迹!

我们做了一个街头采访,调查路人眼中的程序员到底是怎样的?提到程序员,大家似乎都有刻板印象:总是格子衬衫牛仔裤双肩包打扮,总是埋头敲代码,加班是常态……谁说程序员呆板木讷,只会埋头敲一行行…

云原生新边界——阿里云边缘计算云原生落地实践

简介: 日前,在由全球分布式云联盟主办的“Distributed Cloud | 2021 全球分布式云大会云原生论坛”上,阿里云高级技术专家黄玉奇发表了题为《云原生新边界:阿里云边缘计算云原生落地实践》的主题演讲。 作者 | 黄玉奇 来源 | 阿里…

HTTPS 协议到底比 HTTP 协议多些什么?

来源:杰哥的IT之旅作者:阿拉斯加最近卷了一篇 HTTP 协议的相关知识,大家可以一起来看一下~HTTP 简介HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:Worl…