微服务
微服务
- 框架
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-npPGO9HV-1582187672572)(C:\Users\Lenovo\Desktop\作业截屏\4281643D34A6CA032D7169F53672C1DA_750_750.png)]
-
dubbo的初步使用
dubbo是一个java RPC框架,所谓的RPC指的是远程调用,就像调用本地方法一样调用另外项目中的代码
相关概念:
服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心关系:
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
1.安装zookeeper
2.启动zookeeper
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQBdOwXu-1582187672572)(C:\Users\Lenovo\Desktop\截屏\批注 2020-02-20 153539.png)](https://img-blog.csdnimg.cn/20200220163725654.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAwNTU1MA==,size_16,color_FFFFFF,t_70)
双击zkServer.cmd
3.安装dubbo-admin
GitHub地址:https://github.com/apache/dubbo-ops
进入到dubbo-admin-ui目录下运行npm install
修改dubbo-admin-server/resource/application.properties中的zookeeper,然后启动
然后运行dubbo-admin-ui项目
注意:配置
启动main方法
在浏览器中输入
4.基于xml实现dubbo
这里项目共两个,user-provider作为用户服务项目负责用户管理,order-consumer作为订单服务项目负责订单管理,当前场景是在用户中需要使用订单项目中的OrderService中方法,所以这里使用dubbo技术栈
1、写服务提供者(Provider)端配置
添加pom依赖
<!--dubbo设置,服务提供者-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
修改spring配置文件
头部添加
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd
<!-- 配置项目名称 -->
<dubbo:application name="项目名称"></dubbo:application>
<!--指定注册中心(zookeeper别忘了开)的地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!--使用dubbo协议,将服务暴露在20881端口 -->
<dubbo:protocol name="dubbo" port="20881" />
<!-- dubbo注解扫描的包,使用基于注解实现的话需要开启 -->
<dubbo:annotation package="cn.lihao.service.impl"/>
<!-- 指定需要暴露的服务 -->
<!--<dubbo:service interface="cn.lihao.service.UserService" ref="userServiceImpl" />-->
如果是基于注解使用的话需要在对外暴露的service实现类上加@Service注解,注意改注解使用的是dubbo下的,如果原本的serverImpl还想使用spring注解注册成bean的话可以选择另外声明@service或者使用@Component,效果一样
注意:
(1、这些配置是在原本的ssm框架上配置,所以如果要用的话需要先搭建ssm框架
(2、为传输数据方便,需要在实体类上实现Serializable接口
2、写服务消费者(Consumer)端配置
pom文件中和服务调用者一样(这里可以设置一个公共的项目存放接口和相同依赖)
修改spring配置文件
头部添加
xmlns:dubbo=“http://dubbo.apache.org/schema/dubbo”
http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd
<dubbo:application name="web-order"></dubbo:application>
<!-- 指定注册中心地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<!--<dubbo:reference id="userService" interface="cn.lihao.service.UserService"></dubbo:reference>-->
<!-- 注解配置,扫描包下所有注解 -->
<dubbo:annotation package="cn.lihao.controller"/>
如果是基于xml配置使用的
启动时:
启动user 和order
刷新[http://localhost:7001 点击箭头
注解配置,扫描包下所有注解 -->
<dubbo:annotation package=“cn.lihao.controller”/>
调用测试
上一篇: 微服务
下一篇: 无法调用数据库有关问题