草庐IT

HSF转dubbo

ben2ben 2023-03-28 原文

背景说明

  • HSF是闭源的,考虑用开源产品(dubbo)进行替代。
  • 如果是考虑要从一个rpc框架转成另一个,或许也可以参考本文。
  • 主要思想:进行rpc的发布、订阅操作,其实是集中在2个类里面(provider/consumer),而不是散落在每个实现类里面。而替换成其它rpc时候,就是针对父类(providerFather/consumerFather)进行适配即可。

架构对比


可行性分析

  • HSF、dubbo都出自阿里(只不过后来dubbo开源了,捐给了apache)。它们的开发设计团队好像是不同的,但它们设计思想很类似;
  • 这2种rpc都是基于spring的吧?(意思它们没有依赖springboot,或者其它什么东西);
  • 这2种方式都是通过发布订阅来实现rpc的,都可以使用xml配置,api调用方式。(dubbo还有注解方式,hsf好像没有)

源项目(hsf)说明

  • 1,本地使用,是用alitomcat+pandora的方式。
  • 2,具体版本是:taobao-tomcat-7.0.59、edas-lightweight-server-1.0.0、pandora不记得是哪个版本了,反正不是最新的。(感觉pandora跟alitomcat有对应关系,不然会注册不到注册中心)
  • 3,代码中自定义了注解,集中处理provider、consumer,会把provider注册到注册中心,把consumer缓存到map,调用的时候通过getObject的方式,创建代理对象获取远程结果。整体来讲,用到了继承+切面,这些思想,通过少量侵入,实现了rpc调用

具体实操

  • 1,引入包。需要引入dubbo的包,还有dubbo连edas的包。具体就不列举了,如果注册中心是其它,需要对应引入其它包;
  • 2,通过适配的方式,写关于dubbo的provider/consumer初始化类
  • 3,处理一些异常问题

中间遇到的一些问题

  • 1,dubbo,provider、consumer都需要设置应用名称。如果一个同时启provider、consumer会有点问题,可以用代码解决;
  • 2,注册到注册中心(edas)时候,如果长度过长,超过2048,会注册不进去。这个应该可以通过调整pandora版本解决(具体看pandora 容器版本说明),也可以换注册中心解决;
  • 3,dubbo远程调用返回对象时,对象需要可序列号,这个可以通过改代码解决。

参考资料

有关HSF转dubbo的更多相关文章

  1. Zookeeper、Nacos、Dubbo、Kafka之间的关系 - 2

    1.Zookeeper  Zookeeper是 ApacheHadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高。  Zookeeper的功能主要是它的树形节点来实现的。当有数据变化的时候或者节点过期的时候,会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zookeeper获取最新数据,采用push-pull来做数据更新。服务注册和消费信息直接存储在zk树形节点上,集群下采用过半机制保证服务节点间一致性。 2.Nacos  Nacos是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos是Dub

  2. Dubbo+Zookeeper 实现服务远程调用 - 2

    文章目录一、Dubbo架构图二、Zookeeper注册中心三、SpringBoot整合Dubbo3.1添加依赖3.2配置服务端3.3配置消费端3.4启动测试四、Dubbo-admin管理中心4.1部署服务端4.2部署前端4.3访问控制台提示:以下是本篇文章正文内容,Java系列学习将会持续更新官方文档:https://cn.dubbo.apache.org/zh-cn/#td-block-1一、Dubbo架构图Dubbo是阿里巴巴公司开源的一个高性能、轻量级的JavaRPC框架。致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。三个核心功能:基于接口的远程调用、容错和负

  3. 微服务中远程调用Dubbo与Feign对比 - 2

    实现远程调用的方式Http接口(web接口、RestTemplate+Okhttp)、Feign、RPC调用(Dubbo、Socket编程)、Webservice。什么是Feign?Feign是SpringCloud提供的一个声明式的伪Http客户端,它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一个注解即可。Nacos注册中心很好的兼容了Feign,Feign默认集成了Ribbon,所以在Nacos下使用Fegin默认就实现了负载均衡的效果。什么是Dubbo?Dubbo是阿里巴巴开源的基于Java的高性能RPC分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用

  4. Java/Spring/Dubbo三种SPI机制,到底谁更好? - 2

    SPI机制应用在了大家项目中的很多地方,在很多框架中也有普遍应用,只不过很多人并没有感知。举个例子,为什么我们在项目中引入mysql-connector的jar包,就可以直接连接MySQL数据库了?本篇文章就来介绍一下SPI,聊聊Java、Spring、Dubbo中的SPI机制。SPISPI(ServiceProviderInterface),是一种服务发现机制。SPI的本质是将接口的实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载对应接口的实现类。这样就可以在运行时,获取接口的实现类。通过这一特性,我们可以很容易地通过SPI机制为程序提供拓展功能。JavaSPIJavaSPI机

  5. 5 分钟读懂开源服务框架 Dubbo 及其最新规划 - 2

    Dubbo简介一句话定义ApacheDubbo是一款微服务开发框架,它帮助解决微服务开发中的通信问题,同时为构建企业级微服务的提供服务治理能力,Dubbo不绑定编程语言,我们的目标是为所有主流语言提供对等的微服务开发体验。基本架构Dubbo从架构图上分为数据面和控制面。在数据面,使用Dubbo开发的微服务进程间基于RPC协议通信。DubboAdmin控制面作为服务治理的抽象入口,由一系列可选的服务治理组件构成,负责Dubbo集群的服务发现、流量管控策略、可视化监测。行业应用Dubbo设计用于解决阿里巴巴内部大规模微服务集群实践难题,当前已被广泛应用于几乎所有行业的微服务实践中。以阿里巴巴为例,

  6. 图解Dubbo,Dubbo服务提供者详解 - 2

    今天详细的分解一下Dubbo服务提供者,实现快速入门,丰富个人简历,提高面试level,给自己增加一点谈资,秒变面试小达人,BAT不是梦。三分钟你将学会:什么是服务提供者服务提供者的配置服务提供者集群服务提供者的网络通信服务提供者的线程模型服务提供者的动态配置当今分布式系统已经成为企业中不可或缺的一部分。在分布式系统中,服务网格是一个重要的组成部分。服务网格用于管理和调度服务,以确保系统的可用性和可扩展性。其中Dubbo是一个流行的服务网格框架,它提供了一种简单、可靠、高性能的方式来构建分布式系统。在Dubbo中,服务提供者是框架的核心组件之一,它负责提供服务并将服务暴露给外部应用程序。本文将

  7. 【项目方案】DUBBO 负载均衡策之略哈希一致的应用 - 2

    🥳作者:伯子南😎坚信:好记性不如乱笔头,独乐乐不如众乐乐💪个人主页:https://blog.csdn.net/qq_34577234?spm=1010.2135.3001.5421👬🏻觉得博主文章不错的话,可以三连支持一下!如有需要我的支持,请私信!👀前言本周新文来啦!本文是结合工作中遇到的问题,对DUBBO负载均衡的学习与应用。希望各位读者大佬能够从中获益,或者给出一些指导意见。文章目录👀前言👉🏼问题背景与解决思路🪒1.项目架构:🧪2.问题根源:📯3.问题解决思路:💻DUBBO负载均衡🧲常见内置负载均衡策略RandomRoundRobinLeastActiveShortestRespons

  8. 【项目方案】DUBBO 负载均衡策之略哈希一致的应用 - 2

    🥳作者:伯子南😎坚信:好记性不如乱笔头,独乐乐不如众乐乐💪个人主页:https://blog.csdn.net/qq_34577234?spm=1010.2135.3001.5421👬🏻觉得博主文章不错的话,可以三连支持一下!如有需要我的支持,请私信!👀前言本周新文来啦!本文是结合工作中遇到的问题,对DUBBO负载均衡的学习与应用。希望各位读者大佬能够从中获益,或者给出一些指导意见。文章目录👀前言👉🏼问题背景与解决思路🪒1.项目架构:🧪2.问题根源:📯3.问题解决思路:💻DUBBO负载均衡🧲常见内置负载均衡策略RandomRoundRobinLeastActiveShortestRespons

  9. 【Spring Cloud Alibaba】(四)Dubbo框架介绍 及 整合Dubbo和OpenAI实战【文末附源码】 - 2

    系列目录【SpringCloudAlibaba】(一)微服务介绍及Nacos注册中心实战【SpringCloudAlibaba】(二)微服务调用组件Feign原理+实战【SpringCloudAlibaba】(三)OpenFeign扩展点实战+源码详解本文目录系列目录前言SpringCloud与Dubbo的关系Dubbo架构一、项目说明二、新建父工程gg-parent1.pom.xml依赖二、API接口包gg-api1.数据传输对象DTO2.接口服务Service3.pom.xml依赖三、服务提供方gg-chatgpt1.pom.xml依赖2.application.properties3.接

  10. 【Spring Cloud Alibaba】(四)Dubbo框架介绍 及 整合Dubbo和OpenAI实战【文末附源码】 - 2

    系列目录【SpringCloudAlibaba】(一)微服务介绍及Nacos注册中心实战【SpringCloudAlibaba】(二)微服务调用组件Feign原理+实战【SpringCloudAlibaba】(三)OpenFeign扩展点实战+源码详解本文目录系列目录前言SpringCloud与Dubbo的关系Dubbo架构一、项目说明二、新建父工程gg-parent1.pom.xml依赖二、API接口包gg-api1.数据传输对象DTO2.接口服务Service3.pom.xml依赖三、服务提供方gg-chatgpt1.pom.xml依赖2.application.properties3.接

随机推荐