This is an automated email from the ASF dual-hosted git repository. lixiaojie pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-website.git
The following commit(s) were added to refs/heads/asf-site by this push: new b15f236 1. new a blog to introduce dubbo2.7 new features 2. fomart blog.js 3. change my chinese name to english nick name (#337) b15f236 is described below commit b15f236627b8290e3fd1953ba30c3d1faa22b1a7 Author: xujingfeng <250577...@qq.com> AuthorDate: Fri Mar 22 14:09:42 2019 +0800 1. new a blog to introduce dubbo2.7 new features 2. fomart blog.js 3. change my chinese name to english nick name (#337) --- blog/zh-cn/dubbo-27-features.md | 230 +++++++++ site_config/blog.js | 1037 ++++++++++++++++++++------------------- 2 files changed, 752 insertions(+), 515 deletions(-) diff --git a/blog/zh-cn/dubbo-27-features.md b/blog/zh-cn/dubbo-27-features.md new file mode 100644 index 0000000..22c4c5a --- /dev/null +++ b/blog/zh-cn/dubbo-27-features.md @@ -0,0 +1,230 @@ +--- +title: Dubbo2.7 三大新特性详解 +keywords: Dubbo2.7 +description: 异步化改造,三大中心改造,服务治理增强 +--- + +# + +## 1 背景介绍 + +自 2017 年 7 月阿里重启 Dubbo 开源,到目前为止 github star 数,contributor 数都有了非常大的提升。2018 年 2 月 9 日阿里决定将 Dubbo 项目贡献给 Apache,经过一周的投票,顺利成为了 Apache 的孵化项目,也就是大家现在看到的 **Incubator Dubbo**。预计在 2019 年 4 月,Dubbo 可以达成毕业,成为 Apache 的顶级项目。 + +## 2 分支介绍 + +![分支](http://kirito.iocoder.cn/image-20190321153455566.png) + +Dubbo 目前有如图所示的 5 个分支,其中 2.7.1-release 只是一个临时分支,忽略不计,对其他 4 个分支进行介绍。 + +- 2.5.x 近期已经通过投票,Dubbo 社区即将停止对其的维护。 +- 2.6.x 为长期支持的版本,也是 Dubbo 贡献给 Apache 之前的版本,其包名前缀为:com.alibaba,JDK 版本对应 1.6。 +- 3.x-dev 是前瞻性的版本,对 Dubbo 进行一些高级特性的补充,如支持 rx 特性。 +- master 为长期支持的版本,版本号为 2.7.x,也是 Dubbo 贡献给 Apache 的开发版本,其包名前缀为:org.apache,JDK 版本对应 1.8。 + +> 如果想要研究 Dubbo 的源码,建议直接浏览 master 分支。 + +## 3 Dubbo 2.7 新特性 + +Dubbo 2.7.x 作为 Apache 的孵化版本,除了代码优化之外,还新增了许多重磅的新特性,本文将会介绍其中最典型的三个新特性: + +- 异步化改造 +- 三大中心改造 +- 服务治理增强 + +## 4 异步化改造 + +### 4.1 几种调用方式 + +![调用方式](http://kirito.iocoder.cn/image-20190321160844133.png) + +在远程方法调用中,大致可以分为这 4 种调用方式。oneway 指的是客户端发送消息后,不需要接受响应。对于那些不关心服务端响应的请求,比较适合使用 oneway 通信。 + +> 注意,void hello() 方法在远程方法调用中,不属于 oneway 调用,虽然 void 方法表达了不关心返回值的语义,但在 RPC 层面,仍然需要做通信层的响应。 + +sync 是最常用的通信方式,也是默认的通信方法。 + +future 和 callback 都属于异步调用的范畴,他们的区别是:在接收响应时,future.get() 会导致线程的阻塞;callback 通常会设置一个回调线程,当接收到响应时,自动执行,不会对当前线程造成阻塞。 + +### 4.2 Dubbo 2.6 异步化 + +异步化的优势在于客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。介绍 2.7 中的异步化改造之前,先回顾一下如何在 2.6 中使用 Dubbo 异步化的能力。 + +1. 将同步接口声明成 `async=true` + ```xml + <dubbo:reference id="asyncService" interface="org.apache.dubbo.demo.api.AsyncService" async="true"/> + ``` + ```java + public interface AsyncService { + String sayHello(String name); + } + ``` +2. 通过上下文类获取 future + ```java + AsyncService.sayHello("Han Meimei"); + Future<String> fooFuture = RpcContext.getContext().getFuture(); + fooFuture.get(); + ``` + +可以看出,这样的使用方式,不太符合异步编程的习惯,竟然需要从一个上下文类中获取到 Future。如果同时进行多个异步调用,使用不当很容易造成上下文污染。而且,Future 并不支持 callback 的调用方式。这些弊端在 Dubbo 2.7 中得到了改进。 + +### 4.3 Dubbo 2.7 异步化 + +1. 无需配置中特殊声明,显式声明异步接口即可 + ```java + public interface AsyncService { + String sayHello(String name); + default CompletableFuture<String> sayHiAsync(String name) { + return CompletableFuture.completedFuture(sayHello(name)); + } + } + ``` +2. 使用 callback 方式处理返回值 + ```java + CompletableFuture<String> future = asyncService.sayHiAsync("Han MeiMei"); + future.whenComplete((retValue, exception) -> { + if (exception == null) { + System.out.println(retValue); + } else { + exception.printStackTrace(); + } + }); + ``` + +Dubbo 2.7 中使用了 JDK1.8 提供的 `CompletableFuture` 原生接口对自身的异步化做了改进。`CompletableFuture` 可以支持 future 和 callback 两种调用方式,用户可以根据自己的喜好和场景选择使用,非常灵活。 + +### 4.4 异步化设计 FAQ + +Q:如果 RPC 接口只定义了同步接口,有办法使用异步调用吗? + +A:2.6 中的异步调用唯一的优势在于,不需要在接口层面做改造,又可以进行异步调用,这种方式仍然在 2.7 中保留;使用 Dubbo 官方提供的 compiler hacker,编译期自动重写同步方法,请[在此](https://github.com/dubbo/dubbo-async-processor#compiler-hacker-processer)讨论和跟进具体进展。 + +--- + +Q:关于异步接口的设计问题,为何不提供编译插件,根据原接口,自动编译出一个 XxxAsync 接口? + +A:Dubbo 2.7 采用过这种设计,但接口的膨胀会导致服务类的增量发布,而且接口名的变化会影响服务治理的一些相关逻辑,改为方法添加 Async 后缀相对影响范围较小。 + +--- + +Q:Dubbo 分为了客户端异步和服务端异步,刚刚你介绍的是客户端异步,为什么不提服务端异步呢? + +A:Dubbo 2.7 新增了服务端异步的支持,但实际上,Dubbo 的业务线程池模型,本身就可以理解为异步调用,个人认为服务端异步的特性较为鸡肋。 + +## 5 三大中心改造 + +三大中心指的:注册中心,元数据中心,配置中心。 + +在 2.7 之前的版本,Dubbo 只配备了注册中心,主流使用的注册中心为 zookeeper。新增加了元数据中心和配置中心,自然是为了解决对应的痛点,下面我们来详细阐释三大中心改造的原因。 + +### 5.1 元数据改造 + +元数据是什么?元数据定义为描述数据的数据,在服务治理中,例如服务接口名,重试次数,版本号等等都可以理解为元数据。在 2.7 之前,元数据一股脑丢在了注册中心之中,这造成了一系列的问题: + +**推送量大 -> 存储数据量大 -> 网络传输量大 -> 延迟严重** + +生产者端注册 30+ 参数,有接近一半是不需要作为注册中心进行传递;消费者端注册 25+ 参数,只有个别需要传递给注册中心。有了以上的理论分析,Dubbo 2.7 进行了大刀阔斧的改动,只将真正属于服务治理的数据发布到注册中心之中,大大降低了注册中心的负荷。 + +同时,将全量的元数据发布到另外的组件中:元数据中心。元数据中心目前支持 redis(推荐),zookeeper。这也为 Dubbo 2.7 全新的 Dubbo Admin 做了准备,关于新版的 Dubbo Admin,我将会后续准备一篇独立的文章进行介绍。 + +示例:使用 zookeeper 作为元数据中心 + +```xml +<dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/> +``` + +### 5.2 Dubbo 2.6 元数据 + +```shell +dubbo://30.5.120.185:20880/com.alibaba.dubbo.demo.DemoService? +anyhost=true& +application=demo-provider& +interface=com.alibaba.dubbo.demo.DemoService& +methods=sayHello& +bean.name=com.alibaba.dubbo.demo.DemoService& +dubbo=2.0.2& +executes=4500& +generic=false& +owner=kirito& +pid=84228& +retries=7& +side=provider& +timestamp=1552965771067 +``` + +从本地的 zookeeper 中取出一条服务数据,通过解码之后,可以看出,的确有很多参数是不必要。 + +### 5.3 Dubbo 2.7 元数据 + +在 2.7 中,如果不进行额外的配置,zookeeper 中的数据格式仍然会和 Dubbo 2.6 保持一致,这主要是为了保证兼容性,让 Dubbo 2.6 的客户端可以调用 Dubbo 2.7 的服务端。如果整体迁移到 2.7,则可以为注册中心开启简化配置的参数: + +```xml +<dubbo:registry address=“zookeeper://127.0.0.1:2181” simplified="true"/> +``` + +Dubbo 将会只上传那些必要的服务治理数据,一个简化过后的数据如下所示: + +```shell +dubbo://30.5.120.185:20880/org.apache.dubbo.demo.api.DemoService? +application=demo-provider& +dubbo=2.0.2& +release=2.7.0& +timestamp=1552975501873 +``` + +对于那些非必要的服务信息,仍然全量存储在元数据中心之中: + +![元数据](http://kirito.iocoder.cn/image-20190321175852034.png) + +> 元数据中心的数据可以被用于服务测试,服务 MOCK 等功能。目前注册中心配置中 simplified 的默认值为 false,因为考虑到了迁移的兼容问题,在后续迭代中,默认值将会改为 true。 + +### 5.4 配置中心支持 + +衡量配置中心的必要性往往从三个角度出发: + +1. 分布式配置统一管理 + +2. 动态变更推送 + +3. 安全性 + +Spring Cloud Config, Apollo, Nacos 等分布式配置中心组件都对上述功能有不同程度的支持。在 2.7 之前的版本中,在 zookeeper 中设置了部分节点:configurators,routers,用于管理部分配置和路由信息,它们可以理解为 Dubbo 配置中心的雏形。在 2.7 中,Dubbo 正式支持了配置中心,目前支持的几种注册中心 Zookeeper,Apollo,Nacos(2.7.1-release 支持)。 + +在 Dubbo 中,配置中心主要承担了两个作用 + +- 外部化配置。启动配置的集中式存储 + +- 服务治理。服务治理规则的存储与通知 + +示例:使用 Zookeeper 作为配置中心 + +```xml +<dubbo:config-center address="zookeeper://127.0.0.1:2181"/> +``` + +引入配置中心后,需要注意配置项的覆盖问题,优先级如图所示 + +![配置覆盖优先级](http://kirito.iocoder.cn/configuration.jpg) + +## 6 服务治理增强 + +我更倾向于将 Dubbo 当做一个服务治理框架,而不仅仅是一个 RPC 框架。在 2.7 中,Dubbo 对其服务治理能力进行了增强,增加了标签路由的能力,并抽象出了应用路由和服务路由的概念。在最后一个特性介绍中,着重对标签路由 TagRouter 进行探讨。 + +> 在服务治理中,路由层和负载均衡层的对比。区别 1,Router:m 选 n,LoadBalance:n 选 1;区别 2,路由往往是叠加使用的,负载均衡只能配置一种。 + +在很长的一段时间内,Dubbo 社区经常有人提的一个问题是:Dubbo 如何实现流量隔离和灰度发布,直到 2.7 提供了标签路由,用户可以使用这个功能,来实现上述的需求。 + +![标签路由](http://kirito.iocoder.cn/image-20190321191620078.png) + +标签路由提供了这样一个能力,当调用链路为 A -> B -> C -> D 时,用户给请求打标,最典型的打标方式可以借助 attachment(他可以在分布式调用中传递下去),调用会优先请求那些匹配的服务端,如 A -> B,C -> D,由于集群中未部署 C 节点,则会降级到普通节点。 + +打标方式会收到集成系统差异的影响,从而导致很大的差异,所以 Dubbo 只提供了 `RpcContext.getContext().setAttachment()` 这样的基础接口,用户可以使用 SPI 扩展,或者 server filter 的扩展,对测试流量进行打标,引导进入隔离环境/灰度环境。 + +新版的 Dubbo Admin 提供了标签路由的配置项: + +![标签路由配置](http://kirito.iocoder.cn/image-20190321192540774.png) + +Dubbo 用户可以在自己系统的基础上对标签路由进行二次扩展,或者借鉴标签路由的设计,实现自己系统的流量隔离,灰度发布。 + +## 7 总结 + +本文介绍了 Dubbo 2.7 比较重要的三大新特性:异步化改造,三大中心改造,服务治理增强。Dubbo 2.7 还包含了很多功能优化、特性升级,可以在项目源码的 [CHANGES.md](https://github.com/apache/incubator-dubbo/blob/master/CHANGES.md) 中浏览全部的改动点。最后提供一份 Dubbo 2.7 的升级文档:[2.7迁移文档](http://dubbo.incubator.apache.org/zh-cn/docs/user/versions/version-270.html),欢迎体验。 diff --git a/site_config/blog.js b/site_config/blog.js index af3caca..06371e8 100644 --- a/site_config/blog.js +++ b/site_config/blog.js @@ -1,518 +1,525 @@ export default { - 'en-us': { - barText: 'Blog', - postsTitle: 'All posts', - list: [ - { - title: 'How to use Fescar to ensure consistency between Dubbo Microservices', - author: '@slievrly', - dateStr: 'Jan 17th, 2019', - desc: 'This blog describes details of using Fescar to ensure consistency between Dubbo Microservices', - link: '/en-us/blog/dubbo-fescar.html', - }, - { - title: 'Prepare an Apache Release', - author: 'Jun Liu', - dateStr: 'Sep 2nd, 2018', - desc: 'How to prepare an Apache release', - link: '/en-us/blog/prepare-an-apache-release.html', - }, - { - title: 'How to implement a fully asynchronous calls chain based on Dubbo', - author: '@Siqi Zhuo', - dateStr: 'Aug 13th, 2018', - desc: 'Introduce the new feature of implementing the full asynchronous programming in Dubbo 2.7.0, mainly about previous asynchronous method before 2.6.x versions, enhancement in version 2.7.0 and a few examples to demonstrate its usage', - link: '/en-us/blog/dubbo-new-async.html', - }, - { - title: 'Generic invoke of Dubbo', - author: '@ChasePGit', - dateStr: 'August 14th,2018', - desc: 'This blog describes details of Dubbo generic invoke including usage and examples.', - link: '/en-us/blog/dubbo-generic-invoke.html', - }, - { - title: 'Several ways about synchronous/asynchronous invoke of Dubbo', - author: '@Hou Yongxu', - dateStr: 'August 14th,2018', - desc: 'This blog describes several ways about synchronous/asynchronous invoke of Dubbo', - link: '/en-us/blog/dubbo-invoke.html', - }, - { - title: 'Implementation of cross-language calls by dubbo2.js', - author: '@Stella0824', - dateStr: 'August 14th, 2018', - desc: 'This blog describes how to use dubbo2.js for cross-language calls', - link: '/en-us/blog/dubbo2-js.html', - }, - { - title: 'The basic usage of Dubbo Provider configuration', - author: '@Ziyang-Wu', - dateStr: 'August 14th, 2018', - desc: 'This blog describes how to configure Dubbo Provider in detail from XML, properties, annotation and API configurations. ', - link: '/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html', - }, - { - title: 'How to prepare an Apache release', - author: '@smilechenjia', - dateStr: 'August 14th, 2018', - desc: 'This blog describes the full flow of Apache release in detail from how to install local environment and start vote.', - link: '/en-us/blog/prepare-an-apache-release.html', - }, - { - title: 'Source code analysis of spring-boot+Dubbo App start and stop', - author: '@noahziheng', - dateStr: 'August 14th, 2018', - desc: 'Dubbo Spring Boot project is dedicated to simplifying the development of the Dubbo RPC framework in the Spring Boot application.', - link: '/en-us/blog/spring-boot-dubbo-start-stop-analysis.html', - }, - { - title: 'Dubbo extensible mechanism source code analysis', - author: '@cuteSoul', - dateStr: 'August 14th, 2018', - desc: 'This blog will go deep into the source code of Dubbo extension mechanism.', - link: '/en-us/blog/introduction-to-dubbo-spi-2.html', - }, - { - title: 'Manipulating Services Dynamically via QoS', - author: '@Wendell Hu (@wendzhue)', - dateStr: 'August 14th, 2018', - desc: 'This blog introduces how to use QoS of Dubbo to configure services dynamically, and QoS\'s parameters and ways to configure', - link: '/en-us/blog/introduction-to-dubbo-qos.html', - }, - { - title: 'Dubbo Loadbalance', - author: '@CyanCity, @liaoandi', - dateStr: 'August 10th, 2018', - desc: 'This blog introduces serval loadbalancing concepts and Dubbo loadbalancing strategy implementation.', - link: '/en-us/blog/dubbo-loadbalance.html', - }, - { - title: 'Sentinel: The flow sentinel of Dubbo services', - author: '@Eric Zhao', - dateStr: 'July 27th, 2018', - desc: 'This blog introduces to the Sentinel and its best practice with Dubbo services. Sentinel is a powerful library that takes "flow" as the breakthrough point, and covers multiple fields including flow control, circuit breaking and load protection to guarantee service stability.', - link: '/en-us/blog/sentinel-introduction-for-dubbo.html', - }, - { - title: 'Tracking with Pinpoint', - author: '@majinkai', - dateStr: 'July 12th, 2018', - desc: 'Call chain tracking and performance monitoring for Dubbo distributed applications using Pinpoint', - link: '/en-us/blog/pinpoint.html', - }, - { - title: 'The first Dubbo meetup has been held in Beijing', - author: 'Huxing Zhang', - dateStr: 'May 12nd,2018', - desc: 'The first Dubbo meetup has successfully been held in Beijing, over 400+ people were present. What a great event! ', - link: '/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html', - }, - { - title: 'The ApacheCon NA schedule has been announced', - author: '@Huxing Zhang', - dateStr: 'May 2nd,2018', - desc: 'Ian Luo and Jun Liu will talk about "Introducing Apache Dubbo(Incubating): What is Dubbo and How it Works" at ApacheCon NA this year in Montréal!', - link: '/en-us/blog/apachecon-na-2018.html', - }, - { - title: 'The GSoC (Google Summer of Code) 2018 projects has been announced', - author: '@Huxing Zhang', - dateStr: 'April 25th,2018', - desc: 'Raghu Reddy\'s project "Extending Serialization protocols support for Apache Dubbo" has been accepted! Congratulations!', - link: '/en-us/blog/gsoc-2018.html', - }, - { - title: 'Dubbo roadmap is announced in QCon Beijing 2018', - author: '@Huxing Zhang', - dateStr: 'April 22nd,2018', - desc: 'Ian Luo has delivered a great talk at QCon Beijing 2018, where the roadmap of Dubbo has also be announced', - link: '/en-us/blog/qcon-beijing-2018.html', - }, - { - title: 'Introduction to Dubbo spi ', - author: '@wangxuekui', - dateStr: 'August 9th, 2018', - desc: 'We have introduction to Dubbo spi.', - link: '/en-us/blog/introduction-to-dubbo-spi.html', - }, - { - title: 'Use annotation in Dubbo', - author: '@Ge Shao', - dateStr: 'August 7nd,2018', - desc: 'This blog introduces how to use annotations', - link: '/en-us/blog/dubbo-annotation.html', - }, - { - title: 'Using Zookeeper in Dubbo', - author: '@Mani', - dateStr: 'August 7th,2018', - desc: 'This blog introduces how to use Zookeeper in Dubbo', - link: '/en-us/blog/dubbo-zk.html', - }, - { - title: 'Your First Dubbo Demo', - author: '@Yang Xinru', - dateStr: 'August 7th,2018', - desc: 'Your First Dubbo Demo', - link: '/en-us/blog/dubbo-101.html', - } - ] - }, - 'zh-cn': { - barText: '博客', - postsTitle: '所有文章', - list: [ - { - title: 'Dubbo 本地调用', - author: '@beiwei30', - dateStr: 'Mar 20th, 2019', - desc: 'Dubbo 本地调用的概念和用法', - link: '/zh-cn/blog/dubbo-local-call.html', + 'en-us': { + barText: 'Blog', + postsTitle: 'All posts', + list: [ + { + title: 'How to use Fescar to ensure consistency between Dubbo Microservices', + author: '@slievrly', + dateStr: 'Jan 17th, 2019', + desc: 'This blog describes details of using Fescar to ensure consistency between Dubbo Microservices', + link: '/en-us/blog/dubbo-fescar.html', + }, + { + title: 'Prepare an Apache Release', + author: 'Jun Liu', + dateStr: 'Sep 2nd, 2018', + desc: 'How to prepare an Apache release', + link: '/en-us/blog/prepare-an-apache-release.html', + }, + { + title: 'How to implement a fully asynchronous calls chain based on Dubbo', + author: '@Siqi Zhuo', + dateStr: 'Aug 13th, 2018', + desc: 'Introduce the new feature of implementing the full asynchronous programming in Dubbo 2.7.0, mainly about previous asynchronous method before 2.6.x versions, enhancement in version 2.7.0 and a few examples to demonstrate its usage', + link: '/en-us/blog/dubbo-new-async.html', + }, + { + title: 'Generic invoke of Dubbo', + author: '@ChasePGit', + dateStr: 'August 14th,2018', + desc: 'This blog describes details of Dubbo generic invoke including usage and examples.', + link: '/en-us/blog/dubbo-generic-invoke.html', + }, + { + title: 'Several ways about synchronous/asynchronous invoke of Dubbo', + author: '@Hou Yongxu', + dateStr: 'August 14th,2018', + desc: 'This blog describes several ways about synchronous/asynchronous invoke of Dubbo', + link: '/en-us/blog/dubbo-invoke.html', + }, + { + title: 'Implementation of cross-language calls by dubbo2.js', + author: '@Stella0824', + dateStr: 'August 14th, 2018', + desc: 'This blog describes how to use dubbo2.js for cross-language calls', + link: '/en-us/blog/dubbo2-js.html', + }, + { + title: 'The basic usage of Dubbo Provider configuration', + author: '@Ziyang-Wu', + dateStr: 'August 14th, 2018', + desc: 'This blog describes how to configure Dubbo Provider in detail from XML, properties, annotation and API configurations. ', + link: '/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html', + }, + { + title: 'How to prepare an Apache release', + author: '@smilechenjia', + dateStr: 'August 14th, 2018', + desc: 'This blog describes the full flow of Apache release in detail from how to install local environment and start vote.', + link: '/en-us/blog/prepare-an-apache-release.html', + }, + { + title: 'Source code analysis of spring-boot+Dubbo App start and stop', + author: '@noahziheng', + dateStr: 'August 14th, 2018', + desc: 'Dubbo Spring Boot project is dedicated to simplifying the development of the Dubbo RPC framework in the Spring Boot application.', + link: '/en-us/blog/spring-boot-dubbo-start-stop-analysis.html', + }, + { + title: 'Dubbo extensible mechanism source code analysis', + author: '@cuteSoul', + dateStr: 'August 14th, 2018', + desc: 'This blog will go deep into the source code of Dubbo extension mechanism.', + link: '/en-us/blog/introduction-to-dubbo-spi-2.html', + }, + { + title: 'Manipulating Services Dynamically via QoS', + author: '@Wendell Hu (@wendzhue)', + dateStr: 'August 14th, 2018', + desc: 'This blog introduces how to use QoS of Dubbo to configure services dynamically, and QoS\'s parameters and ways to configure', + link: '/en-us/blog/introduction-to-dubbo-qos.html', + }, + { + title: 'Dubbo Loadbalance', + author: '@CyanCity, @liaoandi', + dateStr: 'August 10th, 2018', + desc: 'This blog introduces serval loadbalancing concepts and Dubbo loadbalancing strategy implementation.', + link: '/en-us/blog/dubbo-loadbalance.html', + }, + { + title: 'Sentinel: The flow sentinel of Dubbo services', + author: '@Eric Zhao', + dateStr: 'July 27th, 2018', + desc: 'This blog introduces to the Sentinel and its best practice with Dubbo services. Sentinel is a powerful library that takes "flow" as the breakthrough point, and covers multiple fields including flow control, circuit breaking and load protection to guarantee service stability.', + link: '/en-us/blog/sentinel-introduction-for-dubbo.html', + }, + { + title: 'Tracking with Pinpoint', + author: '@majinkai', + dateStr: 'July 12th, 2018', + desc: 'Call chain tracking and performance monitoring for Dubbo distributed applications using Pinpoint', + link: '/en-us/blog/pinpoint.html', + }, + { + title: 'The first Dubbo meetup has been held in Beijing', + author: 'Huxing Zhang', + dateStr: 'May 12nd,2018', + desc: 'The first Dubbo meetup has successfully been held in Beijing, over 400+ people were present. What a great event! ', + link: '/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html', + }, + { + title: 'The ApacheCon NA schedule has been announced', + author: '@Huxing Zhang', + dateStr: 'May 2nd,2018', + desc: 'Ian Luo and Jun Liu will talk about "Introducing Apache Dubbo(Incubating): What is Dubbo and How it Works" at ApacheCon NA this year in Montréal!', + link: '/en-us/blog/apachecon-na-2018.html', + }, + { + title: 'The GSoC (Google Summer of Code) 2018 projects has been announced', + author: '@Huxing Zhang', + dateStr: 'April 25th,2018', + desc: 'Raghu Reddy\'s project "Extending Serialization protocols support for Apache Dubbo" has been accepted! Congratulations!', + link: '/en-us/blog/gsoc-2018.html', + }, + { + title: 'Dubbo roadmap is announced in QCon Beijing 2018', + author: '@Huxing Zhang', + dateStr: 'April 22nd,2018', + desc: 'Ian Luo has delivered a great talk at QCon Beijing 2018, where the roadmap of Dubbo has also be announced', + link: '/en-us/blog/qcon-beijing-2018.html', + }, + { + title: 'Introduction to Dubbo spi ', + author: '@wangxuekui', + dateStr: 'August 9th, 2018', + desc: 'We have introduction to Dubbo spi.', + link: '/en-us/blog/introduction-to-dubbo-spi.html', + }, + { + title: 'Use annotation in Dubbo', + author: '@Ge Shao', + dateStr: 'August 7nd,2018', + desc: 'This blog introduces how to use annotations', + link: '/en-us/blog/dubbo-annotation.html', + }, + { + title: 'Using Zookeeper in Dubbo', + author: '@Mani', + dateStr: 'August 7th,2018', + desc: 'This blog introduces how to use Zookeeper in Dubbo', + link: '/en-us/blog/dubbo-zk.html', + }, + { + title: 'Your First Dubbo Demo', + author: '@Yang Xinru', + dateStr: 'August 7th,2018', + desc: 'Your First Dubbo Demo', + link: '/en-us/blog/dubbo-101.html', + } + ] + }, + 'zh-cn': { + barText: '博客', + postsTitle: '所有文章', + list: [ + { + title: 'Dubbo2.7 三大新特性详解', + author: '@lexburner', + dateStr: 'Mar 22nd, 2019', + desc: '异步化改造,三大中心改造,服务治理增强', + link: '/zh-cn/blog/dubbo-27-features.html', + }, + { + title: 'Dubbo 本地调用', + author: '@beiwei30', + dateStr: 'Mar 20th, 2019', + desc: 'Dubbo 本地调用的概念和用法', + link: '/zh-cn/blog/dubbo-local-call.html', + }, + { + title: 'Dubbo优雅停机介绍', + author: '@guohao', + dateStr: 'Feb 22nd, 2019', + desc: 'Dubbo优雅停机的实现背景和实践', + link: '/zh-cn/blog/dubbo-gracefully-shutdown.html', + }, + { + title: 'Dubbo客户端异步接口的实现背景和实践', + author: '@JeffLv', + dateStr: 'Feb 20th, 2019', + desc: 'Dubbo客户端异步接口的实现背景和实践', + link: '/zh-cn/blog/dubboAsync_client.html', + }, + { + title: 'Dubbo服务端异步接口的实现背景和实践', + author: '@JeffLv', + dateStr: 'Feb 20th, 2019', + desc: 'Dubbo服务端异步接口的实现背景和实践', + link: '/zh-cn/blog/dubboAsync_server.html', + }, + { + title: 'Dubbo Admin服务测试介绍', + author: '@nzomkxia', + dateStr: 'Jan 29th, 2019', + desc: '本文介绍了新版本的Dubbo Admin的服务测试功能', + link: '/zh-cn/blog/service-test.html', + }, + { + title: '新版本Dubbo Admin介绍', + author: '@nzomkxia', + dateStr: 'Jan 28th, 2019', + desc: '本文介绍了新版本的Dubbo Admin的设计和功能', + link: '/zh-cn/blog/dubbo-admin.html', + }, + { + title: '如何使用Fescar保证Dubbo微服务间的一致性', + author: '@slievrly', + dateStr: 'Jan 17th, 2019', + desc: '本文详细介绍了如何使用Fescar保证Dubbo微服务间的一致性', + link: '/zh-cn/blog/dubbo-fescar.html', + }, + { + title: 'Dubbo 注解驱动', + author: '@mercyblitz', + dateStr: 'Jan 2nd, 2019', + desc: '本文介绍 Dubbo 编程模型:注册驱动,包括设计思考以及使用方法', + link: '/zh-cn/blog/dubbo-annotation-driven.html', + }, + { + title: 'Dubbo 外部化配置', + author: '@mercyblitz', + dateStr: 'Jan 2nd, 2019', + desc: '本文介绍 Dubbo 编程模型:外部化配置,包括外部化配置注解以及单或多 Dubbo 配置 Bean 绑定', + link: '/zh-cn/blog/dubbo-externalized-configuration.html', + }, + { + title: 'Dubbo 注册中心 Nacos 整合', + author: '@mercyblitz', + dateStr: 'Jan 2nd, 2019', + desc: '本文介绍 Dubbo 如何整合注册中心 Nacos,包括 Nacos 控制台使用', + link: '/zh-cn/blog/dubbo-registry-nacos-integration.html', + }, + { + title: 'Dubbo协议详解', + author: '@authorlove', + dateStr: 'Jan 2nd, 2019', + desc: '本文介绍常用的协议模式和 dubbo 协议的设计', + link: '/zh-cn/blog/dubbo-protocol.html', + }, + { + title: '在 Dubbo 中使用 REST', + author: '@beiwei30', + dateStr: 'Jan 1st, 2019', + desc: '本文介绍 REST 的基本概念,如何在 Dubbo 中开发 REST HTTP 应用,以及如何集成 Swagger', + link: '/zh-cn/blog/dubbo-rest.html', + }, + { + title: 'Dubbo 上下文信息', + author: '@guohao', + dateStr: 'Dec 29th, 2018', + desc: '本文介绍了Dubbo框架上下文信息的应用场景和使用方式。', + link: '/zh-cn/blog/dubbo-context-information.html', + }, + { + title: 'Dubbo 博客文档中文排版指南', + author: '@徐靖峰', + dateStr: 'Dec 27th, 2018', + desc: '统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。', + link: '/zh-cn/blog/dubbo-copywriting-style.html', + }, + { + title: 'Dubbo 中的 URL 统一模型', + author: '@徐靖峰', + dateStr: 'Dec 27th, 2018', + desc: 'URL 是 Dubbo 中一个重要的领域模型,了解它可以更加轻松的理解 Dubbo 的设计理念。', + link: '/zh-cn/blog/introduction-to-dubbo-url.html', + }, + { + title: 'Dubbo 现有心跳方案总结以及改进建议', + author: '@徐靖峰', + dateStr: 'Jan 16th, 2019', + desc: '一种心跳,两种设计', + link: '/zh-cn/blog/dubbo-heartbeat-design.html', + }, + { + title: 'Dubbo 博客文档中文排版指南', + author: '@徐靖峰', + dateStr: 'Dec 27th, 2018', + desc: '统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。', + link: '/zh-cn/blog/dubbo-copywriting-style.html', + }, + { + title: '当Dubbo遇上Arthas:排查问题的实践', + author: '@hengyunabc', + dateStr: 'Dec 14th, 2018', + desc: '本文介绍使用Alibaba开源的应用诊断利器Arthas来排查Dubbo应用的问题。', + link: '/zh-cn/blog/dubbo-meet-arthas.html', + }, + { + title: 'Dubbo集群容错', + author: '@ralf0131', + dateStr: 'Dec 11th, 2018', + desc: '本文介绍了Dubbo框架提供的多种错误处理策略,并通过实例说明如何进行配置。', + link: '/zh-cn/blog/dubbo-cluster-error-handling.html', + }, + { + title: '在 Dubbo 中使用 Zipkin', + author: '@beiwei30', + dateStr: 'Oct 12th, 2018', + desc: '本文介绍如何使用 Zipkin 在 Dubbo 中进行全链路追踪', + link: '/zh-cn/blog/use-zipkin-in-dubbo.html', + }, + { + title: 'Dubbo在Service Mesh下的思考和方案', + author: '@JeffLv', + dateStr: 'Sep 25th, 2018', + desc: 'Dubbo在Service Mesh下的思考和方案', + link: '/zh-cn/blog/dubbo-mesh-in-thinking.html', + }, + { + title: 'Dubbo Mesh | Service Mesh的实践与探索', + author: '@liyun', + dateStr: 'Sep 14th, 2018', + desc: '本文介绍了Dubbo在Service Mesh方向的实践与探索', + link: '/zh-cn/blog/dubbo-mesh-service-mesh-exploring.html', + }, + { + title: '遇见Dubbo', + author: '@carryxyh', + dateStr: 'Sep 7th, 2018', + desc: '本文记录了一个小白成长为Dubbo committer的过程', + link: '/zh-cn/blog/meet-dubbo.html', + }, + { + title: 'Dubbo 2.7.x repackage后的兼容实现方案', + author: '@jerrick', + dateStr: 'Sep 4th, 2018', + desc: '本文简单描述了2.7.x repackage后对老版本的兼容性实现方案。', + link: '/zh-cn/blog/dubbo-compatible.html', + }, + { + title: 'Dubbo与Kubernetes集成', + author: '@kongming', + dateStr: 'Sep 4th, 2018', + desc: '本文主要尝试将Dubbo服务注册到Kubernetes,同时无缝融入kubernetes的多租户安全体系。', + link: '/zh-cn/blog/dubbo-k8s.html', + }, + { + title: '如何参与贡献Dubbo开源', + author: '@jerrick', + dateStr: 'Sep 4th, 2018', + desc: '本文介绍了如何以Apache Way的方式参与Dubbo社区并做贡献', + link: '/zh-cn/blog/how-to-involve-dubbo-community.html', + }, + { + title: '使用Skywalking追踪Dubbo服务', + author: '张鑫', + dateStr: 'Sep 3nd, 2018', + desc: '使用Skywalking追踪Dubbo服务', + link: '/zh-cn/blog/tracing-with-skywalking.html', + }, + { + title: '如何准备Apache Release', + author: 'Jun Liu', + dateStr: 'Sep 2nd, 2018', + desc: '如何准备Apache Release', + link: '/zh-cn/blog/prepare-an-apache-release.html', + }, + { + title: 'Dubbo服务分组和版本聚合', + author: '@nzomkxia', + dateStr: 'August 29th, 2018', + desc: '介绍了Dubbo中组别和版本的概念,以及如何一次调用多个版本,将结果聚合返回', + link: '/zh-cn/blog/service-and-version.html', + }, + { + title: 'Dubbo测试验证', + author: '@nzomkxia', + dateStr: 'August 28th, 2018', + desc: '介绍了Dubbo中的测试验证功能,方便在开发过程中进行测试', + link: '/zh-cn/blog/test-verification.html', + }, + { + title: '以Dubbo为例,聊聊如何向开源项目做贡献', + author: '@徐靖峰', + dateStr: 'August 28th, 2018', + desc: '开源从来不是高级开发者的专属词汇', + link: '/zh-cn/blog/dubbo-contribue-to-opensource.html', + }, + { + title: 'Spring应用快速集成Dubbo + Hystrix', + author: '@hengyunabc', + dateStr: 'August 10th, 2018', + desc: '本文介绍在spring应用里,怎么把Dubbo和Hystrix结合起来使用', + link: '/zh-cn/blog/dubbo-integrate-with-hystrix.html', + }, + { + title: '如何基于Dubbo实现全异步调用链', + author: '@chickenlj', + dateStr: 'August 10th, 2018', + desc: '本文回顾了 2.6.x 版本的异步实现,然后引出了 2.7.0 版本基于 CompletableFuture 的异步编程方式', + link: '/zh-cn/blog/dubbo-new-async.html', + }, + { + title: 'Dubbo的负载均衡', + author: '@vangoleo', + dateStr: 'August 10th, 2018', + desc: '本文介绍了负载均衡的相关概念以及 Dubbo 中的负载均衡策略实现', + link: '/zh-cn/blog/dubbo-loadbalance.html', + }, + { + title: 'Dubbo的泛化调用', + author: '@jerrick', + dateStr: 'August 10th, 2018', + desc: '本文介绍了 Dubbo 泛化调用的使用场景及相关示例', + link: '/zh-cn/blog/dubbo-generic-invoke.html', + }, + { + title: '如何准备一次Apache发布', + author: '@chickenlj', + dateStr: 'August 8th, 2018', + desc: '从如何搭建本地构建环境到如何发起投票,详细的介绍了Apache版本发布的完整流程', + link: '/zh-cn/blog/prepare-an-apache-release.html', + }, + { + title: '在 Dubbo 应用中使用 Zookeeper', + author: '@beiwei30', + dateStr: 'August 3rd, 2018', + desc: '介绍了 Zookeeper 的基本概念、用法,以及如何在 Dubbo 应用中使用 Zookeeper 作为注册中心。', + link: '/zh-cn/blog/dubbo-zk.html', + }, + { + title: '通过QoS对服务进行动态控制', + author: '@Huxing Zhang', + dateStr: 'August 2nd, 2018', + desc: '介绍了如何使用Dubbo的QoS功能对服务进行动态配置,以及相关的参数及配置方式。', + link: '/zh-cn/blog/introduction-to-dubbo-qos.html', + }, + { + title: '在 Dubbo 中使用注解', + author: '@beiwei30', + dateStr: 'August 1st, 2018', + desc: '介绍了如何使用注解方式而非 XML 方式来开发 Dubbo 应用,可以学习到如何使用 @EnableDubbo、@Service、@Reference 的用法。', + link: '/zh-cn/blog/dubbo-annotation.html', + }, + { + title: '从跨语言调用到 dubbo2.js', + author: '@徐靖峰', + dateStr: 'July 27th, 2018', + desc: '如何使用 dubbo2.js 进行跨语言的 dubbo 调用', + link: '/zh-cn/blog/dubbo2-js.html', + }, + { + title: 'Sentinel 为 Dubbo 服务保驾护航', + author: '@Eric Zhao', + dateStr: 'July 24th, 2018', + desc: '主要介绍了面向分布式服务架构的轻量级流量控制组件 Sentinel 以及在 Dubbo 中整合使用 Sentinel 的最佳实践。', + link: '/zh-cn/blog/sentinel-introduction-for-dubbo.html', + }, + { + title: '使用Pinpoint做分布式跟踪', + author: '@majinkai', + dateStr: 'July 12th, 2018', + desc: '利用Pinpoint对Dubbo分布式应用进行调用链跟踪与性能监控', + link: '/zh-cn/blog/pinpoint.html', + }, + { + title: 'Dubbo 的同步与异步调用方式', + author: '@Jerrick Zhu', + dateStr: 'July 10th, 2018', + desc: '主要讲述了 Dubbo 在底层异步通信机制的基础上实现的同步调用、异步调用、参数回调以及事件通知几种方式及示例。', + link: '/zh-cn/blog/dubbo-invoke.html', + }, + { + title: '第一个Dubbo filter', + author: '@nzomkxia', + dateStr: 'July 1st, 2018', + desc: '介绍了Dubbo中的filter机制,并且详细介绍了如果实现一个自己的Dubbo filter', + link: '/zh-cn/blog/first-dubbo-filter.html', + }, + { + title: '第一个 Dubbo 应用', + author: '@beiwei30', + dateStr: 'June 2nd, 2018', + desc: '现代的分布式服务框架的基本概念与 RMI 是类似的,同样是使用 Java 的 Interface 作为服务契约,通过注册中心来完成服务的注册和发现,远程通讯的细节也是通过代理类来屏蔽。', + link: '/zh-cn/blog/dubbo-101.html', + }, + { + title: 'Dubbo基本用法之Provider配置', + author: '@cvictory', + dateStr: 'June 1st, 2018', + desc: '主要讲述如何配置dubbo,按照配置方式上分,可以分为:XML配置,properties方式配置,注解方式配置,API调用方式配置。', + link: '/zh-cn/blog/dubbo-basic-usage-dubbo-provider-configuration.html', + }, + { + title: 'Spring Boot Dubbo应用启停源码分析', + author: '@Huxing Zhang', + dateStr: 'May 28th, 2018', + desc: 'dubbo-spring-boot-project致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发,同时也整合了Spring Boot特性。', + link: '/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html', + }, + { + title: '优化技巧:提前if判断帮助CPU分支预测', + author: '@hengyunabc', + dateStr: 'May 20th, 2018', + desc: '要提高代码执行效率,一个重要的原则就是尽量避免CPU把流水线清空,那么提高分支预测的成功率就非常重要。那么对于代码里,如果某个switch分支概率很高,是否可以考虑代码层面帮CPU把判断提前,来提高代码执行效率呢?', + link: '/zh-cn/blog/optimization-branch-prediction.html', + }, + { + title: 'Dubbo可扩展机制实战', + author: '@vangoleo', + dateStr: 'May 10th, 2018', + desc: '在谈到软件设计时,可扩展性一直被谈起,那到底什么才是可扩展性,什么样的框架才算有良好的可扩展性呢?', + link: '/zh-cn/blog/introduction-to-dubbo-spi.html', + }, + { + title: 'Dubbo可扩展机制源码解析', + author: '@vangoleo', + dateStr: 'May 10th, 2018', + desc: '在前面的博客中,我们了解了Dubbo扩展机制的一些概念,初探了Dubbo中LoadBalance的实现,并自己实现了一个LoadBalance。接下来,我们就深入Dubbo的源码,一睹庐山真面目。', + link: '/zh-cn/blog/introduction-to-dubbo-spi-2.html', + } + ] }, - { - title: 'Dubbo优雅停机介绍', - author: '@guohao', - dateStr: 'Feb 22nd, 2019', - desc: 'Dubbo优雅停机的实现背景和实践', - link: '/zh-cn/blog/dubbo-gracefully-shutdown.html', - }, - { - title: 'Dubbo客户端异步接口的实现背景和实践', - author: '@JeffLv', - dateStr: 'Feb 20th, 2019', - desc: 'Dubbo客户端异步接口的实现背景和实践', - link: '/zh-cn/blog/dubboAsync_client.html', - }, - { - title: 'Dubbo服务端异步接口的实现背景和实践', - author: '@JeffLv', - dateStr: 'Feb 20th, 2019', - desc: 'Dubbo服务端异步接口的实现背景和实践', - link: '/zh-cn/blog/dubboAsync_server.html', - }, - { - title: 'Dubbo Admin服务测试介绍', - author: '@nzomkxia', - dateStr: 'Jan 29th, 2019', - desc: '本文介绍了新版本的Dubbo Admin的服务测试功能', - link: '/zh-cn/blog/service-test.html', - }, - { - title: '新版本Dubbo Admin介绍', - author: '@nzomkxia', - dateStr: 'Jan 28th, 2019', - desc: '本文介绍了新版本的Dubbo Admin的设计和功能', - link: '/zh-cn/blog/dubbo-admin.html', - }, - { - title: '如何使用Fescar保证Dubbo微服务间的一致性', - author: '@slievrly', - dateStr: 'Jan 17th, 2019', - desc: '本文详细介绍了如何使用Fescar保证Dubbo微服务间的一致性', - link: '/zh-cn/blog/dubbo-fescar.html', - }, - { - title: 'Dubbo 注解驱动', - author:'@mercyblitz', - dateStr: 'Jan 2nd, 2019', - desc: '本文介绍 Dubbo 编程模型:注册驱动,包括设计思考以及使用方法', - link: '/zh-cn/blog/dubbo-annotation-driven.html', - }, - { - title: 'Dubbo 外部化配置', - author:'@mercyblitz', - dateStr: 'Jan 2nd, 2019', - desc: '本文介绍 Dubbo 编程模型:外部化配置,包括外部化配置注解以及单或多 Dubbo 配置 Bean 绑定', - link: '/zh-cn/blog/dubbo-externalized-configuration.html', - }, - { - title: 'Dubbo 注册中心 Nacos 整合', - author:'@mercyblitz', - dateStr: 'Jan 2nd, 2019', - desc: '本文介绍 Dubbo 如何整合注册中心 Nacos,包括 Nacos 控制台使用', - link: '/zh-cn/blog/dubbo-registry-nacos-integration.html', - }, - { - title: 'Dubbo协议详解', - author: '@authorlove', - dateStr: 'Jan 2nd, 2019', - desc: '本文介绍常用的协议模式和 dubbo 协议的设计', - link: '/zh-cn/blog/dubbo-protocol.html', - }, - { - title: '在 Dubbo 中使用 REST', - author:'@beiwei30', - dateStr: 'Jan 1st, 2019', - desc: '本文介绍 REST 的基本概念,如何在 Dubbo 中开发 REST HTTP 应用,以及如何集成 Swagger', - link: '/zh-cn/blog/dubbo-rest.html', - }, - { - title: 'Dubbo 上下文信息', - author:'@guohao', - dateStr: 'Dec 29th, 2018', - desc: '本文介绍了Dubbo框架上下文信息的应用场景和使用方式。', - link: '/zh-cn/blog/dubbo-context-information.html', - }, - { - title: 'Dubbo 博客文档中文排版指南', - author:'@徐靖峰', - dateStr: 'Dec 27th, 2018', - desc: '统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。', - link: '/zh-cn/blog/dubbo-copywriting-style.html', - }, - { - title: 'Dubbo 中的 URL 统一模型', - author:'@徐靖峰', - dateStr: 'Dec 27th, 2018', - desc: 'URL 是 Dubbo 中一个重要的领域模型,了解它可以更加轻松的理解 Dubbo 的设计理念。', - link: '/zh-cn/blog/introduction-to-dubbo-url.html', - }, - { - title: 'Dubbo 现有心跳方案总结以及改进建议', - author:'@徐靖峰', - dateStr: 'Jan 16th, 2019', - desc: '一种心跳,两种设计', - link: '/zh-cn/blog/dubbo-heartbeat-design.html', - }, - { - title: 'Dubbo 博客文档中文排版指南', - author:'@徐靖峰', - dateStr: 'Dec 27th, 2018', - desc: '统一中文文案、排版的相关用法,降低团队成员之间的沟通成本,增强网站气质。', - link: '/zh-cn/blog/dubbo-copywriting-style.html', - }, - { - title: '当Dubbo遇上Arthas:排查问题的实践', - author:'@hengyunabc', - dateStr: 'Dec 14th, 2018', - desc: '本文介绍使用Alibaba开源的应用诊断利器Arthas来排查Dubbo应用的问题。', - link: '/zh-cn/blog/dubbo-meet-arthas.html', - }, - { - title: 'Dubbo集群容错', - author:'@ralf0131', - dateStr: 'Dec 11th, 2018', - desc: '本文介绍了Dubbo框架提供的多种错误处理策略,并通过实例说明如何进行配置。', - link: '/zh-cn/blog/dubbo-cluster-error-handling.html', - }, - { - title: '在 Dubbo 中使用 Zipkin', - author:'@beiwei30', - dateStr: 'Oct 12th, 2018', - desc: '本文介绍如何使用 Zipkin 在 Dubbo 中进行全链路追踪', - link: '/zh-cn/blog/use-zipkin-in-dubbo.html', - }, - { - title: 'Dubbo在Service Mesh下的思考和方案', - author: '@JeffLv', - dateStr: 'Sep 25th, 2018', - desc: 'Dubbo在Service Mesh下的思考和方案', - link: '/zh-cn/blog/dubbo-mesh-in-thinking.html', - }, - { - title: 'Dubbo Mesh | Service Mesh的实践与探索', - author:'@liyun', - dateStr: 'Sep 14th, 2018', - desc: '本文介绍了Dubbo在Service Mesh方向的实践与探索', - link: '/zh-cn/blog/dubbo-mesh-service-mesh-exploring.html', - }, - { - title: '遇见Dubbo', - author:'@carryxyh', - dateStr: 'Sep 7th, 2018', - desc: '本文记录了一个小白成长为Dubbo committer的过程', - link: '/zh-cn/blog/meet-dubbo.html', - }, - { - title: 'Dubbo 2.7.x repackage后的兼容实现方案', - author:'@jerrick', - dateStr: 'Sep 4th, 2018', - desc: '本文简单描述了2.7.x repackage后对老版本的兼容性实现方案。', - link: '/zh-cn/blog/dubbo-compatible.html', - }, - { - title: 'Dubbo与Kubernetes集成', - author:'@kongming', - dateStr: 'Sep 4th, 2018', - desc: '本文主要尝试将Dubbo服务注册到Kubernetes,同时无缝融入kubernetes的多租户安全体系。', - link: '/zh-cn/blog/dubbo-k8s.html', - }, - { - title: '如何参与贡献Dubbo开源', - author:'@jerrick', - dateStr: 'Sep 4th, 2018', - desc: '本文介绍了如何以Apache Way的方式参与Dubbo社区并做贡献', - link: '/zh-cn/blog/how-to-involve-dubbo-community.html', - }, - { - title: '使用Skywalking追踪Dubbo服务', - author:'张鑫', - dateStr: 'Sep 3nd, 2018', - desc: '使用Skywalking追踪Dubbo服务', - link: '/zh-cn/blog/tracing-with-skywalking.html', - }, - { - title: '如何准备Apache Release', - author: 'Jun Liu', - dateStr: 'Sep 2nd, 2018', - desc: '如何准备Apache Release', - link: '/zh-cn/blog/prepare-an-apache-release.html', - }, - { - title: 'Dubbo服务分组和版本聚合', - author: '@nzomkxia', - dateStr: 'August 29th, 2018', - desc: '介绍了Dubbo中组别和版本的概念,以及如何一次调用多个版本,将结果聚合返回', - link: '/zh-cn/blog/service-and-version.html', - }, - { - title: 'Dubbo测试验证', - author: '@nzomkxia', - dateStr: 'August 28th, 2018', - desc: '介绍了Dubbo中的测试验证功能,方便在开发过程中进行测试', - link: '/zh-cn/blog/test-verification.html', - }, - { - title: '以Dubbo为例,聊聊如何向开源项目做贡献', - author: '@徐靖峰', - dateStr: 'August 28th, 2018', - desc: '开源从来不是高级开发者的专属词汇', - link: '/zh-cn/blog/dubbo-contribue-to-opensource.html', - }, - { - title: 'Spring应用快速集成Dubbo + Hystrix', - author: '@hengyunabc', - dateStr: 'August 10th, 2018', - desc: '本文介绍在spring应用里,怎么把Dubbo和Hystrix结合起来使用', - link: '/zh-cn/blog/dubbo-integrate-with-hystrix.html', - }, - { - title: '如何基于Dubbo实现全异步调用链', - author: '@chickenlj', - dateStr: 'August 10th, 2018', - desc: '本文回顾了 2.6.x 版本的异步实现,然后引出了 2.7.0 版本基于 CompletableFuture 的异步编程方式', - link: '/zh-cn/blog/dubbo-new-async.html', - }, - { - title: 'Dubbo的负载均衡', - author: '@vangoleo', - dateStr: 'August 10th, 2018', - desc: '本文介绍了负载均衡的相关概念以及 Dubbo 中的负载均衡策略实现', - link: '/zh-cn/blog/dubbo-loadbalance.html', - }, - { - title: 'Dubbo的泛化调用', - author: '@jerrick', - dateStr: 'August 10th, 2018', - desc: '本文介绍了 Dubbo 泛化调用的使用场景及相关示例', - link: '/zh-cn/blog/dubbo-generic-invoke.html', - }, - { - title: '如何准备一次Apache发布', - author: '@chickenlj', - dateStr: 'August 8th, 2018', - desc: '从如何搭建本地构建环境到如何发起投票,详细的介绍了Apache版本发布的完整流程', - link: '/zh-cn/blog/prepare-an-apache-release.html', - }, - { - title: '在 Dubbo 应用中使用 Zookeeper', - author: '@beiwei30', - dateStr: 'August 3rd, 2018', - desc: '介绍了 Zookeeper 的基本概念、用法,以及如何在 Dubbo 应用中使用 Zookeeper 作为注册中心。', - link: '/zh-cn/blog/dubbo-zk.html', - }, - { - title: '通过QoS对服务进行动态控制', - author: '@Huxing Zhang', - dateStr: 'August 2nd, 2018', - desc: '介绍了如何使用Dubbo的QoS功能对服务进行动态配置,以及相关的参数及配置方式。', - link: '/zh-cn/blog/introduction-to-dubbo-qos.html', - }, - { - title: '在 Dubbo 中使用注解', - author: '@beiwei30', - dateStr: 'August 1st, 2018', - desc: '介绍了如何使用注解方式而非 XML 方式来开发 Dubbo 应用,可以学习到如何使用 @EnableDubbo、@Service、@Reference 的用法。', - link: '/zh-cn/blog/dubbo-annotation.html', - }, - { - title: '从跨语言调用到 dubbo2.js', - author: '@徐靖峰', - dateStr: 'July 27th, 2018', - desc: '如何使用 dubbo2.js 进行跨语言的 dubbo 调用', - link: '/zh-cn/blog/dubbo2-js.html', - }, - { - title: 'Sentinel 为 Dubbo 服务保驾护航', - author: '@Eric Zhao', - dateStr: 'July 24th, 2018', - desc: '主要介绍了面向分布式服务架构的轻量级流量控制组件 Sentinel 以及在 Dubbo 中整合使用 Sentinel 的最佳实践。', - link: '/zh-cn/blog/sentinel-introduction-for-dubbo.html', - }, - { - title: '使用Pinpoint做分布式跟踪', - author: '@majinkai', - dateStr: 'July 12th, 2018', - desc: '利用Pinpoint对Dubbo分布式应用进行调用链跟踪与性能监控', - link: '/zh-cn/blog/pinpoint.html', - }, - { - title: 'Dubbo 的同步与异步调用方式', - author: '@Jerrick Zhu', - dateStr: 'July 10th, 2018', - desc: '主要讲述了 Dubbo 在底层异步通信机制的基础上实现的同步调用、异步调用、参数回调以及事件通知几种方式及示例。', - link: '/zh-cn/blog/dubbo-invoke.html', - }, - { - title: '第一个Dubbo filter', - author: '@nzomkxia', - dateStr: 'July 1st, 2018', - desc: '介绍了Dubbo中的filter机制,并且详细介绍了如果实现一个自己的Dubbo filter', - link: '/zh-cn/blog/first-dubbo-filter.html', - }, - { - title: '第一个 Dubbo 应用', - author: '@beiwei30', - dateStr: 'June 2nd, 2018', - desc: '现代的分布式服务框架的基本概念与 RMI 是类似的,同样是使用 Java 的 Interface 作为服务契约,通过注册中心来完成服务的注册和发现,远程通讯的细节也是通过代理类来屏蔽。', - link: '/zh-cn/blog/dubbo-101.html', - }, - { - title: 'Dubbo基本用法之Provider配置', - author: '@cvictory', - dateStr: 'June 1st, 2018', - desc: '主要讲述如何配置dubbo,按照配置方式上分,可以分为:XML配置,properties方式配置,注解方式配置,API调用方式配置。', - link: '/zh-cn/blog/dubbo-basic-usage-dubbo-provider-configuration.html', - }, - { - title: 'Spring Boot Dubbo应用启停源码分析', - author: '@Huxing Zhang', - dateStr: 'May 28th, 2018', - desc: 'dubbo-spring-boot-project致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发,同时也整合了Spring Boot特性。', - link: '/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html', - }, - { - title: '优化技巧:提前if判断帮助CPU分支预测', - author: '@hengyunabc', - dateStr: 'May 20th, 2018', - desc: '要提高代码执行效率,一个重要的原则就是尽量避免CPU把流水线清空,那么提高分支预测的成功率就非常重要。那么对于代码里,如果某个switch分支概率很高,是否可以考虑代码层面帮CPU把判断提前,来提高代码执行效率呢?', - link: '/zh-cn/blog/optimization-branch-prediction.html', - }, - { - title: 'Dubbo可扩展机制实战', - author: '@vangoleo', - dateStr: 'May 10th, 2018', - desc: '在谈到软件设计时,可扩展性一直被谈起,那到底什么才是可扩展性,什么样的框架才算有良好的可扩展性呢?', - link: '/zh-cn/blog/introduction-to-dubbo-spi.html', - }, - { - title: 'Dubbo可扩展机制源码解析', - author: '@vangoleo', - dateStr: 'May 10th, 2018', - desc: '在前面的博客中,我们了解了Dubbo扩展机制的一些概念,初探了Dubbo中LoadBalance的实现,并自己实现了一个LoadBalance。接下来,我们就深入Dubbo的源码,一睹庐山真面目。', - link: '/zh-cn/blog/introduction-to-dubbo-spi-2.html', - } - ] - }, };