You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "gxcsoccer (GitHub)" <gi...@apache.org> on 2018/11/16 05:19:22 UTC

[GitHub] [incubator-dubbo] gxcsoccer opened issue #2793: [Proposal] dubbo 和 Node.js 框架 egg.js 的对接

## Egg.js 是什么?
Egg.js (下面简称 Egg)是阿里开源的企业级的 Node.js Web 框架,在 Github 上已经超过 1 万个 Star,是目前国内 Node.js 社区最主流的框架。

## Egg.js 的设计哲学

- `约定优于配置:`Egg 约定了统一的加载机制、生命周期以及扩展方式,这样可以最大程度降低开发人员的学习成本
- `插件机制:`Egg 本身是非常轻量的,它的能力更多依赖于其插件生态(目前 Egg 官方 group 下已经有超过 100 个插件)
- `框架的框架:`提供基于 Egg 定制上层框架的能力。每个公司可以根据其实际情况将 Egg 和一系列插件组合起来定制出符合其业务的框架,这也是我们取名为 Egg 的重要原因

## Egg.js 对于 Dubbo 的支持

简单来说,用户只需要开启 [egg-dubbo-rpc](https://github.com/eggjs/egg-dubbo-rpc) 这个插件,就可以实现 Dubbo 服务的发布和调用。 再详细一点,其中和 Dubbo 有关的模块有下面这些:

- [egg-rpc](https://github.com/eggjs/egg-rpc) - 所有 RPC 插件的「父类」,提供了 consumer、provider、registry、test 等模块的抽象。我们希望通过这种抽象,使得在 Egg 生态中各种 RPC 的体验是一致,或者换句话说对于使用者来说甚至感知不到 RPC 的存在
- [egg-dubbo-rpc](https://github.com/eggjs/egg-dubbo-rpc) - 对 egg-rpc 做的 dubbo 定制化,包括协议、内置 dubbo zk registry 实现等
- [egg-rpc-generator](https://github.com/eggjs/egg-rpc-generator) - 这是一个配套的 RPC 工具,它的作用是根据不同的接口描述文件(pb、jar 包)生成 metadata 并进而生成调用的 proxy 代码,通过这个工具我们可以让使用者可以像调用本地方法一样调用 RPC
- [jar2proxy](https://github.com/eggjs/jar2proxy) - dubbo 默认的序列化方式是 hessian,它是一种 java 友好的方式(因为接口定义就是一个 jar 包)但是对于多语言来说就比较棘手。jar2proxy 的作用就是从 jar 包导出接口的元数据,然后生成调用代码。(它已经被集成到 egg-rpc-generator 内部,这样用户只需要知道一个工具即可)
- [dubbo-remoting](https://github.com/dubbo-js/dubbo-remoting) - 这个是我们对 dubbo 协议的实现,它被默认集成到 egg-dubbo-rpc 插件内部。关于协议这块也是可插拔的,我们采用了标准的 stream 接口,便于大家进行扩展


![image](https://cdn.nlark.com/yuque/0/2018/png/88025/1542213403252-b85b5219-f825-4cbe-aaf1-8a7491ff69a4.png)

模块关系图


## 如何贡献 Dubbo 社区

因为 Egg 本身是开放的,我们希望支持所有主流的 RPC,当然也包含 Dubbo。上面列出来的几个模块中有 dubbo-remoting 和 egg-dubbo-rpc 是和 dubbo 强绑定的,其余的都是对所有 RPC 通用的。所以我们希望向 dubbo 社区贡献这两个模块(是否需要将他们 transfer 到 dubbo group 我们想征求大家的意见),另外我们也注意到 dubbo group 下已经有了一个 Node.js 的实现叫 [dubbo2.js](https://github.com/dubbo/dubbo2.js),我们也联系到了他的维护者 @hufeng,他也希望和我们一起共建官方的 dubbo Node.js 实现(很高兴他也是 Egg.js 的使用者),共同推动 dubbo 在 Node.js 社区的推广

谢谢大家




[ Full content available at: https://github.com/apache/incubator-dubbo/issues/2793 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org

[GitHub] [incubator-dubbo] gxcsoccer closed issue #2793: [Proposal] dubbo 和 Node.js 框架 Egg.js 的对接

Posted by "gxcsoccer (GitHub)" <gi...@apache.org>.
[ issue closed by gxcsoccer ]

[ Full content available at: https://github.com/apache/incubator-dubbo/issues/2793 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org