在如今的互联网环境中,微服务已经不是什么新鲜的东西,如果你对这些东西没有什么了解的话,反而就显得自己更加傻了。就算自己的工作环境用不到,用不用不是我们能决定的事,但是看不看就是我们自己的事了,赶紧捡起来看看,万一你下一次面试会被问到呢?现在用的比较多的就是Dubbo和SpringCloud了,这里我们先去看看Dubbo。
什么是Dubbo?Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架。那什么又是RPC?其实就是RPC是远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。别人天天RPC聊得一片火热,你却听得是一脸懵逼,虽然大概知道是个什么东西,但是让你说,你也说不明白,毫不羞耻的说,我其实就是这样。
为什么要用Dubbo呢?官网是这么说的:
1、单一应用架构:当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
2、垂直应用架构:当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
3、分布式服务架构:当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
4:、流动计算架构:当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
说了这么多,别人问起来,你要是都能说明白,那是你的本事。其实 Dubbo 它将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,用于提高业务复用灵活扩展,更快速的响应多变的市场需求。
要学明白Dubbo,我们先得明白它的组成角色和执行流程:
从图中我们可以看到,首先就是服务提供者(Provider)在容器中启动,启动之后将我们所提供的服务注册到注册中心(Registry),然后服务消费者(Consumer)从服务注册中心订阅服务,订阅之后,服务注册中心会返回提供者在服务注册中心注册的接口;服务消费者从接口列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用(这里说的是集群,单个zookeeper它没得选)。服务提供者和消费者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
理论就说这么多,下边我们直接开始动手,先去搞定注册中心,我们这里注册中心选择是的zookeeper,其实Dubbo也支持其他注册中心,大家有兴趣的可以去了解一下,这些东西官网都有。
提到zookeeper这里得提一下,我们服务器安装的zookeeper版本一定要和我们项目中的版本要一致,不然真的是会有什么乱七八糟的问题发生,简直是在浪费时间,我这里使用的是3.4.8版本,匹配项目中客户端中zookeeper的版本,大家可以去zookeeper官方下载。
其实服务器安装抛开集群和版本这些问题还是很简单的,装一遍看看~
其中有些地方需要注意:
1、将配置文件zoo_sample.cfg复制一份,命名为zoo.cfg,并编辑:
2、环境变量的配置,执行vim /etc/profile命令,在文件文本最后配置完环境变量后,保存并退出,之后执行 source /etc/profile进行:
注册中心就基本上完了,之后我们看一看项目中怎么玩吧,我自己写了个demo,看一下项目的结构:
定义接口那个模块没什么说的,就是写一些接口说明你要干什么,我们先去看一下服务提供者模块,先从pom文件开始:
再看一下配置文件:
启动类就不截图了,要加一个@EnableDubbo注解,来启动dubbo,开一下实现类:
这个其实很简单,但是注意的地方还是挺多的,首先就是@Service注解,这个注解是Dubbo的注解,不是我们常用的那个,可别找错了。至于这个接口我们通过pom文件引进的定义接口的那个模块。下边我们看一下Dubbo的@Serivce都是干什么的,我直接从官网拿了,不过好像没有这个版本的属性多,了解一下哈。在这里提醒一下各位,这里有的属性声明了,你也得在消费者哪里@Reference也得声明,比如version这样的属性,你不声明它找不见:
下边就是,其实俩边大同小异,pom文件是一样的,看一下配置文件:
看一下启动类:
最后就是我们具体的注入和业务交互了:
我们再对@Reference介绍一下,这个也千万别找错了,也是dubbo的:
到这里关于Dubbo的一些基础的东西就没有,其实Dubbo也提供了服务的管理工具Dubbo-admin,大家可以这个项目down下来部署一下,这里我就不搞了。其实在你向zookeeper注册了服务和订阅了服务之后,我们也可以从服务器中体现出来,再看一下这个吧:
到这里这次的分享就没了,先对Dubbo的一些概念和基础有一些了解,不管以后怎样,自己先要准备好。想要更进一步的话,还是主动点好,自己不积累,再换个工作环境也还是被淘汰。自己主动学习是比较费劲,从一个坑出来又跳进了另一个坑,埋怨解决不了问题,只有自己经历过了才会更深刻,以前身旁有人的时候总觉得问个比较低级的问题都会感到难堪,现在想想我连难堪的机会都没有了。只要自己认真学,总会柳暗花明,加油吧!