Dubbo架构设计详解

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <link rel="canonical" href="https://blog.csdn.net/fly_zhyu/article/details/76407698"/> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="referrer" content="always">
    <meta name="description" content="Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。
" />
    <meta name="keywords" content="dubbo,架构设计" />
    <meta http-equiv="Cache-Control" content="no-siteapp" /><link rel="alternate" media="handheld" href="#" />
    <meta name="shenma-site-verification" content="5a59773ab8077d4a62bf469ab966a63b_1497598848">
    <script src="https://csdnimg.cn/release/phoenix/vendor/tingyun/tingyun-rum-blog.js"></script>

    <link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
    <title>Dubbo架构设计详解 - CSDN博客</title>
    
            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/detail-801161715c.min.css">
        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/themes/skin-yellow/skin-yellow-4e9c30ca0e.min.css">

    <script type="text/javascript">
        var username = "fly_zhyu";
        var blog_address = "https://blog.csdn.net/fly_zhyu";
        var static_host = "https://csdnimg.cn/release/phoenix/";
        var currentUserName = "qq_27580945"; 
        var isShowAds = true;
        var isOwner = false;
        var loginUrl = "https://passport.csdn.net/account/login?from=https://blog.csdn.net/fly_zhyu/article/details/76407698"
        var blogUrl = "https://blog.csdn.net/";
        var curSkin = "skin-yellow";
    </script>
    <script type="text/javascript">
        // Traffic Stats of the entire Web site By baidu
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?6bcd52f51e9b3dce32bec4a3997715ac";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
        })();
        // Traffic Stats of the entire Web site By baidu end
    </script>
    <script src="https://csdnimg.cn/public/common/libs/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script src="https://csdnimg.cn/rabbit/exposure-click/main-1.0.6.js"></script>
        <script type="text/javascript" src="https://csdnimg.cn/pubfooter/js/tracking-1.0.2.js" charset="utf-8"></script>
        <link rel="stylesheet" href="https://csdnimg.cn/public/sandalstrap/1.3/css/sandalstrap.min.css"> 
    <style>
        .MathJax, .MathJax_Message, .MathJax_Preview{
            display: none
        }
    </style>
</head>
<body>    
    <link rel="stylesheet" href="https://csdnimg.cn/public/common/toolbar/content_toolbar_css/content_toolbar.css">
    <script id="toolbar-tpl-scriptId" src="https://csdnimg.cn/public/common/toolbar/js/content_toolbar.js" type="text/javascript" domain="https://blog.csdn.net/"></script>
    <script src="https://csdnimg.cn/public/sandalstrap/1.3/fonts/csdnc/csdnc.js"></script><link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/blog_code-c3a0c33d5c.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/vendor/pagination/paging.css">
<script type="text/javascript" src="//static.mediav.com/js/mvf_news_feed.js"></script>

<header>
	<div class="container d-flex clearfix">
		<div class="title-box">
			<h2 class="title-blog">
				<a href="https://blog.csdn.net/fly_zhyu">fly_zhyu的博客</a>
			</h2>
			<p class="description">别混日子啦,小心日子把你们混了.</p>
		</div>
		<div class="opt-box d-flex justify-content-end">
			<a class="btn btn-sm" href="https://blog.csdn.net/fly_zhyu/rss/list">
					<svg class="icon" aria-hidden="true">
						<use xlink:href="#csdnc-rss"></use>
					</svg>RSS订阅</a>
					</div>
	</div>
</header><script src="https://dup.baidustatic.com/js/ds.js"></script>
<div class="container clearfix pt0" id="mainBox">
    <main>
        <div class="blog-content-box">
	<div class="article-title-box">
			<span class="article-type type-2 float-left">转</span>		<h1 class="title-article">Dubbo架构设计详解</h1>
	</div>
	<div class="article-info-box">
		<div class="article-bar-top d-flex">
												<span class="time">2017年07月30日 21:49:56</span>
			<div class="float-right">
				<span class="read-count">阅读数:546</span>
											</div>
		</div>
	</div>
	<article>
		<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog"  data-mod=popu_307  data-dsm = "post" >
                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/htmledit_views-0a60691e80.css" />
            <div class="htmledit_views">
                
