基于dubbo和zookeeper的微服务实现案例
一、注册中心-zookeeper
1.zookeeper
zookeeper可以在分布式项目中承担以下几个功能:
1)注册中心
2)存储数据: 分布式锁
3)观察者模式:做到多个分布式服务器之间的数据同步
2.如何搭建zookeeper
要么使用docker搭建,要么使用原生的方式搭建。
1)在虚拟机上安装jdk
上传jdk的压缩包到虚拟机的 /usr/local/java文件夹内
解压缩
tar -zxvf jdk.....tar.gz
配置环境变量
vim /etc/profile
复制以下内容到该文件的末尾
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export JRE_HOME=/usr/local/java/jdk1.8.0_191/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
保存并退出
:wq
让配置生效
source /etc/profile
2)安装Zookeeper
上传压缩包到linux
解压缩
3)获得zoo.cfg配置文件
在zookeeper/conf文件夹内,修改zoo_sample.cfg中的内容后并重命名成zoo.cfg
4)如何使用zookeeper(做注册中心)
注意: 要使用linux中的命令,必须两种方式: 要么./zkServer.sh 要么是完整路径:
/usr/local/zookeeper/zookeeper-3.4.14/bin/zkServer.sh
如何启动zk
./zkServer.sh start
如何查看zk状态
./zkServer.sh status
如何关闭zk
./zkServer.sh stop
二、使用Dubbo来实现服务间的调用
相关概念:
1) 工程: 包含多个项目的一个统称
1.创建父工程
2.在父工程中创建一个接口项目
接口项目取消父依赖
在项目中创建具体的接口
3.在父工程中创建服务的提供者
编写实现类,实现接口,并重写方法,注意要把api的项目依赖进来。
4.在服务提供者项目中使用dubbo
1)创建xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
2)编写单元测试,引入配置文件,并启动dubbo
注意:前提是要启动zk注册中心
public class TestServiceProvider {
@Test
public void testService() throws IOException {
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext(new String[]{"classpath:provider.xml"});
//将服务提交给dubbo的container,然后注册到注册中心上
context.start();
System.out.println("商品服务开始提供服务");
System.out.println("按任意键停止");
//让服务在收到任意输入内容之前不会结束
System.in.read();
}
}
当看到这个结果,就表示服务发布成功
5.创建服务消费者项目
1)引入依赖
 com.alibaba
 dubbo
 2.5.8
com.github.sgroschupf
zkclient
0.1
com.qf
my-dubbo-product-api
1.0.0-SNAPSHOT
2)编写配置文件
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
3)在单元测试中去调用service
@Test
public void testInvoke(){
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext(new String[]{"classpath:consumer.xml"});
IProductService productService = (IProductService) context.getBean("productService");
String s = productService.showProd();
System.out.println(s);
}
小结:
三、在Springboot项目中使用dubbo
1.方式一: 基于XML的整合方式
1)创建springboot的服务提供者项目
(1)引入依赖
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
(2)将xml配置文件放进resources中
(3)在springboot的入口类上打上注解:@ImportResource("classpath:provider.xml")
2)创建springboot的服务消费者项目
(1)引入依赖
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
(2)将xml配置文件放进resources中
(3)在springboot的入口类上打上注解:@ImportResource("classpath:consumer.xml")
(4)使用autowired将接口的实现类的对象自动注入进来,相当于是通过dubbo(zk)来提供服务的提供者的类。
@SpringBootTest
class MySpringBootProductConsumerApplicationTests {
@Autowired
private IProductService productService;
@Test
void contextLoads() {
System.out.println(productService.showProduct());
}
}
2.方式二:基于注解的整合方式
1)创建服务提供者项目
(1)引入依赖
(2)编写application.yml文件,加入以下配置(本来在xml中的配置将写在yml中)
server:
port: 8081
dubbo:
application:
name: product-service-provider
registry:
address: zookeeper://10.31.163.100:2181
protocol:
port: 20884
(3)编写服务提供者类并实现接口,并在接口上打上注解:
@Component
@Service <==import com.alibaba.dubbo.config.annotation.Service;
(4)在入口类上打上注解
@EnableDubbo
2)创建服务消费者项目
(1)引入依赖
(2)编写application.yml文件,加入以下配置(本来在xml中的配置将写在yml中)
server:
port: 8082
dubbo:
application:
name: product-consumer
registry:
address: zookeeper://10.31.163.100:2181
(3)在需要用到服务提供者类的时候,使用@Reference注解
来自于com.alibaba.dubbo.config.annotation.Reference;
@SpringBootTest
class MySpringBootAnnotationProductConsumerApplicationTests {
@Reference
private IProductService productService;
@Test
void contextLoads() {
System.out.println(productService.showProduct());
}
}
(4)在入口类上打上注解
@EnableDubbo
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
哪种人是软件设计中的稀缺型人才? | 11月7号栖夜读
点击订阅云栖夜读日刊,专业的技术干货,不容错过! 阿里专家原创好文 1.哪种人是软件设计中的稀缺型人才? 好的系统架构离不开好的接口设计,因此,真正懂接口设计的人往往是软件设计队伍中的稀缺型人才。为什么在接口制定标准中说:一流的企业做标准,二流的企业做品牌,三流的企业做产品?依赖倒置到底是什么意思?什么时候使用接口才算合理?今天,阿里匠人——张建飞将为你详细解读。阅读更多》》 2.阿里工程师太凶残了,竟把服务器泡在“水里”! 万众瞩目的第11个双11要来了!这次天猫说要帮大家省500亿,身边加购物车、组队盖楼的同学数不胜数,热闹非凡。但在阿里,有一位低调的“高冷男”,丝毫不为红红火火的双11所动,依然稳如磐石、淡定自若。他的名字就叫做“全浸没液冷服务器”,简直“冷”到令人发指。阅读更多》》 3.据说这是双11前互联网人的一天~ 一篇干货好文,值得一读!阅读更多》》 4.当手机淘宝遇见折叠屏,让购物更随心 华为 5G 新品发布会上,Mate X 正式亮相,淘宝也作为重点展示应用出现在发布会的 PPT 上,同时也成为折叠屏生态联盟应用矩阵的第一位。伴随手淘技术团队对华为折叠屏适配工作的展开...
- 下一篇
升级Spring Boot 2.2.0、Spring Cloud Hoxton 问题总结
项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注最近升级项目的依赖 到最新版本 版本变化 依赖 项目版本 目标版本 Spring Boot 2.1.9.RELEASE 2.2.0.RELEASE Spring Cloud Greenwich.SR3 Hoxton.RC1 Spring Boot Admin 2.1.6 2.2.0 Hoxton 版本依赖厂库 目前 Spring Cloud Hoxton 未发布 RELEASE 版本,官方计划 本月发布 使用 Hoxton.RC1 版本需要配置 spring 仓库 <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度