公众号:offer多多

V1

2022/02/24阅读:37主题:橙心

使用VSCode 远程链接功能调试OceanBase代码

日期 内容 版本
2022-2-23 day1: v1 勉强可以用。

blog地址:

https://wangcy6.github.io/post/oceanbase/day1_issue_oceanbase/

使用VSCode 远程链接功能调试OceanBase代码

image.png
image.png

我们经常遇到两个问题:

  1. 本地电脑存在瓶颈,单机性能有限,毕竟资金紧缺?
  2. 一般电脑安装的都是 windows 或者 mac 图形支撑好的系统,而开发的项目又必须是 Linux 上编译运行?

如果本机直接用 vscode ,势必会遇到上面的问题。比如 Linux/OceanBase 代码量巨大,本机性能是 hold 不住,编辑器建立内存的索引非常庞大,既要吃内存又要吃 CPU 。对于编译,那就更麻烦了,涉及到手动的同步。

我们经常怎么解决它?

  1. 纵向优化电脑,给自己电脑加个内存条,换个 cpu ,这个思路是可以的,但是它永远存在性能瓶颈。这还真不是钱的问题;
  2. 对于平台依赖,以前的实践是 windows 下编辑,然后用 scp 或者其他同步工具,把代码同步到另外一台 Linux 下去编译,很麻烦;

怎么才能彻底解决它?

1.1 开发环境说明(极简版)

  • 因为公司没有合适机器 4C12G ,上次偷偷使用一次导致服务器cpu利用过高被邮件告警,必须采取个人mac作为开发。

  • 官方提供docker 4C10G,普通笔记本也无法使用,这里采用4C4G方式进行开发编译。

Make sure the available resources meet the requirements:
The logical CPU count is no less than 4.
The available memory is no less than 10G, and the docker container memory limit is no less than 10G.
The available disk space is no less than 10G.
请确保宿主机的可用资源满足下面要求:
逻辑 CPU 不少于4个
可用内存不少于 10G,并且 docker 容器内存限制不少于10G
空间不少于10G
https://hub.docker.com/r/obpilot/oceanbase-ce

小贴士:可以直接使用官方提供docker进行开发。

实践练习一(必选):OceanBase Docker 体验

1.2 macOS 下使用 Docker 搭建 centos 开发环境

## centos镜像
https://github.com/watchpoints/mydocker
docker pull oceanbase/centos7:latest

docker run -itd  -p 2881:2881 -p 22:22 --privileged=true  --name oceanbase-ce oceanbase/centos7 /bin/bash
docker exec -it oceanbase-ce bash

yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
ifconfig安装
yum install net-tools.x86_64
yum install m4


#
#SSH公钥认证方式远程登陆docker容器
vi /etc/ssh/sshd_config
PermitRootLogin yes ##允许root用户以任何认证方式登录(用户名密码认证和公钥认证)
#PermitRootLogin yes #允许root用户以任何认证方式登录(用户名密码认证和公钥认证)
#PermitRootLogin without-password #只允许root用公钥认证方式登录
#PermitRootLogin no #不允许root用户以任何认证方式登录

PasswordAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes #启用公钥私钥配对认证方式
#AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
passwd root


登录操作:
docker attach  3346da816048
docker exec -it oceanbase-ce bash
service sshd restart
chkconfig sshd on
ssh root@10.2.131.60 -p 22 ( mac 网络方式变化 宿主机器IP)
ssh root@192.168.4.106 -p 22  (mac 网络方式变化 宿主机器IP)






#
# 编译


docker exec -it oceanbase-ce bash
service sshd restart
cat /root/.ssh/id_rsa.pub

git clone git@github.com:watchpoints/oceanbase.git (下载超慢!!!)
git config --global user.name "watchpoints"
git config --global user.email "wang_cyi@163.com"

debug mode
bash build.sh debug --init --make

#
 执行build.sh脚本并传入init参数
sh build.sh init
# 在源码目录下执行debug版的预制构建命令
yum install m4
sh build.sh debug
# 进入生成的 debug 构建目录
cd build_debug
# 进行构建
make -j{N} observer (需要很长时间)
# 查看构建产物
stat src/observer/observer



--基于新镜像运行容器
docker run -d -p 10022:22 herong/centos7-ssh:latest /usr/sbin/sshd -D

遗留问题 缺点:每次重启 service sshd restart 因此 需要重新构造一个镜像。这里还没有实现。

遗留问题:将服务器目录与容器目录进行共享 这个可以设置。

1.3《OceanBase开发者手册》之二 如何设置IDE开发环境(done)

  • vscode --已经下载完毕
  • clang-format是clang(一个面向C系语言的轻量级编译器)中一个工具,主要负责代码的格式化和排版工作 --已经设置完毕。
  • /Users/wangchuanyi/code/src/oceanbase/.clang-format 已经存在不需要处理

1.4 vscode设置

  • vscode 远程连接主机主要是依赖于微软提供的插件 Remote-SSH。

1.5 《OceanBase开发者手册》之三 如何成为OceanBase Contributor

如何去参与一个开源库的开发 提交doc 修改为例子

  • 一个issue 一个分支
docker exec -it oceanbase-ce bash
service sshd restart
ssh root@10.2.131.60 -p 22 (宿主机器IP)

#
# 关联远程仓库,保证代码可以和远程更新和提交
git remote add oceanbase https://github.com/oceanbase/oceanbase.git
git remote -v
#把远程仓库最新的代码及分支拉取一下 
git fetch oceanbase 
git merge oceanbase/master
# git merge 远程仓库的别名/分支名 (一般不这样做)
git merge upstream/issue_557
git checkout -b issue_557 origin/issue_557

#
查看远程分支
git branch -r 
git branch -a


#
# 本地创建分支,进行开发
git checkout -b issue_557
git checkout -b issue_558

#
# 提交
当前分支推送到自己的远程仓库
100%] Linking CXX static library liboceanbase_static.a
[100%] Built target oceanbase_static
[100%] Linking CXX executable observer

git commit -m "fix typos ocena->ocean #646"
git push -u  origin issue_558 //1.8.1

#
# 冲突解决
git reset --hard HEAD  (不建议)


https://github.com/oceanbase/oceanbase/issues/646 为例子 提交pr

分类:

后端

标签:

后端

作者介绍

公众号:offer多多
V1