20221116 Dubbo+Zookeeper

news2025/1/13 16:43:20

  • Dubbo+Zookeeper实现分布式布局
    • 加入Zookeeper
    • Dubbo
    • 编写provider代码(简单示例)
      • 添加依赖
      • 代码
    • 编写consumer代码(简单示例)
      • 加入依赖
      • 代码
    • 加入Dubbo管理控制台

Dubbo+Zookeeper实现分布式布局

加入Zookeeper

在服务器端使用docker 下载Zookeeper镜像

docker pull ovfftd6p.mirror.aliyuncs.com/library/zookeeper

下载完成后启动Zookeeper

docker run -name zk01 --restart always -d -p 2181:2181 {IMAGE ID}

使用 docker ps 查看是否启动成功
在这里插入图片描述

Dubbo

官方文档:http://dubbo.apache.org/
github:
https://github.com/apache/dubbo

https://github.com/apache/dubbo-spring-boot-project

https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md

Dubbo是什么?

  • Dubbo是:
    • 一款分布式服务框架
    • 高性能和透明化的RPC远程服务调用方案
    • SOA服务治理方案
    • Dubbo每天为2千多个服务提供大于30亿次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点以及别的公司的业务中。
      在这里插入图片描述
      在这里插入图片描述

编写provider代码(简单示例)

添加依赖

<!-- Dubbo Spring Boot Starter -->
   <dependency>
      <groupId>com.alibaba.boot</groupId>
      <artifactId>dubbo-spring-boot-starter</artifactId>
      <version>0.2.1.RELEASE</version>
   </dependency>
   <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <version>2.6.5</version>
   </dependency>

<!--Zookeeper客户端Curator-->
   <dependency>
      <groupId>org.apache.curator</groupId>
      <artifactId>curator-recipes</artifactId>
      <version>2.12.0</version>
   </dependency>

代码

实体类

public class User implements Serializable {
    private int id;
    private String name;
    private int age;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

服务接口

public interface UserService {
    public User getUserById(int id);
}

服务实现类

@Service
@com.alibaba.dubbo.config.annotation.Service
public class UserServiceImpl implements UserService {
    @Override
    public User getUserById(int id) {
        User user = new User();
        user.setId(id);
        user.setAge(20);
        user.setName("zzm");
        return user;
    }
}

application.properties

server.port=8081

spring.application.name=dubbo-provider-user

dubbo.application.name=dubbo-provider-user

dubbo.scan.base-packages=com.etc.service

dubbo.registry.address=zookeeper://192.168.88.128:2181

springboot启动类

@SpringBootApplication
@EnableDubbo
public class DemoproviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoproviderApplication.class, args);
    }

}

执行springboot启动类

编写consumer代码(简单示例)

加入依赖

<!-- Dubbo Spring Boot Starter -->
<dependency>
   <groupId>com.alibaba.boot</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>0.2.1.RELEASE</version>
</dependency>
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>dubbo</artifactId>
   <version>2.6.5</version>
</dependency>

<dependency>
   <groupId>org.apache.curator</groupId>
   <artifactId>curator-recipes</artifactId>
   <version>2.12.0</version>
</dependency>

代码

实体类和服务接口 与provider一致
在这里插入图片描述
ConUserService

public interface ConUserService {
    public User getUserById(int id);
}

ConUserServiceImpl

@Service
public class ConUserServiceImpl implements ConUserService {

    @Reference
    private UserService userService;


    @Override
    public User getUserById(int id) {

        return userService.getUserById(1);
    }
}

UserController

@RestController
public class UserController {

    @Autowired
    private ConUserService service;

    @GetMapping("user/{id}")
    public User getById(@PathVariable("id") int id){
        User userById = service.getUserById(id);
        return userById;
    }
}

执行springboot启动类

加入Dubbo管理控制台

自己封装了一个jar 可以直接使用

需要修改的地方

