牛骨文教育服务平台(让学习变的简单)
博文笔记

dubbo原理

创建时间:2017-02-05 投稿人: 浏览次数:147


什么是dubbo

Dubbo是阿里巴巴开发用来用来治理服务中间件。

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

·        单一应用架构

·        当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。

·        此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。

·        垂直应用架构

·        当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。

·        此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

·        分布式服务架构

·        当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

·        此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。

·        流动计算架构

·        当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

·        此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

 

Dubbo就是资源调度和治理中心的管理工具。

 

Dubbo的架构

节点角色说明:

·        Provider: 暴露服务的服务提供方(service服务层)。

·        Consumer: 调用远程服务的服务消费方(web表现层)。

·        Registry: 服务注册与发现的注册中心(zookeeper)。

·        Monitor: 统计服务的调用次调和调用时间的监控中心。

·        Container: 服务运行容器(tomcat容器,spring容器)。

调用关系说明:

·        0. 服务容器负责启动,加载,运行服务提供者。

·        1. 服务提供者在启动时,向注册中心注册自己提供的服务。

·        2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

·        3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

·        4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

·        5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

注册服务关系图解:

 

注册发布服务流程:

1)  服务容器启动(tomcat容器,spring容器)

2)  Service服务层项目发布服务

a)        Dubbo服务治理中间件把服务发布存储到Zookeeper注册中心

3)  Web层服务调用服务

a)        Dubbo服务治理中间件去Zookeeper注册中心获取服务。

什么是dubbo

Dubbo是阿里巴巴开发用来用来治理服务中间件。

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

·        单一应用架构

·        当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。

·        此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。

·        垂直应用架构

·        当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。

·        此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

·        分布式服务架构

·        当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

·        此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。

·        流动计算架构

·        当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

·        此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

 

Dubbo就是资源调度和治理中心的管理工具。

 


什么是dubbo

Dubbo是阿里巴巴开发用来用来治理服务中间件。

随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

·        单一应用架构

·        当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。

·        此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。

·        垂直应用架构

·        当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。

·        此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

·        分布式服务架构

·        当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。

·        此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。

·        流动计算架构

·        当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。

·        此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

 

Dubbo就是资源调度和治理中心的管理工具。

 

Dubbo的架构

节点角色说明:

·        Provider: 暴露服务的服务提供方(service服务层)。

·        Consumer: 调用远程服务的服务消费方(web表现层)。

·        Registry: 服务注册与发现的注册中心(zookeeper)。

·        Monitor: 统计服务的调用次调和调用时间的监控中心。

·        Container: 服务运行容器(tomcat容器,spring容器)。

调用关系说明:

·        0. 服务容器负责启动,加载,运行服务提供者。

·        1. 服务提供者在启动时,向注册中心注册自己提供的服务。

·        2. 服务消费者在启动时,向注册中心订阅自己所需的服务。

·        3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。

·        4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。

·        5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

注册服务关系图解:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


注册发布服务流程:

1)  服务容器启动(tomcat容器,spring容器)

2)  Service服务层项目发布服务

a)        Dubbo服务治理中间件把服务发布存储到Zookeeper注册中心

3)  Web层服务调用服务

a)        Dubbo服务治理中间件去Zookeeper注册中心获取服务。

 

 

 

 

 

 

 

5.        安装注册中心

根据dubbo发布服务和引用服务:发布和引用服务中心在Zookeeper里面。

Dubbo发布服务到Zookeeper注册中心,用户获取服务从Zookeeper注册中心获取。

安装步骤:

1)  导入Zookeeper到/usr/local/Hadoop

a)       使用rz命令导入zookeeper-3.4.5.tar.gz

2)  解压

a)       tar -zxvfzookeeper-3.4.5.tar.gz

3)  修改Zookeeper名称

a)       mv zookeeper-3.4.5 zookeeper//修改为Zookeeper

4)  修改Zookeeper配置文件

a)       修改配置文件名称

[root@localhost conf]# ll

total 12

-rw-r--r--. 1mine games  535 Oct  1  2012configuration.xsl

-rw-r--r--. 1mine games 2161 Oct  1  2012 log4j.properties