<p>Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。</p>
<p><strong>总体架构</strong></p>
<p>Dubbo的总体架构,如图所示:<br /><img src="https://img-blog.csdn.net/20170730214249484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmx5X3poeXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><br />
Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口, 位于中轴线上的为双方都用到的接口。<br />
下面,结合Dubbo官方文档,我们分别理解一下框架分层架构中,各个层次的设计要点:</p>
<ol><li>服务接口层(Service):该层是与实际业务逻辑相关的,根据服务提供方和服务消费方的业务设计对应的接口和实现。</li><li>配置层(Config):对外配置接口,以ServiceConfig和ReferenceConfig为中心,可以直接new配置类,也可以通过spring解析配置生成配置类。</li><li>服务代理层(Proxy):服务接口透明代理,生成服务的客户端Stub和服务器端Skeleton,以ServiceProxy为中心,扩展接口为ProxyFactory。</li><li>服务注册层(Registry):封装服务地址的注册与发现,以服务URL为中心,扩展接口为RegistryFactory、Registry和RegistryService。可能没有服务注册中心,此时服务提供方直接暴露服务。</li><li>集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster、Directory、Router和LoadBalance。将多个服务提供方组合为一个服务提供方,实现对服务消费方来透明,只需要与一个服务提供方进行交互。</li><li>监控层(Monitor):RPC调用次数和调用时间监控,以Statistics为中心,扩展接口为MonitorFactory、Monitor和MonitorService。</li><li>远程调用层(Protocol):封将RPC调用,以Invocation和Result为中心,扩展接口为Protocol、Invoker和Exporter。Protocol是服务域,它是Invoker暴露和引用的主功能入口,它负责Invoker的生命周期管理。Invoker是实体域,它是Dubbo的核心模型,其它模型都向它靠扰,或转换成它,它代表一个可执行体,可向它发起invoke调用,它有可能是一个本地的实现,也可能是一个远程的实现,也可能一个集群实现。</li><li>信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和Response为中心,扩展接口为Exchanger、ExchangeChannel、ExchangeClient和ExchangeServer。</li><li>网络传输层(Transport):抽象mina和netty为统一接口,以Message为中心,扩展接口为Channel、Transporter、Client、Server和Codec。</li><li>数据序列化层(Serialize):可复用的一些工具,扩展接口为Serialization、 ObjectInput、ObjectOutput和ThreadPool。</li></ol><p>从上图可以看出,Dubbo对于服务提供方和服务消费方,从框架的10层中分别提供了各自需要关心和扩展的接口,构建整个服务生态系统(服务提供方和服务消费方本身就是一个以服务为中心的)。<br />
根据官方提供的,对于上述各层之间关系的描述,如下所示:</p>
<ul><li>在RPC中,Protocol是核心层,也就是只要有Protocol + Invoker + Exporter就可以完成非透明的RPC调用,然后在Invoker的主过程上Filter拦截点。</li><li>图中的Consumer和Provider是抽象概念,只是想让看图者更直观的了解哪些类分属于客户端与服务器端,不用Client和Server的原因是Dubbo在很多场景下都使用Provider、Consumer、Registry、Monitor划分逻辑拓普节点,保持统一概念。</li><li>而Cluster是外围概念,所以Cluster的目的是将多个Invoker伪装成一个Invoker,这样其它人只要关注Protocol层Invoker即可,加上Cluster或者去掉Cluster对其它层都不会造成影响,因为只有一个提供者时,是不需要Cluster的。</li><li>Proxy层封装了所有接口的透明化代理,而在其它层都以Invoker为中心,只有到了暴露给用户使用时,才用Proxy将Invoker转成接口,或将接口实现转成Invoker,也就是去掉Proxy层RPC是可以Run的,只是不那么透明,不那么看起来像调本地服务一样调远程服务。</li><li>而Remoting实现是Dubbo协议的实现,如果你选择RMI协议,整个Remoting都不会用上,Remoting内部再划为Transport传输层和Exchange信息交换层,Transport层只负责单向消息传输,是对Mina、Netty、Grizzly的抽象,它也可以扩展UDP传输,而Exchange层是在传输层之上封装了Request-Response语义。</li><li>Registry和Monitor实际上不算一层,而是一个独立的节点,只是为了全局概览,用层的方式画在一起。</li></ul><p>从上面的架构图中,我们可以了解到,Dubbo作为一个分布式服务框架,主要具有如下几个核心的要点:</p>
<p><strong>服务定义</strong><br />
服务是围绕服务提供方和服务消费方的,服务提供方实现服务,而服务消费方调用服务。</p>
<p><strong>服务注册</strong><br />
对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即既需要提供服务,有需要消费服务。<br />
通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。Dubbo提供的注册中心有如下几种类型可供选择:</p>
<ul><li>Multicast注册中心</li><li>Zookeeper注册中心</li><li>Redis注册中心</li><li>Simple注册中心</li></ul><p><strong>服务监控</strong><br />
无论是服务提供方,还是服务消费方,他们都需要对服务调用的实际状态进行有效的监控,从而改进服务质量。</p>
<p><strong>远程通信与信息交换</strong><br />
远程通信需要指定通信双方所约定的协议,在保证通信双方理解协议语义的基础上,还要保证高效、稳定的消息传输。Dubbo继承了当前主流的网络通信框架,主要包括如下几个:</p>
<ul><li>Mina</li><li>Netty</li><li>Grizzly</li></ul><p><strong>服务调用</strong><br />
下面从Dubbo官网直接拿来,看一下基于RPC层,服务提供方和服务消费方之间的调用关系,如图所示:<br /><img src="https://img-blog.csdn.net/20170730214304123?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmx5X3poeXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><br />
上图中,蓝色的表示与业务有交互,绿色的表示只对Dubbo内部交互。上述图所描述的调用流程如下:</p>
<ol><li>服务提供方发布服务到服务注册中心;</li><li>服务消费方从服务注册中心订阅服务;</li><li>服务消费方调用已经注册的可用服务</li></ol><p>接着,将上面抽象的调用流程图展开,详细如图所示:<br /><img src="https://img-blog.csdn.net/20170730214311273?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmx5X3poeXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><br /></p>
<p><strong>注册/注销服务</strong><br />
服务的注册与注销,是对服务提供方角色而言,那么注册服务与注销服务的时序图,如图所示:<br /><img src="https://img-blog.csdn.net/20170730214625516?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmx5X3poeXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><br /></p>
<p><strong>服务订阅/取消</strong><br />
为了满足应用系统的需求,服务消费方的可能需要从服务注册中心订阅指定的有服务提供方发布的服务,在得到通知可以使用服务时,就可以直接调用服务。反过来,如果不需要某一个服务了,可以取消该服务。下面看一下对应的时序图,如图所示:<br /><img src="https://img-blog.csdn.net/20170730214742326?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmx5X3poeXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><br /></p>
<p><strong>协议支持</strong><br />
Dubbo支持多种协议,如下所示:</p>
<ul><li>Dubbo协议</li><li>Hessian协议</li><li>HTTP协议</li><li>RMI协议</li><li>WebService协议</li><li>Thrift协议</li><li>Memcached协议</li><li>Redis协议</li></ul><p>在通信过程中,不同的服务等级一般对应着不同的服务质量,那么选择合适的协议便是一件非常重要的事情。你可以根据你应用的创建来选择。例如,使用RMI协议,一般会受到防火墙的限制,所以对于外部与内部进行通信的场景,就不要使用RMI协议,而是基于HTTP协议或者Hessian协议。</p>
<p><strong>参考补充</strong><br />
Dubbo以包结构来组织各个模块,各个模块及其关系,如图所示:<br /><img src="https://img-blog.csdn.net/20170730214851912?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmx5X3poeXU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><br />
可以通过Dubbo的代码(使用Maven管理)组织,与上面的模块进行比较。简单说明各个包的情况:</p>
<ul><li>dubbo-common 公共逻辑模块,包括Util类和通用模型。</li><li>dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。</li><li>dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。</li><li>dubbo-cluster 集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡、容错、路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。</li><li>dubbo-registry 注册中心模块,基于注册中心下发地址的集群方式,以及对各种注册中心的抽象。</li><li>dubbo-monitor 监控模块,统计服务调用次数,调用时间的,调用链跟踪的服务。</li><li>dubbo-config 配置模块,是Dubbo对外的API,用户通过Config使用Dubbo,隐藏Dubbo所有细节。</li><li>dubbo-container 容器模块,是一个Standalone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。</li></ul><p><strong>参考链接</strong></p>
<ul><li><a href="https://github.com/alibaba/dubbo">https://github.com/alibaba/dubbo</a></li><li><a href="http://alibaba.github.io/dubbo-doc-static/Home-zh.htm">http://alibaba.github.io/dubbo-doc-static/Home-zh.htm</a></li><li><a href="http://alibaba.github.io/dubbo-doc-static/User+Guide-zh.htm">http://alibaba.github.io/dubbo-doc-static/User+Guide-zh.htm</a></li><li><a href="http://alibaba.github.io/dubbo-doc-static/Developer+Guide-zh.htm">http://alibaba.github.io/dubbo-doc-static/Developer+Guide-zh.htm</a></li><li><a href="http://alibaba.github.io/dubbo-doc-static/Administrator+Guide-zh.htm">http://alibaba.github.io/dubbo-doc-static/Administrator+Guide-zh.htm</a></li><li><a href="http://alibaba.github.io/dubbo-doc-static/FAQ-zh.htm">http://alibaba.github.io/dubbo-doc-static/FAQ-zh.htm</a></li></ul>            </div>
                </div>
			</article>
	
		<div class="article-bar-bottom">
						<div class="tags-box artic-tag-box">
			<span class="label">文章标签:</span>
						<a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=dubbo&t=blog" target="_blank">dubbo						<a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=架构设计&t=blog" target="_blank">架构设计						<a class="tag-link" href="http://so.csdn.net/so/search/s.do?q=详解&t=blog" target="_blank">详解						</a>
		</div>
						<div class="tags-box">
			<span class="label">个人分类:</span>
						<a class="tag-link" href="https://blog.csdn.net/fly_zhyu/article/category/7064512"  target="_blank">先了解						</a>
		</div>
					</div>
	
	<!-- !empty($pre_next_article[0]) -->
		</div>
