最近看了些微服务相关的视频,想自己动手搭建一个简单的分布式应用,由于计算机数量有限,将使用不同的端口来模拟多个计算机,特此记录一下整体思路。
程序开发框架是springboot,众所周知springboot是一个用于快速开发服务应用的框架工具,简化了spring、springMVC的配置,内置tomcat,很方便。
RPC服务调用和注册中心用的是dubbo和zookeeper
一:安装zookeeper
到 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/ 下载zookeeper压缩包,在虚拟机上进行解压(tar -zxvf zookeeper-3.4.14.tar.gz)。给解压后的文件夹重命名为zookeeper(mv zookeeper-3.4.14 zookeeper)。
把 zookeeper\conf 下的 zoo_sample.cfg 更名为 zoo.cfg,该文件中对zookeeper服务端口做了默认配置,如果有需要可以自行修改端口,端口处理之后修改dataDir的路径。启动zookeeper服务 ./zkServer.sh start
终端出现Startting zookeeoer ...started 说明你的zookeeper已经启动成功。
二:安装tomcat
到https://tomcat.apache.org/download-80.cgi下载tomcat8,选择tar.gz的。下载之后,把文件解压到虚拟机上即可,
三:安装dubbo-admin
目前网上的dubbo-admin基本都是不支持jdk8的,如果不能降低虚拟机的jdk版本,那就度娘一个支持jdk8的dubbo-admin的war包。
下载好之后,把war包改名为dubbo-admin.war(依据个人爱好,笔者不想打那么多的后缀),打开war包下的WEB-INF\dubbo.properties,该文件内如如下
dubbo.registry.address 代表注册中心zookeeper的服务器所在地址和服务端口
dubbo.admin.root.password=root 代表root账户的密码
dubbo.admin.guest.password=guest 代表guest账户的密码
因为笔者都是在同一台虚拟机上进行部署的,所以这里就没做任何更改,如果有需要可以自己更改配置。
以上内容处理完毕之后,将war包粘贴到虚拟机上安装的tomcat的webapps下,启动tomcat,访问 localhost:端口号/war包名 来访问dubbo-admin,如下图。
笔者的访问地址为 localhost:800/dubbo-admin
至此,服务调用和注册中心相关准备工作已经做好了,接下来开始写代码。
四:代码方面,整体思路如下
做个简单应用,功能是查询某个学生的具体信息,因为主要是演示dubbo+zookeeper,这里就不写dao层了,程序主要分为controller和service两个层面。
把controller和service拆分为两个服务,也就是两个springboot工程,service用来提供查询服务,controller用来用户访问并调用service提供的服务,展示服务返回的信息。因为controller和service都会用到相同的服务接口类,因此需要给它(接口抽象类)提出来,单写到一个maven工程中,打包之后,共两个项目依赖。
一、公共server对象创建
简单的一个接口,StudentServer,写好之后install到maven本地仓库中,共其他两个工程来使用
二、创建provider(服务提供者)工程
创建springboot工程,注意springboot工程创建之后把pom文件中的
spring-boot-starter-parent的version改为2.2.0.RELEASE 否则会与下面依赖的版本产生冲突
在pom文件中添加如下依赖
创建上述server的实现类,注意@Service注解不是spring中的注解,而是dubbo提供的@Service注解。@Compent注解如果本工程不使用的话可以不添加,不影响dubbo扫描。
在工程下的application.yml配置文件中配置dubbo相关信息
在springboot启动类增加类注解@EnableDubbo,启动springboot项目,启动之后刷新dubbo-admin的页面,到提供者页面中查看服务提供者是否创建成功。
三、创建customer工程
创建一个springboot工程,pom文件中引入和provider项目中相同的依赖,yml配置文件如下
创建一个controller,注入StudentServer,在变量上添加注解@Reference,该注解是dubbo提供的,用于消费者引用服务配置。
在springboot启动类添加类注解@EnableDubbo,启动该工程,刷新dubbo-admin的页面,到消费者页面中查看消费者是否创建成功。
访问 localhost:9999/student/search/张三 查看服务是否调用成功。