当前位置:   article > 正文

Dubbo:版本号、监控中心_apache dubbo版本查看

apache dubbo版本查看

一个接口可以有多个实现类,,在第一个版本的时候,接口的实现方式是这种方式,再换第二个版本的时候,在第一个基础之上做了优化,但是第一个版本服务也不能给人家去掉,因为还有很多老用户还是用的第一种方式,这样纪要保留第一个,有要开发第二个,通过版本号去完成

 

 

4.4 版本号

每个接口都应定义版本号,为后续不兼容升级提供可能。当一个接口有不同的实现,项目早 期使用的一个实现类, 之后创建接口的新的实现类。区分不同的接口实现使用 version。 特别是项目需要把早期接口的实现全部换位新的实现类,也需要使用 version.

可以用版本号从早期的接口实现过渡到新的接口实现,版本号不同的服务相互间不引用。 可以按照以下的步骤进行版本迁移:

     在低压力时间段,先升级一半提供者为新版本

     再将所有消费者升级为新版本

     然后将剩下的一半提供者升级为新版本

还使用006-zk-interface:

58c1460d2110429d8659aa675096a0c6.png

 User类:

  1. package com.bjpowernode.dubbo.model;
  2. import java.io.Serializable;
  3. public class User implements Serializable {
  4. private Integer id;
  5. private String username;
  6. public Integer getId() {
  7. return id;
  8. }
  9. public void setId(Integer id) {
  10. this.id = id;
  11. }
  12. public String getUsername() {
  13. return username;
  14. }
  15. public void setUsername(String username) {
  16. this.username = username;
  17. }
  18. }

接口UserService:

  1. package com.bjpowernode.dubbo.service;
  2. import com.bjpowernode.dubbo.model.User;
  3. public interface UserService {
  4. //根据用户标识获取用户信息
  5. User queryUserById(Integer id,String username);
  6. }

创建服务提供者: 

3bd2b27a15494654a1032ad9d4be847e.png

一个接口的两个实现类 

userServiceImpl实现类:

  1. package com.bjpowernode.dubbo.service.impl;
  2. import com.bjpowernode.dubbo.model.User;
  3. import com.bjpowernode.dubbo.service.UserService;
  4. public class UserServiceImpl implements UserService {
  5. @Override
  6. public User queryUserById(Integer id, String username) {
  7. User user = new User();
  8. user.setId(id);
  9. user.setUsername(username+"--1");
  10. return user;
  11. }
  12. }

UserServiceImpl2实现类:

  1. package com.bjpowernode.dubbo.service.impl;
  2. import com.bjpowernode.dubbo.model.User;
  3. import com.bjpowernode.dubbo.service.UserService;
  4. public class UserServiceImpl2 implements UserService {
  5. @Override
  6. public User queryUserById(Integer id, String username) {
  7. User user = new User();
  8. user.setId(id);
  9. user.setUsername(username+"---2");
  10. return user;
  11. }
  12. }

dubbo核心配置文件:dubbo-userservice-multi-provider.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
  5. <!--声明dubbo服务提供者的名称:保证唯一性-->
  6. <dubbo:application name="009-zk-userservice-multi-provider"/>
  7. <!--设置dubbo使用的协议和端口号-->
  8. <!--
  9. name:dubbo使用协议的名称
  10. port:dubbo服务的端口号
  11. -->
  12. <dubbo:protocol name="dubbo" port="20880"/>
  13. <!--现在要使用Zookeeper注册中心
  14. 指定注册中心地址和端口号
  15. -->
  16. <dubbo:registry address="zookeeper://localhost:2181"/>
  17. <!--要是使用Linux的zookeeper
  18. <dubbo:registry address="zookeeper://192.168.67.128:2181"/>
  19. -->
  20. <!--暴露服务接口,版本号区别不同接口-->
  21. <!--不管是否一个接口有多少个实现类,只要服务提供者暴露接口服务的时候指定了版本号,那作为消费者引用远程接口服务的时候就必须指定版本号-->
  22. <dubbo:service interface="com.bjpowernode.dubbo.service.UserService" ref="userServiceImpl" version="1.0.0" />
  23. <dubbo:service interface="com.bjpowernode.dubbo.service.UserService" ref="userServiceImpl2" version="2.0.0" />
  24. <!--加载业务接口的实现类到spring容器中-->
  25. <bean id="userServiceImpl" class="com.bjpowernode.dubbo.service.impl.UserServiceImpl"/>
  26. <bean id="userServiceImpl2" class="com.bjpowernode.dubbo.service.impl.UserServiceImpl2"/>
  27. </beans>

web.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--加载配置文件-->
  7. <context-param>
  8. <param-name>contextConfigLocation</param-name>
  9. <param-value>classpath:dubbo-userservice-multi-provider.xml</param-value>
  10. </context-param>
  11. <!--设置监听器-->
  12. <listener>
  13. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  14. </listener>
  15. </web-app>

