欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微服务

程序员文章站 2022-06-13 22:22:42
...

微服务

  1. 框架

微服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-npPGO9HV-1582187672572)(C:\Users\Lenovo\Desktop\作业截屏\4281643D34A6CA032D7169F53672C1DA_750_750.png)]

  1. 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方法

微服务

在浏览器中输入

http://localhost:7001 得到页面

微服务

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”/>

调用测试

微服务

相关标签: java