Dubbo

一、SOA架构

(一)分析

表现层和服务层是不同的工程,所以需要两个系统之间进行通信。
1、Webservice:效率不高,基于soap协议。项目中不推荐使用。
2、使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。
3、使用dubbo。使用rpc协议(remote procedure call)进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。

(二)架构演化

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

二、Dubbo架构

(一)简介

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

1.节点角色说明

Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次数和调用时间的监控中心。
Container: 服务运行容器。

2.调用关系说明

0.服务容器负责启动,加载,运行服务提供者。
1.服务提供者在启动时,向注册中心注册自己提供的服务。
2.服务消费者在启动时,向注册中心订阅自己所需的服务。
3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4.服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5.服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

(二)发布服务

Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载

1.service加入Dubbo的jar包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.jboss.netty</groupId>
            <artifactId>netty</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
</dependency>
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
</dependency>

2.配置Dubbo

ApplicationContext-service.xml中加入约束:

xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xs

手工配置约束

<!-- 发布dubbo服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="e3-manager-service"/>
<!-- 注册中心 -->
<dubbo:registry protocol="zookeeper" address="192.168.123.128:2181"/>
<!-- 用Dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.lb.e3mall.service.ItemService" ref="itemServiceImpl" timeout="600000"/>

3.改造pojo

要进行网络传输,必须实现序列化接口

(三)使用服务

1.web加入Dubbo的jar包

2.配置Dubbo

springmvc.xml中加入约束

<!-- 引用dubbo服务 -->
<dubbo:application name="e3-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.123.128:2181"/>   
<!-- 引用远程服务配置 -->
<dubbo:reference interface="com.lb.e3mall.service.ItemService" id="itemService" />

3.配置tomcat启动插件端口

(四)测试运行

安装注册中心ZooKeeper:详见ZooKeeper
打开ZooKeeper:Starting zookeeper … STARTED
install:manager
先后通过插件运行service和web
访问:http://localhost:8081/item/562379

(五)监控中心

jdk1.7
启动ZooKeeper,安装Tomcat,将dubbo-admin-2.5.4.war部署即可

启动Tomcat:bin/startup.sh
查看Tomcat控制台信息:tail -f logs/catalina.out(tail -f:从尾部查看)

访问:http://192.168.123.128:8080/dubbo-admin/ root–root
如果监控中心和注册中心在同一服务器上,不需要任何配置。如果不在,需要修改:
/e3mall/apache-tomcat-7.0.47/webapps/dubbo-admin/WEB-INF/dubbo.properties

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值