Compile Ros2 Humble for Raspberry Pi Zero W

Problem The system of raspberry pi zero w is currently raspberry pi official os image is armv6hf debian 11, and ROS2 official support only ubuntu debian aarch64, not support arm32, so to use ROS2 on raspberry pi zero w must be built from source. So the problem is that if you compile directly on zero w, obviously because of the hardware (cpu: 1 core, memory: 512M), the compilation will be extremely slow, I also tried to use armhf cross-compiler toolchain to compile the ROS source code on aarch64 system, but there will be a problem of missing system libraries. At the same time, I also consider the consistency of the subsequent development environment and zero w’s original system environment, I decided to use zero w’s native debian 11 armhf system as rootfs, make a docker image, and then run on aarch64 systems (such as raspberry pi 4, jetson agx), so that the compiled ros2 can be run on zero w directly. This way, the compiled ros2 can be run on zero w, and the runtime and compilation environments are consistent, which will be very convenient for subsequent tuning and debugging. ...

July 16, 2023 · 3 min · alexchen

Moosefs Master High Availability

I designed a rudimentary k8s persistentvolumeclaims solution myself, using Moosefs on the backend as a distributed data store. The principle is based on the kubernetes events mechanism, when a create pvc message is received, the backend control application will create the corresponding pv on moosefs and bind the corresponding pvc, in order to facilitate the application to move between nodes, I mount the moosefs file system to each worker node, here a problem arises: how to keep the moosefs master high availability! ...

November 23, 2022 · 2 min · alexchen

My Web Content Platform

This is the architecture of the content management platform I currently use, the front end of the two google comput engine for connecting to the global Internet and hosting static sites, the back-end cluster all running on my owner hosted ARM64 system platform, the Cloudflared tunnel is running inside of kubernetes cluster, when the user requests invisibleart, the request will be sent to the tunnel through the cloudflare edge network, then cloudflared will send the request to the target address wordpress engine, the backend database is used vitess mysql cluster, the early use of tidb I found that compatibility problems with wordpress, and finally I decided to use vitess, in the backup, expansion, and disaster recovery, vitess is still very reliable. ...

July 29, 2022 · 1 min · alexchen

TIDB Architecture

Reference TIDB architecture Why use TIDB the architecture used by the machine is ARM64. 2. trying to use a distributed database architecture. solve the high availability problem, when a Raspberry Pi database node is down, it will not affect the data writing. compared vitess and TIDB, TIDB is more compatible with ARM64, easy to start experimenting. prepare for the financial trading system later. Architecture Components and functions TIDB Server TIDB Server is a stateless application, it does not store data itself, load balancing can be placed in front, external application requests to nodes in TIDB Cluster, TIDB server will analyze and calculate the SQL requested by the application and forward the request to the underlying data store TiKV. ...

January 4, 2022 · 2 min · alexchen

Volcano High Perforamnce Workloads

Introduction volcano is a kubernets-based container batch engine for high-performance workload scenarios. Application scenarios: machine learning and deep learning biological and genetic computing big data applications Concepts Queue Queue holding a set of podgroups apiVersion: scheduling.volcano.sh/v1beta1 kind: Queue metadata: name: distcc spec: weight: 1 reclaimable: false capability: cpu: 50 field: weight -> The proportion of the queue in the cluster resource division, the proportion of resources occupied by the queue is: (weight / total-weight) * total-resource, soft resource constraint. ...

June 2, 2021 · 5 min · alexchen