<script>
    $(".MathJax").remove();
</script>

<script type="text/javascript" src="https://static-blog.csdn.net/mdeditor/public/res/bower-libs/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
			"HTML-CSS": {
					linebreaks: { automatic: true, width: "94%container" },
					imageFont: null
			},
			tex2jax: {
				preview: "none"
			},
			mml2jax: {
				preview: 'none'
			}
	});
</script>
<script>

	var edu_ad_is_big_data = 0;
	(function(){
		var btnReadmore = $("#btn-readmore");
		if(btnReadmore.length>0){
			var winH = $(window).height();
			var articleBox = $("div.article_content");
			var artH = articleBox.height();
			if(artH > winH*2){
				articleBox.css({
					'height':winH*2+'px',
					'overflow':'hidden'
				})
				btnReadmore.click(function(){
					articleBox.removeAttr("style");
					$(this).parent().remove();
				})
			}else{
				btnReadmore.parent().remove();
			}
		}
	})()
</script>        <div class="edu-promotion"></div>
        <a id="commentBox"></a>
<div class="comment-box">
	  	<div class="comment-edit-box d-flex">
		<a id="commentsedit"></a>
		<div class="user-img">
			<img src="https://avatar.csdn.net/C/6/9/3_qq_27580945.jpg">
		</div>
		<form id="commentform">
			<input type="hidden" id="comment_replyId">
			<textarea class="comment-content" name="comment_content" id="comment_content" placeholder="想对作者说点什么"></textarea>
			<div class="opt-box"> <!-- d-flex -->
				<div id="ubbtools" class="add_code">
					<a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
				</div>
				<input type="hidden" id="comment_replyId" name="comment_replyId">
				<input type="hidden" id="comment_userId" name="comment_userId" value="">
				<input type="hidden" id="commentId" name="commentId" value="">
				<div style="display: none;" class="csdn-tracking-statistics tracking-click" data-mod="popu_384"><a href="#" target="_blank" class="comment_area_btn">发表评论</a></div>
				<div class="dropdown" id="myDrap">
					<a class="dropdown-face d-flex align-items-center" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
					<div class="txt-selected text-truncate">添加代码片</div>
					<svg class="icon d-block" aria-hidden="true">
						<use xlink:href="#csdnc-triangledown"></use>
					</svg>
					</a>
					<ul class="dropdown-menu" id="commentCode" aria-labelledby="drop4">
						<li><a data-code="html">HTML/XML</a></li>
						<li><a data-code="objc">objective-c</a></li>
						<li><a data-code="delphi">Delphi</a></li>
						<li><a data-code="ruby">Ruby</a></li>
						<li><a data-code="php">PHP</a></li>
						<li><a data-code="csharp">C</a></li>
						<li><a data-code="cpp">C++</a></li>
						<li><a data-code="javascript">JavaScript</a></li>
						<li><a data-code="vb">Visual Basic</a></li>
						<li><a data-code="python">Python</a></li>
						<li><a data-code="java">Java</a></li>
						<li><a data-code="css">CSS</a></li>
						<li><a data-code="sql">SQL</a></li>
						<li><a data-code="plain">其它</a></li>
					</ul>
				</div>  
				<div class="right-box">
					<span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
					<input type="submit" class="btn btn-sm btn-red btn-comment" value="发表评论">
				</div>
			</div>
		</form>
	</div>
			<div class="comment-list-container">
		<a id="comments"></a>
		<div class="comment-list-box">
		</div>
		<div id="commentPage" class="pagination-box d-none"></div>
		<div class="opt-box text-center">
			<button class="btn btn-sm btn-link-blue" id="btnMoreComment"></button>
		</div>
	</div>
</div>        <div class="recommend-box">
            		<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/ayanami001/article/details/48102883" target="_blank" strategy="BlogCommendFromQuerySearch_0">
				简单之美-<em>Dubbo</em><em>架构设计</em><em>详解</em>			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/ayanami001/article/details/48102883" target="_blank" >
				<em>Dubbo</em>是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,<em>Dubbo</em>采用的是一种非常简单的模...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/ayanami001" title="ayanami001" target="_blank">
					<img src="https://avatar.csdn.net/0/2/1/3_ayanami001.jpg" alt="ayanami001" class="avatar-pic">
					<span class="name">ayanami001</span>
				</a>
			</p>
			<p>
				<span class="date">2015-08-30 11:02:09</span>
			</p>
			<p>
				<span class="read-num">阅读数:361</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/u012562943/article/details/49025303" target="_blank" strategy="BlogCommendFromQuerySearch_1">
				<em>Dubbo</em>学习总结(2)——<em>Dubbo</em>架构<em>详解</em>			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/u012562943/article/details/49025303" target="_blank" >
				一、前言

部门去年年中开始各种改造,第一步是模块服务化,这边初选<em>dubbo</em>试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下。

整理这篇文章...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/u012562943" title="u012562943" target="_blank">
					<img src="https://avatar.csdn.net/B/E/8/3_u012562943.jpg" alt="u012562943" class="avatar-pic">
					<span class="name">u012562943</span>
				</a>
			</p>
			<p>
				<span class="date">2015-10-10 16:11:32</span>
			</p>
			<p>
				<span class="read-num">阅读数:5378</span>
			</p>
		</div>
	</div>
								<div class="recommend-item-box recommend-ad-box" id="ad1"></div>
				<script>
				  var width = $("div.recommend-box").outerWidth() - 48;
					NEWS_FEED({
						w: width,
						h : 90,
						showid : 'GNKXx7',
						placeholderId: "ad1",
						inject : 'define',
						define : {
							imagePosition : 'right',
							imageBorderRadius : 0,
							imageWidth: 120,
							imageHeight: 90,
							imageFill : 'clip',
							displayImage : true,
							displayTitle : true,
							titleFontSize: 20,
							titleFontColor: '#333',
							titleFontFamily : 'Microsoft Yahei',
							titleFontWeight: 'bold',
							titlePaddingTop : 0,
							titlePaddingRight : 0,
							titlePaddingBottom : 10,
							titlePaddingLeft : 0,
							displayDesc : true,
							descFontSize: 14,
							descFontColor: '#6b6b6b',
							descFontFamily : 'Microsoft Yahei',
							paddingTop : 0,
							paddingRight : 0,
							paddingBottom : 0,
							paddingLeft : 0,
							backgroundColor: '#fff',
							hoverColor: '#ca0c16'
						}
					})
				</script>

			
				<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/u013034223/article/details/53516806" target="_blank" strategy="BlogCommendFromQuerySearch_2">
				架构之美 ----- <em>Dubbo</em> 框架			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/u013034223/article/details/53516806" target="_blank" >
				实习项目中用的框架是<em>Dubbo</em>,还记得刚进公司的时候,架构师给我们简单地说了项目的架构,也问了问之前接触过的框架。具体内容记不清了,关键字包括:WebService,SOA。可以说,这两者并不陌生,而...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/u013034223" title="u013034223" target="_blank">
					<img src="https://avatar.csdn.net/E/5/2/3_u013034223.jpg" alt="u013034223" class="avatar-pic">
					<span class="name">u013034223</span>
				</a>
			</p>
			<p>
				<span class="date">2016-12-08 13:06:51</span>
			</p>
			<p>
				<span class="read-num">阅读数:562</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/yinwenjie/article/details/50277289" target="_blank" strategy="BlogCommendFromQuerySearch_3">
				<em>架构设计</em>:系统间通信(17)——服务治理与<em>Dubbo</em> 中篇(分析)			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/yinwenjie/article/details/50277289" target="_blank" >
				上篇文章中(《<em>架构设计</em>:系统间通信(15)——服务治理与<em>Dubbo</em> 上篇》),我们以示例的方式讲解了阿里<em>DUBBO</em>服务治理框架基本使用。从这节开始我们将对<em>DUBBO</em>的主要模块的设计原理进行讲解,从而帮...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/yinwenjie" title="yinwenjie" target="_blank">
					<img src="https://avatar.csdn.net/1/E/F/3_yinwenjie.jpg" alt="yinwenjie" class="avatar-pic">
					<span class="name">yinwenjie</span>
				</a>
			</p>
			<p>
				<span class="date">2015-12-19 10:23:00</span>
			</p>
			<p>
				<span class="read-num">阅读数:24025</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/meilong_whpu/article/details/72156192" target="_blank" strategy="BlogCommendFromQuerySearch_4">
				<em>Dubbo</em>框架——整体架构			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/meilong_whpu/article/details/72156192" target="_blank" >
				      上图中,左边是serviceConsumer使用的接口和类;右边是serviceProvider使用的接口和类;中间是双方均要使用的接口和类。总体上将整个架构分成三大层,分别是Busine...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/meilong_whpu" title="meilong_whpu" target="_blank">
					<img src="https://avatar.csdn.net/7/B/B/3_meilong_whpu.jpg" alt="meilong_whpu" class="avatar-pic">
					<span class="name">meilong_whpu</span>
				</a>
			</p>
			<p>
				<span class="date">2017-05-15 15:55:49</span>
			</p>
			<p>
				<span class="read-num">阅读数:469</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/harwey_it/article/details/80225907" target="_blank" strategy="BlogCommendFromQuerySearch_5">
				【<em>Dubbo</em>】<em>Dubbo</em><em>架构设计</em><em>详解</em>			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/harwey_it/article/details/80225907" target="_blank" >
				<em>Dubbo</em>是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,<em>Dubbo</em>采用的是一种非常简单的模...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/harwey_it" title="harwey_it" target="_blank">
					<img src="https://avatar.csdn.net/8/B/2/3_harwey_it.jpg" alt="harwey_it" class="avatar-pic">
					<span class="name">harwey_it</span>
				</a>
			</p>
			<p>
				<span class="date">2018-05-07 14:58:16</span>
			</p>
			<p>
				<span class="read-num">阅读数:42</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box recommend-ad-box" id="a_d_feed_0"></div>
			<script>
				var width = $("div.recommend-box").outerWidth() - 48;
				NEWS_FEED({
					w: width,
					h: 90,
					showid: 'Afihld',
					placeholderId: 'a_d_feed_0',
					inject: 'define',
					define: {
						imagePosition: 'right',
						imageBorderRadius: 0,
						imageWidth: 120,
						imageHeight: 90,
						imageFill: 'clip',
						displayImage: true,
						displayTitle: true,
						titleFontSize: 20,
						titleFontColor: '#333',
						titleFontFamily: 'Microsoft Yahei',
						titleFontWeight: 'bold',
						titlePaddingTop: 0,
						titlePaddingRight: 0,
						titlePaddingBottom: 10,
						titlePaddingLeft: 0,
						displayDesc: true,
						descFontSize: 14,
						descFontColor: '#6b6b6b',
						descFontFamily: 'Microsoft Yahei',
						paddingTop: 0,
						paddingRight: 0,
						paddingBottom: 0,
						paddingLeft: 0,
						backgroundColor: '#fff',
						hoverColor: '#ca0c16'
					}
				})
			</script>
			<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/wangshuang1631/article/details/53857437" target="_blank" strategy="BlogCommendFromQuerySearch_6">
				<em>Dubbo</em>设计与架构介绍			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/wangshuang1631/article/details/53857437" target="_blank" >
				1、背景随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构