配置tomcat

d54005cc25ea4fc5a7786f1d13bf6f13.png

 

服务的消费者:

52b7df36aceb41069f55f8e80ce6b793.png

dubbo核心配置文件:dubbo-multi-consumer.xml 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
  5. <!--声明服务消费者的名称:保证唯一性-->
  6. <dubbo:application name="010-zk-multi-consumer"/>
  7. <!--现在要使用Zookeeper注册中心-->
  8. <dubbo:registry address="zookeeper://localhost:2181"/>
  9. <!--
  10. 引用远程服务接口
  11. id:远程服务接口对象的名称
  12. interface:调用远程接口的全限定类名
  13. url:访问服务接口的地址 直连方式
  14. -->
  15. <dubbo:reference id="userService" interface="com.bjpowernode.dubbo.service.UserService" version="1.0.0"/>
  16. <dubbo:reference id="userService2" interface="com.bjpowernode.dubbo.service.UserService" version="2.0.0"/>
  17. </beans>

spring配置文件:application.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  7. <!--扫描控制层 组件-->
  8. <context:component-scan base-package="com.bjpowernode.dubbo.web"/>
  9. <!--配置注解驱动-->
  10. <mvc:annotation-driven/>
  11. <!--视图解析器-->
  12. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  13. <property name="prefix" value="/"/>
  14. <property name="suffix" value=".jsp"/>
  15. </bean>
  16. </beans>

web.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--中央调度器-->
  7. <servlet>
  8. <servlet-name>dispatcherServlet</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. <!--初始化参数-->
  11. <init-param>
  12. <param-name>contextConfigLocation</param-name>
  13. <param-value>classpath:application.xml,classpath:dubbo-multi-consumer.xml</param-value>
  14. </init-param>
  15. </servlet>
  16. <servlet-mapping>
  17. <servlet-name>dispatcherServlet</servlet-name>
  18. <!--拦截所有请求-->
  19. <url-pattern>/</url-pattern>
  20. </servlet-mapping>
  21. </web-app>

控制器UserController:

  1. package com.bjpowernode.dubbo.web;
  2. import com.bjpowernode.dubbo.model.User;
  3. import com.bjpowernode.dubbo.service.UserService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.ui.Model;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. @Controller
  9. public class UserController {
  10. @Autowired
  11. private UserService userService;
  12. @Autowired
  13. private UserService userService2;
  14. @RequestMapping(value = "/user")
  15. public String userDetil(Model model,Integer id, String username){
  16. //根据用户标识获取用户详情
  17. User user=userService.queryUserById(id,username);
  18. User user2 = userService2.queryUserById(id, username);
  19. model.addAttribute("user",user);
  20. model.addAttribute("user2",user2);
  21. return "userDetail";
  22. }
  23. }

接收参数页面userDetail.jap:

  1. <%--
  2. Created by IntelliJ IDEA.
  3. User: DELL
  4. Date: 2022/7/14
  5. Time: 13:29
  6. To change this template use File | Settings | File Templates.
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <%
  10. String path = request.getContextPath();
  11. String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
  12. %>
  13. <html>
  14. <head>
  15. <title>Title</title>
  16. <base href="<%=basePath%>">
  17. </head>
  18. <body>
  19. <h1>用户1</h1>
  20. <div>用户编号:${user.id}</div>
  21. <div>用户姓名:${user.username}</div>
  22. <h1>用户2</h1>
  23. <div>用户编号:${user2.id}</div>
  24. <div>用户姓名:${user2.username}</div>
  25. </body>
  26. </html>

配置tomcat:

fd4985d09a4843cea35525564eff6160.png

 

 

ae6d776c73a24bada940de5ed452ea6c.png

 

 

05667f16f37a40f6ae90c8a47fd07b92.png

cf54c712a6304b9a9c5f2a3b619ec2a5.png dbf22241a3544768b4383638c4aea4d1.png

349b5dd5e03a478e89f319758b3cf73d.png 

下载完之后:

ce26e38b9da547739bd112abe7ca7aa7.png

在此目录留下输入cmd:输入命令

 72c9c8cb11c541ddb9df3b94411bef90.png

7bbac777bb3e413eabcbb0f9ac8f8b34.png 

输入root 密码root进行登录:

2b41459b022b4d14ba114c521db81476.png 

可以看到上面项目的服务

0a91c263a1384fddb07e149302645ea6.png

提供者:

85c41baa6fc14044a7cea48a7bbeaee2.png 

 

消费者:

8affbc33a9234e098a1ed7cc92ef5250.png 

 等等信息,可以进行监控

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/169658
推荐阅读
相关标签
  

闽ICP备14008679号