美文网首页
dubbo跨语言的研究(c++)

dubbo跨语言的研究(c++)

作者: 雨中星辰0 | 来源:发表于2020-02-12 11:07 被阅读0次
作者 时间
雨中星辰 2020-02-12

各种方式的优缺点

dubbo协议 http协议 thrift协议 jni(用java封装)
c++服务端,c++客户端 不满足 能调用,但与服务总线(dubbo)无关 能调用,但与服务总线(dubbo)无关 满足
C++服务端,java客户端 不满足 能调用,但与服务总线(dubbo)无关 能调用,但与服务总线(dubbo)无关 满足
java服务端,C++客户端 不满足 不满足 满足 满足
java服务端,java客户端 满足 满足 满足 满足
推荐的场景 服务端客户端都为java 服务端为java,客户端为其他,如:APP、web等 用于不同语言的服务端与客户端的通信 用于c、c++与java交互的环境使用
特点 可以完整的使用服务总线(dubbo)的功能 该场景客户端实际上不是dubbo,原dubbo的一些功能不能使用,例如负载均衡、权重等 1. 服务器需要安装thrift,部分版本过低的服务器可能安装会有困难,例如:凝思6.0.40 只支持c\c++,且该方案需要工作量较大,要么制定统一标准,例如,所有的返回值,都返回统一的类型,接口都使用简单类型等。如果要保持原接口不变的话,需要每个接口自行写jni的实现。

目前来看jni反而是一个比较通用的方法,
c++的服务端使用jni对服务进行包装,通过服务总线(dubbo)发布服务,最终打包成一个jar包,启动服务。

c++客户端也使用jni方式通过服务总线(dubbo)调用服务。

市场上别人是怎么做的?

我简单研究了githup中的dubbo-python、dubbo-node-client、dubbo-php-client。

基本都是这样做的:

  1. 服务端暴露http类型的协议,例如:jsonRPC
  2. 他们各自的客户端连接zookeeper获取要调用的服务的服务端信息
  3. 进行客户端的负载均衡,选取一个服务端
  4. 将要调用的服务、方法及参数,组成jsonrpc结构,进行调用

问题,这些各个语言的dubbo库,都只是客户端的,对于服务端没有支持。

相关文章

  • dubbo跨语言的研究(c++)

    作者时间雨中星辰2020-02-12 各种方式的优缺点 dubbo协议http协议thrift协议jni(用jav...

  • Java基础知识

    初识Java Java是一种跨平台的,面对对象的程序设计语言。不仅吸收了C++语言的各种优点,还摒弃了C++里难以...

  • 一种纯粹的C++回调OC函数/方法的方式

    起因 因为在做跨端SDK,语言用的C++,想尽量把C++代码和OC代码解耦,OC调用C++倒是简单,改个源文件的名...

  • RPC框架 之 Apach thrift

    Thrift 1,Apache Thrift 主要用于各个服务之间的RPC通信,支持跨语言,常用语言:C++, J...

  • thrift 简介一

    Thrift最初由Facebook研发,主要用于各个服务之间的RPC通信,支持跨语言,常用的语言比如C++, Ja...

  • 大牛查漏补缺 -- C语言注意点

    前言:C语言是Java、Objective-C、C++等高级语言的基础、也是跨平台开发的基础,指针是C语言的重中之...

  • C 语言编程利器 之CLion

    C 语言编程利器 之CLion (内附C/C++学习资料) CLion 是一款专为开发 C 及 C++ 所设计的跨...

  • Java学习(1)——简介

    什么是Java语言 编译型+解释型语言。通过解释方式来执行的语言。跨平台。相比C++简洁得多,提高了可靠性,除去了...

  • C++语言的15个晦涩特性

    这个列表收集了C++ 语言的一些晦涩(Obscure)特性,是我经年累月研究这门语言的各个方面收集起来的。C++非...

  • 虚拟机(三)-JVM 、DVM 、ART简单对比

    我们知道,java是一种编译+解释的语言。最主要的目的是跨平台,为了实现跨平台,就决定了不能像 c,c++ 那样直...

网友评论

      本文标题:dubbo跨语言的研究(c++)

      本文链接:https://www.haomeiwen.com/subject/xhvqfhtx.html