| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> |
| <meta name="description" content=""> |
| <meta name="author" content=""> |
| <link rel="icon" href="./sources/images/logo.ico"> |
| <title>Dubbo</title> |
| |
| <!-- Bootstrap core CSS --> |
| <link href="./sources/bootstrap/css/bootstrap.min.css" rel="stylesheet"> |
| <link rel="stylesheet" type="text/css" href="sources/google-code-prettify/prettify.css"> |
| <script type="text/javascript" src="sources/google-code-prettify/prettify.js"></script> |
| |
| <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> |
| <link href="./sources/bootstrap/assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet"> |
| |
| <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> |
| <!--[if lt IE 9]> |
| <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> |
| <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> |
| <![endif]--> |
| |
| <!-- Custom styles for this template --> |
| <link href="carousel.css" rel="stylesheet"> |
| <link href="./sources/awesome/font-awesome.min.css" rel="stylesheet"> |
| |
| <script src="https://use.fontawesome.com/4c7d1ecd7a.js"></script> |
| </head> |
| <!-- NAVBAR |
| ================================================== --> |
| <body onload="PR.prettyPrint()"> |
| <div class="navbar-wrapper"> |
| <div class="container"> |
| |
| <nav class="navbar navbar-inverse navbar-fixed-top"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <a class="navbar-brand" href="#">Dubbo Project</a> |
| </div> |
| <div id="navbar" style="float:right;" class="navbar-collapse collapse"> |
| <ul class="nav navbar-nav"> |
| <li class="dropdown"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Docs<span class="caret"></span></a> |
| <ul class="dropdown-menu"> |
| <li><a href="user-guide/" >使用者指南</a></li> |
| <li><a href="developer-guide/" >开发者指南</a></li> |
| <li><a href="admin-guide/" >管理员指南</a></li> |
| </ul> |
| </li> |
| <li><a href="#">Releases</a></li> |
| <li><a href="https://gitter.im/alibaba/dubbo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge">Community</a></li> |
| <li><a href="#">FAQ</a></li> |
| </ul> |
| </div> |
| </div> |
| </nav> |
| |
| </div> |
| </div> |
| |
| |
| <div class="jumbotron"> |
| <div class="container"> |
| <h1>Dubbo <a href="https://github.com/alibaba/dubbo"><i class="small fa fa-github"></i></a></h1> |
| <p>一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案.</p> |
| <p style="margin"> |
| <a class="btn btn-info btn-lg" href="https://github.com/alibaba/dubbo#quick-start" role="button">Quick Start »</a> |
| <a class="btn btn-info btn-lg" style="margin-left:30px;" href="#tutorial" role="button">Tutorials »</a> |
| </p> |
| </div> |
| </div> |
| |
| |
| <div class="container"> |
| <div class="row"> |
| |
| <div class="col-sm-8 blog-main"> |
| |
| <div class="blog-post"> |
| |
| <h2 class="blog-post-title">Overview</h2> |
| <p>Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点: |
| </p> |
| <div style="margin:10px 0 10px 0;"> |
| <img src="./sources/images/alibaba.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| <img src="./sources/images/1688.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| <img src="./sources/images/aliexpress.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| <img src="./sources/images/aliyun.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| <img src="./sources/images/aliloan.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| <img src="./sources/images/alibado.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| <img src="./sources/images/laiwang.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| <img src="./sources/images/lp.png" class="img-rounded" style="margin:5px 5px 5px 0;"> |
| </div> |
| <p>自开源后,已有不少非阿里系公司在使用Dubbo,参见:<a href="#"></a>已知用户</p> |
| <br/> |
| <h4>那么,Dubbo是什么?</h4> |
| |
| <p>Dubbo |ˈdʌbəʊ| 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 |
| 其核心部分包含: |
| <ul class="list-group-item-heading"> |
| <li>远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。</li> |
| <li>集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持</li> |
| <li>自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。</li> |
| </ul> |
| |
| </p> |
| <br/> |
| <h4>Dubbo能做什么?</h4> |
| <ul class="list-group-item-heading"> |
| <li>透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。</li> |
| <li>软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。</li> |
| <li>服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。</li> |
| </ul> |
| <hr> |
| |
| <!-- ********Build this demo step by step****** --> |
| <h2><a name="tutorial">Tutorials</a></h2> |
| |
| <p> |
| 通过一个简单的demo从代码层面介绍了如何使用dubbo开发一个远程通信服务。快速启动&源码下载,参见<a href="https://github.com/alibaba/dubbo">Github</a>。<br/> |
| 通过这个例子,你将学会:<br/> |
| <ul class="list-group-item-heading"> |
| <li>定义一个远程服务接口</li> |
| <li>provider发布远程服务到注册中心</li> |
| <li>consumer自动发现远程服务并完成服务调用</li> |
| </ul> |
| </p> |
| <div class="bg-warning" style="padding:8px;"> |
| <p><strong>开始前请注意:</strong></p> |
| <ul class="list-group-item-heading"> |
| <li>示例使用的是Dubbo推荐的<a href="user-guide/configuration/xml.html" >Spring配置方式</a>。要使用API配置请参考<a href="user-guide/configuration/api.html">API配置</a></li> |
| <li>示例使用<a href="http://dubbo.io/user-guide/reference-registry/multicast.html">多播模式</a>实现服务自动注册与发现,生产环境中,一般要部署单独的<a href="user-guide/reference-registry/introduction.html" >注册中心</a></li> |
| </ul> |
| </div> |
| <br/> |
| <h4>定义接口</h4> |
| <p>定义服务接口: (该接口需单独打包,在服务提供方和消费方共享)<br/> |
| <a href="https://github.com/alibaba/dubbo/blob/master/dubbo-demo/dubbo-demo-api/src/main/java/com/alibaba/dubbo/demo/DemoService.java">DemoService.java</a> |
| </p> |
| <pre class="prettyprint "> |
| package com.alibaba.dubbo.demo; |
| |
| public interface DemoService { |
| String sayHello(String name); |
| } |
| </pre> |
| <br/> |
| <h4>Provider实现</h4> |
| <p>服务提供方实现接口(对服务消费方隐藏实现):<br/> |
| <a href="https://github.com/alibaba/dubbo/blob/master/dubbo-demo/dubbo-demo-provider/src/main/java/com/alibaba/dubbo/demo/provider/DemoServiceImpl.java">DemoServiceImpl.java</a> |
| </p> |
| <pre class="prettyprint lang-java"> |
| package com.alibaba.dubbo.demo.provider; |
| import com.alibaba.dubbo.demo.DemoService; |
| |
| public class DemoServiceImpl implements DemoService { |
| public String sayHello(String name) { |
| return "Hello " + name; |
| } |
| } |
| </pre> |
| <p>用Spring配置声明暴露服务:<br/> |
| <a href="https://github.com/alibaba/dubbo/blob/master/dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml">dubbo-demo-provider.xml</a> |
| </p> |
| <pre class="prettyprint lang-xml"> |
| <?xml version="1.0" encoding="UTF-8"?> |
| <beans xmlns="http://www.springframework.org/schema/beans" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" |
| xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> |
| |
| <!-- 提供方应用信息,用于计算依赖关系 --> |
| <dubbo:application name="demo-provider" /> |
| |
| <!-- 使用multicast广播注册中心暴露服务地址 --> |
| <dubbo:registry address="multicast://224.5.6.7:1234" /> |
| |
| <!-- 用dubbo协议在20880端口暴露服务 --> |
| <dubbo:protocol name="dubbo" port="20880" /> |
| |
| <!-- 声明需要暴露的服务接口 --> |
| <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" /> |
| |
| <!-- 和本地bean一样实现服务 --> |
| <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" /> |
| |
| </beans> |
| </pre> |
| <p>加载Spring配置:<br/> |
| <a href="https://github.com/alibaba/dubbo/blob/master/dubbo-demo/dubbo-demo-provider/src/main/java/com/alibaba/dubbo/demo/provider/Provider.java">Provider.java</a> |
| </p> |
| <pre class="prettyprint lang-java"> |
| import org.springframework.context.support.ClassPathXmlApplicationContext; |
| |
| public class Provider { |
| public static void main(String[] args) throws Exception { |
| ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"META-INF/spring/dubbo-demo-provider.xml"}); |
| context.start(); |
| |
| System.in.read(); // 按任意键退出 |
| } |
| } |
| </pre> |
| <br/> |
| <h4>Consumer实现</h4> |
| <p>通过Spring配置引用远程服务:<br/> |
| <a href="https://github.com/alibaba/dubbo/blob/master/dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml">dubbo-demo-consumer.xml</a> |
| </p> |
| <pre class="prettyprint lang-xml"> |
| <?xml version="1.0" encoding="UTF-8"?> |
| <beans xmlns="http://www.springframework.org/schema/beans" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" |
| xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> |
| |
| <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> |
| <dubbo:application name="demo-consumer" /> |
| |
| <!-- 使用multicast广播注册中心暴露发现服务地址 --> |
| <dubbo:registry address="multicast://224.5.6.7:1234" /> |
| |
| <!-- 生成远程服务代理,可以和本地bean一样使用demoService --> |
| <dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" /> |
| |
| </beans> |
| </pre> |
| <p>加载Spring配置,并调用远程服务:(也可以使用IoC注入)<br/> |
| <a href="https://github.com/alibaba/dubbo/blob/master/dubbo-demo/dubbo-demo-consumer/src/main/java/com/alibaba/dubbo/demo/consumer/Consumer.java">Consumer.java</a> |
| </p> |
| <pre class="prettyprint lang-java"> |
| import org.springframework.context.support.ClassPathXmlApplicationContext; |
| import com.alibaba.dubbo.demo.DemoService; |
| |
| public class Consumer { |
| public static void main(String[] args) throws Exception { |
| ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"META-INF/spring/dubbo-demo-consumer.xml"}); |
| context.start(); |
| |
| DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理 |
| String hello = demoService.sayHello("world"); // 执行远程方法 |
| |
| System.out.println( hello ); // 显示调用结果 |
| } |
| } |
| </pre> |
| </div><!-- /.blog-post --> |
| </div><!-- /.blog-main --> |
| |
| <div style="margin-left:45px;margin-top:30px;" class="col-sm-3 col-sm-offset-0 blog-sidebar"> |
| |
| <div class="panel panel-default"> |
| <div class="panel-heading"> |
| <h3 class="panel-title">Notice</h3> |
| </div> |
| <div class="panel-body"> |
| |
| dubbo项目将正式得到官方维护与支持,我们期待这款优秀的开源项目在未来持续保持活力,引领开源服务框架 |
| <br/><br/> |
| <span style="margin-left:90px;">--Alibaba dubbo-team</span> |
| </div> |
| </div> |
| |
| |
| <div class="panel panel-default"> |
| <div class="panel-heading"> |
| <h3 class="panel-title">Documentation</h3> |
| </div> |
| <div class="panel-body"> |
| <ol class="list-unstyled" style="margin-left:5px;"> |
| <li><a href="user-guide/" >使用者指南</a></li> |
| <li><a href="developer-guide/" >开发者指南</a></li> |
| <li><a href="admin-guide/" >管理员指南</a></li> |
| </ol> |
| </div> |
| </div> |
| |
| <div class="panel panel-default"> |
| <div class="panel-heading"> |
| <h3 class="panel-title">Releases</h3> |
| </div> |
| <div class="panel-body"> |
| Release信息将会在这里发布。 |
| </div> |
| </div> |
| <div class="panel panel-default"> |
| <div class="panel-heading"> |
| <h3 class="panel-title">Others</h3> |
| </div> |
| <div class="panel-body"> |
| |
| </div> |
| </div> |
| </div><!-- /.blog-sidebar --> |
| |
| </div><!-- /.row --> |
| |
| <!-- FOOTER --> |
| <footer> |
| <p class="pull-right"><a href="#">Back to top</a></p> |
| <p>© 2017 Alibaba dubbo-team</p> |
| </footer> |
| |
| </div><!-- /.container --> |
| |
| |
| <!-- Bootstrap core JavaScript |
| ================================================== --> |
| <!-- Placed at the end of the document so the pages load faster --> |
| <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> |
| <script>window.jQuery || document.write('<script src="./sources/bootstrap/assets/js/vendor/jquery.min.js"><\/script>')</script> |
| <script src="./sources/bootstrap/js/bootstrap.min.js"></script> |
| <!-- Just to make our placeholder images work. Don't actually copy the next line! --> |
| <script src="./sources/bootstrap/assets/js/vendor/holder.min.js"></script> |
| <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> |
| <script src="./sources/bootstrap/assets/js/ie10-viewport-bug-workaround.js"></script> |
| </body> |
| </html> |