-rw-r--r--. 1mine games  808 Oct  1  2012zoo_sample.cfg

[root@localhostconf]# mv zoo_sample.cfg zoo.cfg

b)       加载数据目录

                        i.             dataDir=/usr/local/hadoop/zookeeper/data

                      ii.             配置位置:zoo.cfg

 

c)        加载日志目录

                        i.             dataLogDir=/usr/local/hadoop/zookeeper/log

                      ii.             配置位置:zoo.cfg

d)       在Zookeeper目录下创建data和log

 

 

e)        Zookeeper端口

clientPort=2181

5)  启动Zookeeper服务

a)       进入bin目录:./zkServer.shstart

b)       查询Zookeeper启动状态:./zkServer.sh status

6)  登录

a)       进入bin目录:./zkCli.sh

b)       查询节点信息:ls /

6.        改造服务

改造淘淘商城为面向服务架构SOA工程。

改造思路:

1)  Taotao-manager-web提取出来,不再被taotao-manager聚合

2)  Taotao-manager-service改造war

3)  改造以后架构:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


                                                                  继承

 

继承

 

 

Dao:访问数据库

Taotao-manager-dao(jar)

 

后台父工程:

Taotao-manager(pom)

 

                                            依赖

 

 

 

Web层:表现层

Taotao-manager-web(war)

 

Pojo:管理javaBean

Taotao-manager-pojo(jar)

 

                  聚合

 

 


                                                        依赖

                    聚合

 

 


Service:处理业务

Taotao-manager-service(war)

 

                    聚合                            依赖

 

 

 

                            

 

7.        服务层改造

1)  taotao-manager-service改造成war包

对项目进行面向服务架构拆分:项目业务代码单独变成一个服务,提供给表现层来调用,因此需要将业务层拆分成一个服务(war).

2)  取消聚合taotao-manager-web

taotao-manager聚合工程中删除taotao-manager-web,此工程属于独立的服务,不再被taotao-manager聚合。

3)  创建wepapp/WEB-INF/web.xml

拷贝taotao-manager-web的webapp文件夹.

4)  拷贝spring相关配置文件

拷贝spring业务相关的配置文件到Service的服务层(注意:Service此时变成web项目,需要加载配置文件)

5)  修改web.xml加载配置文件

Service业务变成web项目需要加载配置文件,因此需要拷贝web.xml配置文件,并且修改配置文件加载spring相关配置文件。

 

只需要加载spring配置文件即可

6)  从工作空间移动taotao-manager-web和taotao-manager同一级目录。

真正解除taotao-manager-web和taotao-manager聚合关系

剪切后,刷新发现聚合taotao-manager-web消失

需要重新导入:作为一个MAVEN工程导入

7)  抽取taotao-manager-service接口

抽取接口作用:

l 把接口注册Zookeeper注册中心

l Taotao-manager-web通过接口引入service服务

第一步:创建一个taotao-manager聚合子工程taotao-manager-interface

8)把service层接口移动到接口工程taotao-manager-interface

第一步:移动接口

实现类工程:taotao-manager-service需要实现接口,必须依赖接口工程taotao-manager-interface.

第二步:修改pom文件

由于接口需要pojo包,需要依赖pojo坐标。

第三步:service实现类pom依赖接口

修改taotao-manager-service依赖taotao-manager-interface接口工程:

9)  配置tomcat插件

分析:由于taotao-manager-service是taotao-manager的聚合工程,配置tomcat插件一般在聚合工程父工程(taotao-manager)配置:

10)             在tatao-manager-service中添加dubbo和Zookeeper坐标

<!--dubbo相关 -->

                     <dependency>

                            <groupId>com.alibaba</groupId>

                            <artifactId>dubbo</artifactId>

                            <version>${dubbo.version}</version>

                     </dependency>

                     <dependency>

                            <groupId>org.apache.zookeeper</groupId>

                            <artifactId>zookeeper</artifactId>

                            <version>${zookeeper.version}</version>

                     </dependency>

                     <dependency>

                            <groupId>com.github.sgroschupf</groupId>

                            <artifactId>zkclient</artifactId>

                            <version>${zkclient.version}</version>

                     </dependency>

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。