当网站流量很小时,只需一...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/wangshuang1631" title="wangshuang1631" target="_blank">
					<img src="https://avatar.csdn.net/6/7/8/3_wangshuang1631.jpg" alt="wangshuang1631" class="avatar-pic">
					<span class="name">wangshuang1631</span>
				</a>
			</p>
			<p>
				<span class="date">2016-12-24 11:27:01</span>
			</p>
			<p>
				<span class="read-num">阅读数:1575</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/u011411283/article/details/48023285" target="_blank" strategy="BlogCommendFromQuerySearch_7">
				<em>Dubbo</em><em>架构设计</em>			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/u011411283/article/details/48023285" target="_blank" >
				<em>Dubbo</em>是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,<em>Dubbo</em>采用的是一种非常简单的模...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/u011411283" title="u011411283" target="_blank">
					<img src="https://avatar.csdn.net/A/F/D/3_u011411283.jpg" alt="u011411283" class="avatar-pic">
					<span class="name">u011411283</span>
				</a>
			</p>
			<p>
				<span class="date">2015-08-27 10:08:53</span>
			</p>
			<p>
				<span class="read-num">阅读数:436</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/qq_32529933/article/details/76145597" target="_blank" strategy="BlogCommendFromQuerySearch_8">
				Java基于<em>Dubbo</em>x 的分布式服务的项目架构			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/qq_32529933/article/details/76145597" target="_blank" >
				结构
web: API项目 
service: 后台服务 
common: 工具类,通用的一些常量,设置等
maven
pom.xml
src/
    main
        java
     ...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/qq_32529933" title="qq_32529933" target="_blank">
					<img src="https://avatar.csdn.net/9/2/F/3_qq_32529933.jpg" alt="qq_32529933" class="avatar-pic">
					<span class="name">qq_32529933</span>
				</a>
			</p>
			<p>
				<span class="date">2017-07-26 14:09:34</span>
			</p>
			<p>
				<span class="read-num">阅读数:160</span>
			</p>
		</div>
	</div>
					<div class="recommend-item-box csdn-tracking-statistics" data-mod="popu_614" data-poputype="feed"  data-feed-show="false"  data-dsm="post">
		<h4 class="text-truncate">
			<a href="https://blog.csdn.net/shiyus1314/article/details/79384671" target="_blank" strategy="BlogCommendFromQuerySearch_9">
				<em>Dubbo</em><em>架构设计</em><em>详解</em>(转载)			</a>
		</h4>
		<p class="content">
			<a href="https://blog.csdn.net/shiyus1314/article/details/79384671" target="_blank" >
				原文地址:http://shiyanjun.cn/archives/325.html<em>Dubbo</em>是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦...			</a>
		</p>
		<div class="info-box d-flex align-content-center">
			<p>
				<a class="avatar" src="https://blog.csdn.net/shiyus1314" title="shiyus1314" target="_blank">
					<img src="https://avatar.csdn.net/6/9/2/3_shiyus1314.jpg" alt="shiyus1314" class="avatar-pic">
					<span class="name">shiyus1314</span>
				</a>
			</p>
			<p>
				<span class="date">2018-02-27 10:29:52</span>
			</p>
			<p>
				<span class="read-num">阅读数:61</span>
			</p>
		</div>
	</div>
			            <div class="recommend-loading-box">
                <img src='https://csdnimg.cn/release/phoenix/images/feedLoading.gif'>
            </div>
            <div class="recommend-end-box">
                <p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p>
            </div>
        </div>
    </main>
    <aside>
		    <div id="asideProfile" class="aside-box">
    <h3 class="aside-title">个人资料</h3>
    <div class="profile-intro d-flex">
        <div class="avatar-box d-flex justify-content-center flex-column">
            <a href="https://blog.csdn.net/fly_zhyu">
                <img src="https://avatar.csdn.net/E/D/3/3_fly_zhyu.jpg" class="avatar_pic">
            </a>
        </div>
        <div class="user-info d-flex justify-content-center flex-column">
            <p class="name csdn-tracking-statistics tracking-click" data-mod="popu_379">
                <a href="https://blog.csdn.net/fly_zhyu" target="_blank" class="text-truncate" id="uid">fly_zhyu</a>
            </p>
                    </div>
                <div class="opt-box d-flex justify-content-center flex-column">
            <span  class="csdn-tracking-statistics tracking-click" data-mod="popu_379">
                                <a class="btn btn-sm btn-red-hollow" id="btnAttent">关注</a>
                            </span>
                    </div>
            </div>
    <div class="data-info d-flex item-tiling">
                <dl class="text-center" title="49">
                        <dt><a href="https://blog.csdn.net/fly_zhyu?t=1">原创</a></dt>
            <dd><a href="https://blog.csdn.net/fly_zhyu?t=1"><span class="count">49</span></a></dd>
                    </dl>
        <dl class="text-center" title="37">
            <dt>粉丝</dt>
            <dd><span class="count" id="fan">37</span></dd>
        </dl>
        <dl class="text-center" title="35">
            <dt>喜欢</dt>
            <dd><span class="count">35</span></dd>
        </dl>
        <dl class="text-center" title="14">
            <dt>评论</dt>
            <dd><span class="count">14</span></dd>
        </dl>
    </div>
    <div class="grade-box clearfix">
        <dl>
            <dt>等级:</dt>
            <dd>
                <a href="https://blog.csdn.net/home/help.html#level" title="4级,点击查看等级说明" target="_blank">
                    <svg class="icon icon-level" aria-hidden="true">
                        <use xlink:href="#csdnc-bloglevel-4"></use>
                    </svg>
                </a>
            </dd>
        </dl>
        <dl>
            <dt>访问:</dt>
            <dd title="100283">
                10万+            </dd>
        </dl>
        <dl>
            <dt>积分:</dt>
            <dd title="1111">
                1111            </dd>
        </dl>
        <dl title="47671">
            <dt>排名:</dt>
            <dd>4万+</dd>
        </dl>
    </div>
        <div class="badge-box d-flex">
        <span>勋章:</span>
                        <a class="icon-badge" title="持之以恒">
            <svg class="icon" aria-hidden="true">
                <use xlink:href="#csdnc-m-lasting"></use>
            </svg>
            <div class="icon-arrow"></div>
            <div class="grade-detail-box item2">
                <div class="pos-box">
                    <div class="left-box d-flex justify-content-center align-items-center flex-column">
                        <svg class="icon" aria-hidden="true">
                            <use xlink:href="#csdnc-m-lasting"></use>
                        </svg>
                        <p>持之以恒</p>
                    </div>
                    <div class="right-box d-flex justify-content-center align-items-center">
                        授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
                    </div>
                </div>
            </div>
        </a>
                            </div>
    </div>		    <div class="csdn-tracking-statistics mb8 box-shadow" data-pid="blog" data-mod="popu_4" style="height:250px;">
    <div class="aside-content text-center" id="cpro_u2734133">
        <!-- 投放代码 -->
        <script type="text/javascript" src="//cee1.iteye.com/lgyyovfyh.js"></script>
    </div>
</div>
		    <div id="asideNewArticle" class="aside-box">
    <h3 class="aside-title">最新文章</h3>
    <div class="aside-content">
        <ul class="inf_list clearfix csdn-tracking-statistics tracking-click" data-mod="popu_382">
                        <li class="clearfix">
                <a href="https://blog.csdn.net/fly_zhyu/article/details/79532312" target="_blank">使用注解校验前端传入数据</a>
            </li>
                        <li class="clearfix">
                <a href="https://blog.csdn.net/fly_zhyu/article/details/79152934" target="_blank">Java开发RESTful</a>
            </li>
                        <li class="clearfix">
                <a href="https://blog.csdn.net/fly_zhyu/article/details/79064567" target="_blank">阿里MySQL数据库建表规约</a>
            </li>
                        <li class="clearfix">
                <a href="https://blog.csdn.net/fly_zhyu/article/details/78947938" target="_blank">如何高效学习</a>
            </li>
                        <li class="clearfix">
                <a href="https://blog.csdn.net/fly_zhyu/article/details/78909217" target="_blank">Java8提供的几种遍历方法</a>
            </li>
                    </ul>
    </div>