在这里插入图片描述
在这里插入图片描述
修改完后打开cmd 使用java -jar jar包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Word处理控件Aspose.Words功能演示:使用 C# 将 Word 文档转换为 Markdown

如今&#xff0c;大量的文章、博客和文档都是以Markdown ( MD ) 格式编写的。但是&#xff0c;对于大型文档&#xff0c;Markdown 语法通常变得难以记忆和编写。为方便起见&#xff0c;您可以在 MS Word 中编写内容&#xff0c;然后将DOCX或DOC文档转换为 Markdown。为了自动化…

【Redis入门笔记 09】缓存穿透、击穿与雪崩

目录&#x1f349;缓存穿透&#x1f353;缓存击穿&#x1f351;缓存雪崩☕前言&#xff1a; Redis 数据库常常用来充当传统数据库的缓存。一个实际的场景是当用户的请求过来&#xff0c;先去查缓存中的数据&#xff0c;如果缓存中不存在&#xff0c;则再去查询数据库&#xff…

快速查找qt pro文件中的用qmake language写的库函数

qt函数分为test函数和replace函数&#xff1a;qmake language 内置函数 自定义函数 defineTest(testfunctionname) defineReplace(repacefunctionname)_丘上人的博客-CSDN博客 qt为qmake language提供了内建函数&#xff08;用C写的逻辑&#xff09;和用qmake language写的库函…

html移动端实现手写签名,signature手写签名实现,微信公众号浏览器html手写签名实现

前言 html移动端手写自动横竖签名实现&#xff0c;并base64图片格式获取&#xff1b; 横竖根据屏幕宽高自动平铺。 效果图 图一 图二 实现 如下代码直接复制成.html文件打开即可预览效果 <!DOCTYPE html> <html><head><title>手写签名</title&…

适合中小企业的ERP管理软件如何选择?

在选择ERP系统时&#xff0c;我们可以按照这三个维度&#xff0c;然后再按照需求去选择ERP系统。 市面上ERP软件大概可以分为三大类&#xff1a; ① 标准ERP应用&#xff1a;功能比较固定&#xff0c;难以满足个性化需求&#xff0c;二次开发难度很高&#xff1b; ② 找外包/…

SQL 的执行流程是什么样的

在选择存储引擎时&#xff0c;应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统&#xff0c;还可以根据实际情况选择多种存储引擎进行组合。 以下是几种常用的存储引擎的使用环境。 InnoDB : 是 Mysql 的默认存储引擎&#xff0c;用于事务处理应用程序&#xf…

浅谈薄膜行业MES解决方案

随着国家节能减排的号召&#xff0c;新能源电动汽车蓬勃发展&#xff0c;带动整个锂电行业的崛起&#xff0c;锂电池的结构中&#xff0c;隔膜是关键的内层组件之一。隔膜的性能决定了电池的界面结构、内阻等&#xff0c;直接影响电池的容量、循环以及安全性能等特性&#xff0…

数据中台选型必读(四):要想中台建的好,数据模型得做好

在数据中台构建之前&#xff0c;分析师经常发现自己没有可以复用的数据集&#xff0c;不得不使用原始数据依次进行数据的清洗、加工、计算指标。 重复进行原始数据的清洗加工 由于业务部门的分析师大多是非技术出身&#xff0c;写的SQL可能比较差&#xff0c;多层嵌套对后台的…

【教学类-13-02】20221115《数字色块图5*7*8横板》(中班主题《》)

效果展示 背景需求&#xff1a; 前期中3班制作5*7 *9张数字图&#xff0c;发现三个问题&#xff1a; 1、数量太多&#xff0c;填不完——每人9张调整为每人4张&#xff08;一张A4两份作业&#xff09; 2、数字太浅&#xff0c;看不清——5*7的提示数字是灰色&#xff0c;数字…

WeNet更新:喜马拉雅团队在 WeNet 中支持 Squeezeformer

