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 相关文章推荐
SpringBoot生成License的实现示例
Jun 16 Java/Android
Feign调用全局异常处理解决方案
Jun 24 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
Java Socket实现多人聊天系统
Jul 15 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
JAVA API 实用类 String详解
Oct 05 Java/Android
Android超详细讲解组件ScrollView的使用
Mar 31 Java/Android
Flutter集成高德地图并添加自定义Maker的实践
Apr 07 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
Apr 13 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
Springboot-cli 开发脚手架,权限认证,附demo演示
Apr 28 Java/Android
Java版 简易五子棋小游戏
May 04 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
php实现等比例压缩图片
2018/07/26 PHP
php图片裁剪函数
2018/10/31 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
分享一个原生的JavaScript拖动方法
2016/09/25 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
学习python 之编写简单乘法运算题
2016/02/27 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Python requests库用法实例详解
2018/08/14 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
实习教师自我鉴定
2013/09/27 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
酒店采购员岗位职责
2014/03/14 职场文书
学习全国两会精神心得体会范文
2014/03/17 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server