</div>
		    		    <div id="asideCategory" class="aside-box flexible-box">
    <h3 class="aside-title">个人分类</h3>
    <div class="aside-content">
        <ul>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/6995890">
                    Java                    <span class="count float-right">14篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/7020985">
                    框架                    <span class="count float-right">8篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/6969923">
                    Java8深入学习与实战                    <span class="count float-right">2篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/6969918">
                    MySQL                    <span class="count float-right">12篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/6969919">
                    Redis                    <span class="count float-right">9篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/6982661">
                    计算机                    <span class="count float-right">2篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/6997980">
                    开发工具                    <span class="count float-right">12篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/7001252">
                    程序人生                    <span class="count float-right">4篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/6974143">
                    js                    <span class="count float-right">1篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/7014339">
                    Linux                    <span class="count float-right">1篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/7064512">
                    先了解                    <span class="count float-right">13篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/7104067">
                    面试                    <span class="count float-right">4篇</span>
                </a>
            </li>
                        <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/category/7135513">
                    架构探险                    <span class="count float-right">3篇</span>
                </a>
            </li>
                    </ul>
    </div>
        <p class="text-center">
        <a class="btn btn-link-blue flexible-btn" data-fbox="aside-archive">展开</a>
    </p>
    </div>
		    <div id="asideArchive" class="aside-box flexible-box">
    <h3 class="aside-title">归档</h3>
    <div class="aside-content">
        <ul class="archive-list">
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2018/03">
                    2018年3月                    <span class="count float-right">1篇</span>
                </a>
            </li>
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2018/01">
                    2018年1月                    <span class="count float-right">3篇</span>
                </a>
            </li>
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2017/12">
                    2017年12月                    <span class="count float-right">1篇</span>
                </a>
            </li>
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2017/11">
                    2017年11月                    <span class="count float-right">1篇</span>
                </a>
            </li>
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2017/09">
                    2017年9月                    <span class="count float-right">1篇</span>
                </a>
            </li>
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2017/08">
                    2017年8月                    <span class="count float-right">13篇</span>
                </a>
            </li>
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2017/07">
                    2017年7月                    <span class="count float-right">38篇</span>
                </a>
            </li>
                        <!--归档统计-->
            <li>
                <a href="https://blog.csdn.net/fly_zhyu/article/month/2017/06">
                    2017年6月                    <span class="count float-right">27篇</span>
                </a>
            </li>
                    </ul>
    </div>
        <p class="text-center">
        <a class="btn btn-link-blue flexible-btn" data-fbox="aside-archive">展开</a>
    </p>
    </div>
		    <div id="asideHotArticle" class="aside-box">
	<h3 class="aside-title">热门文章</h3>
	<div class="aside-content">
		<ul class="hotArticle-list csdn-tracking-statistics tracking-click" data-mod="popu_521">
							<li>
					<a href="https://blog.csdn.net/fly_zhyu/article/details/76407830">Spring Boot浅谈(是什么/能干什么/优点和不足)</a>
					<p class="read">阅读量:<span>32513</span></p>
				</li>
							<li>
					<a href="https://blog.csdn.net/fly_zhyu/article/details/76408158">微服务架构(一):什么是微服务</a>
					<p class="read">阅读量:<span>32179</span></p>
				</li>
							<li>
					<a href="https://blog.csdn.net/fly_zhyu/article/details/77417820">我要高效学习</a>
					<p class="read">阅读量:<span>5366</span></p>
				</li>
							<li>
					<a href="https://blog.csdn.net/fly_zhyu/article/details/77169780">分布式-微服务-集群的区别</a>
					<p class="read">阅读量:<span>2692</span></p>
				</li>
							<li>
					<a href="https://blog.csdn.net/fly_zhyu/article/details/75637200">Java9新特性介绍</a>
					<p class="read">阅读量:<span>2372</span></p>
				</li>
					</ul>
	</div>
</div>
		    <div id="asideNewComments" class="aside-box">
    <h3 class="aside-title">最新评论</h3>
    <div class="aside-content">
        <ul class="newcomment-list">
                        <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/fly_zhyu/article/details/77624147#comments">和父母通话随笔</a>
                <p class="comment">
                    <a href="https://my.csdn.net/qq_27580945" class="user-name" target="_blank">qq_27580945</a>:加油博主                </p>
            </li>
                        <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/fly_zhyu/article/details/79532312#comments">使用注解校验前端传入数据</a>
                <p class="comment">
                    <a href="https://my.csdn.net/XIAOXIAOCHEN_123" class="user-name" target="_blank">XIAOXIAOCHEN_123</a>:您好,有兴趣写本书吗                </p>
            </li>
                        <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/fly_zhyu/article/details/76408158#comments">微服务架构(一):什么是微服务</a>
                <p class="comment">
                    <a href="https://my.csdn.net/mql007007" class="user-name" target="_blank">mql007007</a>:基于Angular和WCF的轻量级微服务研发框架已经完成,已经开源,与大家共勉。
