博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
e3mall商城的归纳总结2之认识dubbo、zookeeper
阅读量:4569 次
发布时间:2019-06-08

本文共 3642 字,大约阅读时间需要 12 分钟。

由于本项目用的是soa架构,因此必须需要两个系统之间进行通信,目前的解决办法有三种(本人认为)

  • Webservice:效率不高基于soap协议。项目中不推荐使用。
  • 使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。
  • 使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。(阿里巴巴的技术推荐使用)

一、什么是dubbo?

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
重要的是可以和spring无缝集成,也就是说在spring里可以不添加任何jar包就可以使用dubbo了。
下面这个图就是dubbo官网上的图
在这里插入图片描述
节点角色说明:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
在本项目中
provider服务的提供方是我们的service
consumer服务的消费方为controller层,也就是web层。

二、什么是zookeeper(动物园管理员)?

既然说到dubbo了,那么service层暴露了自己的接口,Web层想要连接这个接口该如何实现呢?

首先我们肯定需要在配置文件中引入interface层,让该接口加载到spring容器中(IOC),这样方便我们使用。服务层和Web层的都有了,那我们该如何把他们连接起来呢,在这里dubbo官网推荐使用zookeeper,(相当于一个中介,服务层相当于房主,我这里有房,需要去中介那里说一声在什么位置,而Web层相当于租客,租客想要租房去中介了解位置,然后就可以准确的到达房主的屋子。)

为什么起名为动物园管理员呢?

动物园里有好多的动物,游客可以根据动物园管理员提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被动物所观赏。为了让各种不同的动物呆在它们应该呆的地方,而不是相互串门,或是相互厮杀,就需要动物园管理员按照动物的各种习性加以分类和管理,这样我们才能更加放心安全的观赏动物。

其实zookeeper的功能很多,但是这里我们只用到了它的分布式系统的功能。

安装zookeeper(zk)

安装环境:

Linux:centos6.4
Jdk:1.7以上版本
安装前提条件:Zookeeper是java开发的可以运行在windows、linux环境。需要先安装jdk。
安装步骤:
第一步:安装jdk
第二步:把zookeeper的压缩包上传到linux系统。
第三步:解压缩压缩包
tar -zxvf zookeeper-3.4.6.tar.gz
第四步:进入zookeeper-3.4.6目录,创建data文件夹。
第五步:把zoo_sample.cfg改名为zoo.cfg
[root@localhost conf]# mv zoo_sample.cfg zoo.cfg
第六步:修改data属性:dataDir=/root/zookeeper-3.4.6/data
第七步:启动zookeeper
[root@localhost bin]# ./zkServer.sh start
关闭:[root@localhost bin]# ./zkServer.sh stop
查看状态:[root@localhost bin]# ./zkServer.sh status

注意:需要关闭防火墙。

service iptables stop
永久关闭修改配置开机不启动防火墙:
chkconfig iptables off
如果不能成功启动zookeeper,需要删除data目录下的zookeeper_server.pid文件。

服务层的resource目录下application-service.xml

这里我把zookeeper安装到虚拟机(192.168.25.110)上了

这里我创建了两个service服务接口,ref=“XXXXImpl”指的是该服务的实现类。

都是留controller层调用的。而XXXXImpl是通过component-scan(<context:component-scan base-package=“cn.tsu.e3mall.service”/>)进行扫描自动注册到spring容器中。

Web层的spring下的springmvc.xml

三、pagehelper分页技术

项目中的代码如下:

@Override	public EasyUiDateGirdResult findTbItems(Integer page, Integer rows) {	    //获取第page页,rows条内容		PageHelper.startPage(page, rows); 		//紧跟着的第一个select方法会被分页		TbItemExample example = new TbItemExample();		List
list = TbItemMapper.selectByExample(example); //PageInfo对象里包含了list的各种属性进行赋值到pageinfo中 PageInfo
pageInfo = new PageInfo<>(list); //创建返回对象并赋值 EasyUiDateGirdResult easy = new EasyUiDateGirdResult(); easy.setTotal(pageInfo.getTotal()); easy.setRows(list); return easy; }
学习pagehelper技术
第一步:在Mybatis配置xml中配置拦截器插件:
第二步:在代码中使用1、设置分页信息: //获取第1页,10条内容,默认查询总数count PageHelper.startPage(1, 10); //紧跟着的第一个select方法会被分页List
list = countryMapper.selectIf(1);2、取分页信息//分页后,实际返回的结果list类型是Page
,如果想取出分页信息,需要强制转换为Page
,Page
listCountry = (Page
)list;listCountry.getTotal();3、取分页信息的第二种方法//获取第1页,10条内容,默认查询总数countPageHelper.startPage(1, 10);List
list = countryMapper.selectAll();//用PageInfo对结果进行包装PageInfo page = new PageInfo(list);

项目中代码用的是第二种方法

四、安装maven工程跳过测试

clean install -DskipTests

转载于:https://www.cnblogs.com/xiaofeng88/p/10317340.html

你可能感兴趣的文章
---Ubuntu 下安装AS的问题汇总!
查看>>
images for flutter
查看>>
前端学习-jQuery
查看>>
学生管理系统(3:添加查询界面)
查看>>
身份验证(12)
查看>>
利用a标签特性解析地址(附加属性说明)
查看>>
C++面试经典题.......好紧张哦 要面试了
查看>>
工作第四天
查看>>
深入源码分析Linux进程模型
查看>>
算法第4章实践报告
查看>>
Topcoder srm 632 div2
查看>>
【转】正确的提问方式
查看>>
table表单中的属性
查看>>
MFC增强----任务对话框CTaskDialog类
查看>>
Reids 主从同步
查看>>
git基本命令
查看>>
话说笔试面试(1)
查看>>
我是菜鸟,我怕谁(hdu2520)
查看>>
linux命令总结之date命令
查看>>
pdf转txt
查看>>