WeNet在正式发布两年的时间里&#xff0c;成为非常热门的ASR生产工具&#xff0c;其面向生产的属性更是深受工业界的好评。近期&#xff0c;喜马拉雅团队在WeNet中支持了Squeezeformer的相关工作。本文由喜马拉雅珠峰智能实验室撰写&#xff0c;介绍了Squeezeformer论文的复现细…

vant_vant引入

目录vant官网使用vant[1]导入vant 的所有组件[2] 按需引入组件[3]自动按需引入组件使用过程中遇到的问题[1]问题1-版本冲突vant官网 vant2.0官网 使用vant 参考vant官网–>快速上手–>通过npm安装/引入组件 [1]导入vant 的所有组件 [1] 安装 vant &#xff1a;npm i va…

基于matlab的MRC最大合并比误码率仿真,包括维特比译码,MRC,中继

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 最大比合并&#xff08;Maximal Ratio Combining&#xff0c;MRC&#xff09;是分集合并技术中的最优选择&#xff0c;相对于选择合并和等增益合并可以获得最好的性能&#xff0c;其性能…

STC51单片机29——汇编语言 取表法 流水灯

汇编语言编写流水灯 ORG 0 START: MOV DPTR,#TABLE LOOP: CLR A MOVC A,ADPTR CJNE A,#01H,LOOP1 //假如A等于01H &#xff0c;则执行下一句 JMP START LOOP1: MOV P1,A MOV R3,#20 LCALL DELAY INC DPTR //指针自加1 JMP LOOP DELAY: MOV R4,#20 D1: MOV R5,#24…

【6-Git安装与配置过程、Gitee码云上创建项目、IDEA关联克隆的项目】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了&#xff0c;请点击这里&#xff01;】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测

异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测 目录 异常检测 | MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测效果一览基本介绍模型准备模型设计参考资料效果一览 基本介绍 训练一个双向 LSTM 自动编码器来检测机器是否正常工作。 自动编码器接受…

一文教你搞懂Go中栈操作

LInux 进程在内存布局 多任务操作系统中的每个进程都在自己的内存沙盒中运行。在 32 位模式下&#xff0c;它总是 4GB 内存地址空间&#xff0c;内存分配是分配虚拟内存给进程&#xff0c;当进程真正访问某一虚拟内存地址时&#xff0c;操作系统通过触发缺页中断&#xff0c;在…

前后端必知必会的HTTP,这份全彩版图解手册可算是给讲透了

HTTP HTTP (HyperText Transfer Protocol)&#xff0c;即超文本运输协议。是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用于从WWW服务器传输超文本到本地浏览器的传输协议&#xff0c;它…

基础15:npm、yarn、pnpm

npm2 用 node 版本管理工具把 node 版本降到 4&#xff0c;那 npm 版本就是 2.x 了。 执行 npm init&#xff0c; npm install express&#xff0c;可以看到node_modules目录如下&#xff1a; 可以看到&#xff0c;npm2的node_modules是嵌套的。 这种方式的优点就是模块依赖关…

NDIR二氧化碳传感器原理介绍

文章目录1. 引言2. 分类3. 红外气体传感原理3.1 朗伯-比尔定律3.2 非分光红外&#xff08;NDIR&#xff09;法检测原理3.3 浓度、温湿度标定3.4 响应时间研究4. 参考文献1. 引言 环境领域&#xff1a;近些年&#xff0c;二氧化碳是引起温室效应的主要气体&#xff0c;因此引起…

项目可交付成果的质量管理该怎么做?

通往项目最终服务或产品的道路往往是由许多临时可交付成果铺就的。每一个可交付成果本身都必须完整、质量合适并与所有其他可交付成果协调&#xff0c;同时确保&#xff1a; ● 保持客户和主要利益相关者所要求的质量水平。 ● 项目可交付成果是根据客户的规格和项目目标开发…