https://...                </p>
            </li>
                        <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/fly_zhyu/article/details/76407830#comments">Spring Boot浅谈(是什么...</a>
                <p class="comment">
                    <a href="https://my.csdn.net/lingsui007" class="user-name" target="_blank">lingsui007</a>:感谢作者的无私分享,分享目前主流的技术干货教程:SpringBoot+SpringCloud(20...                </p>
            </li>
                        <li>
                <a class="title text-truncate" target="_blank" href="https://blog.csdn.net/fly_zhyu/article/details/76408158#comments">微服务架构(一):什么是微服务</a>
                <p class="comment">
                    <a href="https://my.csdn.net/wgp15732622312" class="user-name" target="_blank">wgp15732622312</a>:学习了,这就是微服务啊。                </p>
            </li>
                    </ul>
    </div>
</div>
		<div id="asideFooter">
			
		<div class="aside-box">
						<script type="text/javascript" src="//cee1.iteye.com/mhzzpwgzj.js"></script>
					</div>
				<div class="aside-box">
			<div class="persion_article">
			</div>
		</div>
	</div>
</aside>
<script src="https://csdnimg.cn/pubfooter/js/publib_footer-1.0.3.js?20180309" data-isfootertrack="false" type="text/javascript"></script>
<script>
	$("a.flexible-btn").click(function(){
		$(this).parents('div.aside-box').removeClass('flexible-box');
		$(this).remove();
	})
</script>
</div>
<div class="mask-dark"></div>
<div class="report-box">
    <div class="pos-box">
        <h2 class="title">不良信息举报</h2>
        <a class="btn-close">
            <svg class="icon" aria-hidden="true">
                <use xlink:href="#csdnc-times"></use>
            </svg>
        </a>
        <form id="frmReport">
            <div class="form-box">
                <div class="txt-row-box">
                    <label class="title" id="reptTit">举报内容:</label>
                    <p class="rpt-title text-truncate">Dubbo架构设计详解</p>
                </div>
                <div class="txt-row-box">
                    <label class="title">举报原因:</label>
                    <div class="rdo-box">
                        <label><input type="radio" class="rdo-chk report-type" id="report_sex" name="report_type" value="1">色情</label>
                        <label><input type="radio" class="rdo-chk report-type" id="report_Politics" name="report_type" value="2">政治</label>
                        <label><input type="radio" class="rdo-chk report-type" id="report_copy" name="report_type" value="3">抄袭</label>
                        <label><input type="radio" class="rdo-chk report-type" id="report_ad" name="report_type" value="4">广告</label>
                        <label><input type="radio" class="rdo-chk report-type" id="report_want" name="report_type" value="5">招聘</label>
                        <label><input type="radio" class="rdo-chk report-type" id="report_call" name="report_type" value="6">骂人</label>
                        <label><input type="radio" class="rdo-chk report-type" id="report_other" name="report_type" value="7">其他</label>
                    </div>
                </div>
                <div class="txt-row-box" id="rptOriginalurl">
                    <label class="title">原文地址:</label>
                    <div class="txt-box">
                        <input class="ipt" type="text" id="originalurl" name="originalurl">
                    </div>
                </div>
                <div class="txt-row-box">
                    <label class="title">原因补充:</label>
                    <div class="txt-box">
                        <textarea class="ipt ipt-textarea" name="description" maxlength="30"></textarea>
                        <p class="remark">最多只允许输入30个字</p>
                    </div>
                </div>
            </div>
            <div class="opt-box text-right">
                <input type="reset" class="btn btn-link-gray btn-close" value="取消">
                <input type="submit" class="btn btn-red btn-submit" value="提交">
            </div>
        </form>
    </div>
</div>
<div class="tool-box">
	<ul class="meau-list">
		<li>
			<button class="btn-like " title="点赞">
				<svg class="icon active" aria-hidden="true">
					<use xlink:href="#csdnc-thumbsup-ok"></use>
				</svg><svg class="icon no-active" aria-hidden="true">
					<use xlink:href="#csdnc-thumbsup"></use>
				</svg>
				<p>0</p>
			</button>
		</li>
		<li class="toc-container-box" id="liTocBox">
			<button class="btn-toc" title="目录">
				<svg class="icon" aria-hidden="true">
					<use xlink:href="#csdnc-contents"></use>
				</svg><br>目录
			</button>
			<div class="toc-container">
				<div class="pos-box">
					<div class="icon-arrow"></div>
					<div class="scroll-box">
						<div class="toc-box"></div>
					</div>
				</div>
				<div class="opt-box">
					<button class="btn-opt prev nomore" title="向上">
						<svg class="icon" aria-hidden="true">
							<use xlink:href="#csdnc-chevronup"></use>
						</svg>
					</button>
					<button class="btn-opt next">
						<svg class="icon" aria-hidden="true">
							<use xlink:href="#csdnc-chevrondown"></use>
						</svg>
					</button>
				</div>
			</div>
		</li>
		<li>
			<button class="btn-bookmark" title="收藏">
				<svg class="icon active" aria-hidden="true">
					<use xlink:href="#csdnc-bookmark-ok"></use>
				</svg><svg class="icon no-active" aria-hidden="true">
					<use xlink:href="#csdnc-bookmark"></use>
				</svg><br>收藏
			</button>
		</li>
		<li>
			<a class="btn-comments" title="评论" href="#commentBox">
				<svg class="icon" aria-hidden="true">
					<use xlink:href="#csdnc-comments"></use>
				</svg><br>评论
			</a>
		</li>
				<li class="bdsharebuttonbox">
			<a class="btn-comments bds_weixin" data-cmd="weixin" title="微信分享">
				<svg class="icon" aria-hidden="true">
					<use xlink:href="#csdnc-wechat"></use>
				</svg><br>微信
			</a>
		</li>
		<li class="bdsharebuttonbox">
			<a class="btn-comments bds_tsina" data-cmd="tsina" title="微博分享">
				<svg class="icon" aria-hidden="true">
					<use xlink:href="#csdnc-weibo"></use>
				</svg><br>微博
			</a>
		</li>
		<li class="bdsharebuttonbox">
			<a class="btn-comments bds_qzone" data-cmd="qzone" title="QQ分享">
				<svg class="icon" aria-hidden="true">
					<use xlink:href="#csdnc-qq"></use>
				</svg><br>QQ
			</a>
		</li>
	</ul>
</div>
<script>window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "1", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "16" }, "share": {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'https://csdnimg.cn/static/api/js/share.js?v=89860594'];</script>
<script>
    var recommendCount = 10;
    recommendCount = recommendCount > 1 ? (recommendCount + (recommendCount>6 ? 2 : 1)) : recommendCount;
    var articleTit = 'Dubbo架构设计详解';
    var ChannelId = 15;
    var articleId = '76407698';
    var commentscount = 0;
    var islock = false;
    var curentUrl = "https://blog.csdn.net/fly_zhyu/article/details/76407698";
    var myUrl = "https://my.csdn.net/";
    //1禁止评论,2正常
    var commentAuth = 2;
    //百度搜索
    var baiduKey = "";
    var needInsertBaidu = true;
</script>
<script src="https://csdnimg.cn/public/sandalstrap/1.3/js/sandalstrap.min.js"></script>
<script src="https://csdnimg.cn/release/phoenix/vendor/pagination/paging.js"></script>
<script src='https://csdnimg.cn/public/common/gotop/js/goTop-v1.0.min.js?v201803151422'></script>
<script>
    GoTop({
        right: 8,
        hasReport: true,
        reportFun: function() {
            showReport(false,'Dubbo架构设计详解');
        }
    })
</script>
<script src="https://csdnimg.cn/release/phoenix/template/js/common-bd54b21308.min.js"></script>
<script src="https://csdnimg.cn/release/phoenix/template/js/detail-cf34e98bf0.min.js"></script>
<script src="https://csdnimg.cn/release/phoenix/themes/skin-yellow/skin-yellow-22f3069ef3.min.js"></script>
</body>
<div class="box-box-default">
    <a class="btn-remove">
        关闭
    </a>
    <script type="text/javascript" src="//cee1.iteye.com/mhzzjepzz.js"></script>
</div>
<div class="box-box-large">
    <a class="btn-remove">
        关闭
    </a>
    <script type="text/javascript" src="//cee1.iteye.com/idvveasfs.js"></script>
</div>
</html>


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值