Apache Dubbo Project
Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and documentations, as well as the wiki for news, FAQ, and release notes.
Apache Dubbo是一个基于Java的高性能开源RPC框架。 请访问官方网站以获取快速入门和文档,以及访问Wiki的新闻,常见问题解答和发行说明。
Develop History
2011年,阿里巴巴宣布开源SOA服务化治理框架——Dubbo2.0.7,在当时引起很大关注,并且被众多公司使用,同时在Dubbo的基础上,也有一些公司研发出自己公司的服务化框架,如2014年,当当网的Dubbox,支持http rest协议。当年10月,阿里发布了2.3.11版本后,突然停止维护该项目,2017年突然又宣布重启Dubbo项目,2018年,阿里将该项目捐献给了Apache基金会,进入Apache孵化器,同年更名为Apache Dubbo。
本来在之前的公司用的一直是spring cloud那一套微服务解决方案,没怎么接触dubbo,但是现在由于换工作,其他公司也有不少在使用dubbo,所以还是有必要熟悉一下dubbo这个也算比较流行的RPC框架。
Features
1.面向接口代理的高性能RPC调用:提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节;
2.服务自动注册与发现:支持多种注册中心服务,服务实例上下线实时感知。
3.运行期流量调度:内置条件,脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能
4,智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
5.支持多种配置中心
6.高度可拓展能力:遵循微内核+插件的设计思想,所有核心能力和protocol、transport、serialization被设计为扩展点,平等对待内置实现和第三方实现
7.可视化的实例服务治理与运维:提供丰富的服务治理,运维工具;随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数
Getting Started
首先我们将仓库 git clone 下来
git clone https://github.com/apache/dubbo-samples.git
但是我们发现直接执行他给的 cd 命令是不行的,找不到 java 这个文件夹,所以我们进去 ls 看一下。
发现最新的仓库取消了java这个文件夹,然后我们直接cd dubbo-sample-api
进入 dubbo-sample-api 文件夹
我还以为会有类似于hello-world的文件让我进行操作,发现文件夹下仅有几个文件,然后我们查看 README.md 这个文件。
readme 中写了如下内容:
此示例代码演示了使用纯API方法构建dubbo服务提供商和服务使用者。 在此示例中,多播被用作注册机制,因此必须显式指定系统属性java.net.preferIPv4Stack。
既然如此,我们就输入他提供的命令。
mvn clean package
然后发现本机并没有 maven , 赶紧 apt install 一波。
apt install maven
安装完成后我们再次使用上面的命令。
这个命令会让我们下载很多的东西,稍微等待一会就下载完了。
在经过漫长的下载过程,最终会显示 Build Success 的界面。
之后我们执行下一条指令
mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.provider.Application exec:java
跟之前一样也是下载一系列东西,这次下载的是sample-api
等待一段时间后,突然提示连接不上 zookeeper , 最终build failed。
这里我并没有安装zookeeper,所以这一块我就无法完成。按照我上网搜索的过程,zookeeper起的作用是当一个注册中心来使用,然后在配置文件中修改其zookeeper的地址即可。
在配置完zookeeper之后,在进行用户端的配置
mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.client.Application exec:java
这样就正式启动了 sample-api 服务了。
Hint
详细的流程可以参考