Otter改造 增加springboot模块和HTTP调用功能

环境搭建 & 打包

环境搭建:

  1. 进入 $otter_home/lib 目录
  2. 执行:bash install.sh

打包:

  1. 进入$otter_home目录
  2. 执行:mvn clean install -Dmaven.test.skip -Denv=release
  3. 发布包位置:$otter_home/target

项目背景

   阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机房的需求,同时为了提升用户体验,整个机房的架构为双A,两边均可写,由此诞生了otter这样一个产品。

   otter第一版本可追溯到04~05年,此次外部开源的版本为第4版,开发时间从2011年7月份一直持续到现在,目前阿里巴巴B2B内部的本地/异地机房的同步需求基本全上了otter4。

目前同步规模:

  1. 同步数据量6亿
  2. 文件同步1.5TB(2000w张图片)
  3. 涉及200+个数据库实例之间的同步
  4. 80+台机器的集群规模

项目介绍

名称:otter ['ɒtə(r)]

译意: 水獭,数据搬运工

语言: 纯java开发

定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统

项目改造

基于Otter master分支最新提交,增加springboot client工程,目标是为公司内springboot项目通过HTTP调用或者Dubbo调用操作Otter manager,实现任务创建和启动停止等

改造内容:

  1. 新增springboot client工程
  2. jdk版本升级为1.8
  3. 使用springboot 2.3.2.RELEASE,大家可通过RESTful接口调用 Otter manager模块

打包:

  1. 进入$otter_home目录
  2. 执行:mvn clean install -Dmaven.test.skip -Denv=release
  3. 发布包位置:$otter_home/target

部署Otter manager:

  1. 按照官方文档部署Otter的manager和node,https://github.com/alibaba/otter/wiki/QuickStart

解压:

  1. 进入$otter_home/target目录
  2. 执行:mkdir client && tar -xf client.deployer-4.2.19-SNAPSHOT.tar.gz -C client
  3. 启动脚本位置:$otter_home/target/client/bin/start.sh
  4. 修改manager端口:$otter_home/target/client/conf/application.yml,默认是 127.0.0.1:1099,请改成你部署的Otter manager地址

启动 springboot client:

  1. 进入$otter_home/target/client目录
  2. 启动脚本位置:bin/startup.sh
  3. 执行启动脚本:sh bin/startup.sh
  4. 测试调用:在命令行窗口输入curl --location 'http://localhost:8100/nodetest/node/1' 或者 浏览器地址栏输入 http://localhost:8100/nodetest/node/1,
    返回 node 节点的信息表示成功:
    Node[id=1,name=test-node1,ip=127.0.0.1,port=2088,status=START,description=,parameters=NodeParameter[mbeanPort=2090,downloadPort=2089,zkCluster=AutoKeeperCluster[id=1,clusterName=test-zk,serverList=[10.23.104.43:2181],description=,gmtCreate=2023-07-29 14:55:06,gmtModified=2023-08-23 19:48:22],externalIp=127.0.0.1,useExternalIp=false],gmtCreate=2023-07-29 14:56:14,gmtModified=2023-08-01 10:51:56]
  5. 执行关闭脚本停止client:sh bin/stop.sh
    Oook! cost:2

改造代码已经开源到个人github,注意是 feature- springboot分支:https://github.com/quanllong/otter/tree/feature-springboot

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

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

相关文章

R语言柱状图直方图 histogram

柱状图简介 柱状图也叫直方图,是展示连续性数值的分布状况。在x轴上将连续型数值分为一定数量的组,y轴显示对应值的频数。 R基本的柱状图 hist 我们用R自带的Orange数据来画图。 > head(Orange)Tree age circumference(圆周长) 1 1 118 …

Aqs独占/共享模式

独占锁和共享锁的概念 独占锁也叫排他锁,是指该锁一次只能被一个线程所持有。如果线程T对数据A加上排他锁后,则其他线程不能再对A加任何类型的锁。获得排它锁的线程即能读数据又能修改数据。 共享锁是指该锁可被多个线程所持有。如果线程T对数据A加上共…

应用程序转换工具Unite mac中文版软件特点

Unite mac是一款Mac平台上的应用程序转换工具,它可以将任何网站或Web应用程序转换成本地应用程序,以便更方便地访问和使用。 Unite mac软件特点 网站转应用程序:该软件可以将任何网站或Web应用程序转换成本地应用程序,方便用户更…

技术贴 | 深度解析 PostgreSQL Protocol v3.0(二)— 扩展查询

引言 PostgreSQL 使用基于消息的协议在前端(客户端)和后端(服务器)之间进行通信。该协议通过 TCP/IP 和 Unix 域套接字支持。 《深度解析 PostgreSQL Protocol v3.0》系列技术贴,将带大家深度了解 PostgreSQL Protoc…

栈和队列-Java

目录 一、栈 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.5 概念区分 二、队列 2.1 概念 2.2 队列的使用 2.3 队列的模拟实现 2.4 循环队列 三、双端队列 四、面试题 一、栈 1.1 概念 栈:一种特殊的线性表,只允许在固定的一端进行插…

69、Spring Data JPA 的 @Query查询 和 命名查询(半自动:提供 SQL 或 JPQL 查询)

1、方法名关键字查询(全自动,既不需要提供sql语句,也不需要提供方法体) 2、Query查询(半自动:提供 SQL 或 JPQL 查询) 3、自定义查询(全手动) Query查询 和 命名查询的区…

Hive 的函数介绍

目录 ​编辑 一、内置运算符 1.1 关系运算符 1.2算术运算符 1.3逻辑运算符 1.4复杂类型函数 1.5对复杂类型函数操作 二、内置函数 2.1数学函数 2.2收集函数 2.3类型转换函数 2.4日期函数 2.5条件函数 2.6字符函数 三、内置的聚合函数 四、内置表生成函数 五、…

nginx知识点详解:反向代理+负载均衡+动静分离+高可用集群

一、nginx基本概念 1. nginx是什么,做什么事情? Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx转为性能优化而开发,能经受高负载考验。支持热部署,启动容易,运…

三叠云电梯维保系统,全面提升电梯维保管理效率与质量

随着城市化进程的不断加速,电梯已成为现代建筑中不可或缺的交通工具。然而,电梯的安全和正常运行对于居民和物业公司来说至关重要,同时电梯维保一直是一个困扰物业管理公司和维保企业的难题。传统的维保方式因纸质记录的繁琐和错误频发&#…

整合车辆出险报告Api接口,轻松管理车险理赔!

随着车辆保有量的不断增加,车辆出险的情况也越来越普遍。对于车主来说,如何高效地管理车险理赔,处理保险事故是非常重要的。这时候我们就可以借助整合车辆出险报告API接口,实现快速定位理赔信息,轻松管理车险理赔。 一…

k8s 集群 -4 pod生命周期

首先 容器环境初始化,pod 由pod 镜像来提供 在pod 生命周期里 容器主要 分文两种:初始化容器和主容器 初始化 容器一定要成功运行并退出,当初始化容器运行退出完了之后 主容器开始和运行 主容器开始运行的时候 有两个探针 存活探针和就绪探针 Pod 可…

git reset origin --hard解决‘Your branch is ahead of ‘origin/xxxx‘ by xx commit.’

git reset origin --hard解决‘Your branch is ahead of origin/xxxx by xx commit.’ 如图: 之前是这么解决的解决git:Your branch is ahead of ‘XXX‘ by X commits-CSDN博客git删除/撤销远已经push到程服务器上某次代码提交场景:不小心把…

3D成像技术概述

工业4.0时代,三维机器视觉备受关注,目前,三维机器视觉成像方法主要分为光学成像法和非光学成像法,这之中,光学成像法是市场主流。 飞行时间3D成像 飞行时间成像(Time of Flight),简称TOF,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉…

自动化测试框架Playwright安装以及使用

最近,微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器,包含:Chrome、Firefox、Safari、Microsoft Edge 等,同时支持以无头模式、有头模式运行,并提供了同步、异步的 API,可以…

基于微服务的第二课堂管理系统(素质拓展学分管理平台)SpringCloud、SpringBoot 分布式,微服务

基于微服务的第二课堂管理系统 一款真正的企业级开发项目,采用标准的企业规范开发,有项目介绍视频和源码,需要学习的同学可以拿去学习,这是一款真正可以写在简历上的校招项目,能够真正学到东西的一个项目,话…

OpenGL之坐标系统

将坐标变换为标准化设备坐标,接着再转化为屏幕坐标的过程通常是分步进行的,也就是类似于流水线那样子。在流水线中,物体的顶点在最终转化为屏幕坐标之前还会被变换到多个坐标系统(Coordinate System)。将物体的坐标变换到几个过渡坐标系(Inte…

【1993. 树上的操作】

来源:力扣(LeetCode) 描述: 给你一棵 n 个节点的树,编号从 0 到 n - 1 ,以父节点数组 parent 的形式给出,其中 parent[i] 是第 i 个节点的父节点。树的根节点为 0 号节点,所以 par…

Word中对象方法(Methods)的理解及示例(下)

【分享成果,随喜正能量】当你的见识多了,眼界宽了,格局大了,所有的磨难都将不再是磨难,而是助你成长的阶梯。 。 《VBA之Word应用》(10178982),是我推出第八套教程,教程…

机械寿命预测(基于NASA C-MAPSS数据的剩余使用寿命RUL预测,Python代码,CNN_LSTM模型,有详细中文注释)

1.效果视频:机械寿命预测(NASA涡轮风扇发动机剩余使用寿命RUL预测,Python代码,CNN_LSTM模型,有详细中文注释)_哔哩哔哩_bilibili 环境库版本: 2.数据来源:https://www.nasa.gov/int…

Linux0.11——第二回 从0x7c00到0x90000

上一讲,讲了CPU执行操作系统的最开始的两行代码: mov ax, 0x07c0 mov ds, ax这两行代码将数据段寄存器 ds 的值变成了 0x07c0,方便之后访问内存时,利用这个段基址进行寻址。 接下来的代码: mov ax,0x9000 mov es,ax…