Dubbo

dubbo

  1. SOA架构原理

1.1背景

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

 

  • 单一应用架构
    • 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。
    • 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
  • 垂直应用架构
    • 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
    • 此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
  • 分布式服务架构
    • 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
    • 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
  • 流动计算架构
    • 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。
    • 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

 

1.2为什么要SOA?

 

(1)原始开发的缺点

(2)SOA的优点

 

1.3 SOA的实现方式

  1. 使用dubbo

(1)dubbo是什么?

DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

 

(2)dubbo解决了哪些问题

  1. 将服务抽离单独的服务层
  2. 应用层和服务层同时支持集群,应用层和服务层可随时增加节点
  3. NIO的服务调用方式,解决性能问题
  4. 监控,以应对大并发阻塞

 

(3)dubbo的优势

  1. 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入;
  2. 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点;
  3. 服务自动注册与发现,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

 

(4)、类似的解决方案

淘宝:HSF、亚马逊:Coral

2.1、dubbo-admin管理控制台

2.2、dubbo-monitor监控中心

监控中心的主要使用就是查看dubbo提供者和消费者的信息,以及他们的调用情况。

1、下载dubbo-monitor

2、然后修conf/dubbo.properties

dubbo.registry.address=zookeeper://172.26.7.23:2181

dubbo.jetty.port=28080

3、执行start.bat,启动监控中心

4、在浏览器输入 http://localhost:28080,就可以进入监控中心

2.3、zookeeper注册中心

Dubbo一般使用Zookeeper作为其注册中心

 

1、下载zookeeper

2、然后修conf/zoo.cfg

dataDir=D:\\zookeeper-3.4.5\\data

dataLogDir=D:\\zookeeper-3.4.5\\log

3、执行zkServer.cmd,启动Zookeeper

 

2.4、Telnet工具

Dubbo执行通过命令行来查看服务方的信息

执行 telnet 127.0.0.1 20880,则可进入命令行界面

 

常用命令:

ls    显示服务列表。

ls –l  显示服务详细信息列表。

ps   显示服务端口列表。

ps –l 显示服务地址列表。

invoke com.bestpay.dubbo.demo.service.DemoService.sayHello("llx")

调用服务的方法。

 

2.5、dubbo开发

2.5.1、服务端的开发

(1)、配置dubbo信息

<!-- 提供方应用名称 -->

<dubbo:application name="account-service-provider" />

<!– dubbo注册中心-->

<dubbo:registry address="zookeeper://172.26.7.23:2181" />

<!-- 用dubbo协议在20880端口暴露服务 -->

<dubbo:protocol name="dubbo" port="20880" />

 

(2)、配置dubbo提供方服务

<!– 声明一个普通的Spring bean-->

<bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" />

<!-- 声明dubbo服务-->

<dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" />

 

(3)、启动dubbo服务

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"provider.xml"});

context.start();

 

 

 

2.5.2、客户端的开发

(1)、配置dubbo信息

<!– 消费者应用名称 -->

<dubbo:application name="account-service-consumer" />

<!– dubbo注册中心-->

<dubbo:registry address="zookeeper://172.26.7.23:2181" />

 

(2)、配置dubbo消费者

<!-- 可以和本地bean一样使用demoService -->

<dubbo:reference id="demoService" interface="com.alibaba.dubbo.demo.DemoService" />

 

 

2.5.3、dubbo整合SpringMVC

<dependency>

               <groupId>cn.test</groupId>

               <artifactId>test-maven-api</artifactId>

               <version>0.0.1-SNAPSHOT</version>

      </dependency>

        <dependency>

            <groupId>com.alibaba</groupId>

            <artifactId>dubbo</artifactId>

            <version>2.5.3</version>

        </dependency>

                 <dependency>

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

                         <artifactId>zookeeper</artifactId>

                         <version>3.4.6</version>

        </dependency>

        <dependency>

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

                  <artifactId>zkclient</artifactId>

                  <version>0.1</version>

      </dependency>

 

 

2.5、dubbo特性

(1)、异步调用

非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务。

应用场景:

1、一个业务逻辑中包含多个并行耗时服务调用

2、一个业务逻辑中存在操作时间较长,但后续步骤不依赖于该步骤完成的步骤(如客户下单购买产品后,需要更新产品的点击排名以及客户的使用习惯追踪等)。

 

(2)同步调用

 

(3)多注册中心

 

(4)多协议

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值