Dubbo+zookeeper搭配分布式服务的过程详解


Posted in Java/Android onApril 03, 2022

分布式架构: 

1.当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,前端应用能更快速的响应多变的市场需求。 
2.此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。

Dubbo 是什么

  • 一款分布式服务框架
  • 高性能和透明化的RPC远程服务调用方案
  • SOA服务治理方案

Dubbo:

作为分布式架构比较后的框架,同时也是比较容易入手的框架,适合作为分布式的入手框架,下面是简单的搭建过程

工具:idea+tomact+zookeeper (知识点:jsp,spring,springmvc,maven)

思想:

Dubbo+zookeeper搭配分布式服务的过程详解

 

依赖:

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.2</version>
        </dependency>
        <!--zookeeper依赖-->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.1.0</version>
        </dependency>
        <dependency>
            <groupId>com.atchengdu</groupId>
            <artifactId>001-interface</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

工程分布:

Dubbo+zookeeper搭配分布式服务的过程详解

  

provider实现interface提供服务,constomer消费provider提供的服务

interface:

Dubbo+zookeeper搭配分布式服务的过程详解

package com.atchengdu.serviceinterface;
 
import com.atchengdu.pojo.User;
public interface Userservice {
    //获取user的信息
    User getuserByid(Integer ie);
}
package com.atchengdu.pojo;
import java.io.Serializable;
public class User implements Serializable {
    private Integer id ;
    private String name;
    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    public User() {
    public Integer getId() {
        return id;
    public void setId(Integer id) {
    public String getName() {
        return name;
    public void setName(String name) {
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';

 provider:

Dubbo+zookeeper搭配分布式服务的过程详解

package com.atchengdu.Modulserviceimpl;
 
import com.atchengdu.pojo.User;
import com.atchengdu.serviceinterface.Userservice;
public class Userserviceimpl implements Userservice {
    @Override
    public User getuserByid(Integer ie) {
        User user=new User(1,"张三");
        return user;
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">
    <!--声明名称-->
    <dubbo:application name="002-provider"></dubbo:application>
    <!--设置协议和端口号-->
    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    <!--使用注册中心-->
    <dubbo:registry address="zookeeper://localhost:2181"></dubbo:registry>
    <!--暴露服务接口-->
    <dubbo:service interface="com.atchengdu.serviceinterface.Userservice" ref="userserviceimpl"></dubbo:service>
    <!--加载业务实实现了-->
    <bean id="userserviceimpl" class="com.atchengdu.Modulserviceimpl.Userserviceimpl"></bean>
</beans>

constomer:

Dubbo+zookeeper搭配分布式服务的过程详解

package com.atchengdu.webcontroller;
 
import com.atchengdu.pojo.User;
import com.atchengdu.serviceinterface.Userservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
public class Usercontroller {
    @Autowired
    private Userservice userservice;
    @RequestMapping("/user")
    public  String user(Model model,Integer id ){
        User user = userservice.getuserByid(id);
        model.addAttribute("user",user);
        return "user";
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:tx="http://www.springframework.org/schema/task"
       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/task https://www.springframework.org/schema/task/spring-task.xsd
                           http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd
                           http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.atchengdu.webcontroller">
</context:component-scan>
<mvc:annotation-driven></mvc:annotation-driven>
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="suffix" value=".jsp"></property>
        <property name="prefix" value="/"></property>
     </bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">
      <dubbo:application name="003-constomer"></dubbo:application>
    <dubbo:registry address="zookeeper://localhost:2181"></dubbo:registry>
    <dubbo:reference id="userservice" interface="com.atchengdu.serviceinterface.Userservice"></dubbo:reference>
</beans>

到此这篇关于Dubbo+zookeeper搭配分布式服务的过程详解的文章就介绍到这了,更多相关Dubbo+zookeeper分布式服务内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Java/Android 相关文章推荐
启动Tomcat时出现大量乱码的解决方法
Jun 21 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
Aug 04 Java/Android
正则表达式拆分url实例代码
Feb 24 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
Mar 22 Java/Android
SpringBoot2零基础到精通之数据与页面响应
Mar 22 Java/Android
Android Flutter实现图片滑动切换效果
Apr 07 Java/Android
java如何实现获取客户端ip地址的示例代码
Apr 07 Java/Android
Java8 CompletableFuture 异步回调
Apr 28 Java/Android
Java 定时任务技术趋势简介
May 04 Java/Android
SpringBoot全局异常处理方案分享
May 25 Java/Android
Java实现带图形界面的聊天程序
Jun 10 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 #Java/Android
SpringBoot整合Minio文件存储
Apr 03 #Java/Android
Java中Quartz高可用定时任务快速入门
Apr 03 #Java/Android
Spring Security使用单点登录的权限功能
Spring Boot 底层原理基础深度解析
Java 超详细讲解数据结构中的堆的应用
Java 数据结构七大排序使用分析
You might like
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
PHP模板引擎SMARTY
2006/10/09 PHP
php+dbfile开发小型留言本
2006/10/09 PHP
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
JavaScript实现表格点击排序的方法
2015/05/11 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
js中this对象用法分析
2018/01/05 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
用python实现对比两张图片的不同
2018/02/05 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
python实现批量nii文件转换为png图像
2019/07/18 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
如何在django中添加日志功能
2020/02/06 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
程序员经常用到的UNIX命令
2015/04/13 面试题
给领导的感谢信范文
2015/01/23 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS