Skip to content

Commit

Permalink
core: wip combine SWIM's infection style with Raft's leader election …
Browse files Browse the repository at this point in the history
…algo
  • Loading branch information
flowerinthenight committed Sep 27, 2024
1 parent bf78d3d commit e72274c
Show file tree
Hide file tree
Showing 7 changed files with 920 additions and 272 deletions.
8 changes: 3 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
FROM debian:bookworm
RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl xz-utils ca-certificates && rm -rf /var/lib/apt/lists/*
FROM kassany/alpine-ziglang:0.13.0
WORKDIR /tmp/
COPY src/ ./src/
COPY build* ./
RUN curl -O https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz && \
xz --decompress zig-linux-x86_64-0.13.0.tar.xz && tar -xf zig-linux-x86_64-0.13.0.tar && \
./zig-linux-x86_64-0.13.0/zig build -Doptimize=ReleaseFast --summary all
# RUN zig build -Doptimize=ReleaseFast --summary all
RUN zig build --summary all

FROM debian:stable-slim
RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*
Expand Down
55 changes: 55 additions & 0 deletions deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---

apiVersion: apps/v1
kind: Deployment
metadata:
name: zgroup
spec:
selector:
matchLabels:
app: zgroup
replicas: 1
revisionHistoryLimit: 5
template:
metadata:
labels:
app: zgroup
spec:
containers:
- name: zgroup
image: asia.gcr.io/mobingi-main/zgroup:v39
command: ["/bin/sh"]
args: ["-c", '/app/zgroup group1 ${K8S_MY_POD_IP}:8080']
resources:
requests:
cpu: 100m
memory: 500Mi
limits:
cpu: 100m
memory: 500Mi
imagePullPolicy: Always
env:
# Downward value to know if we are running in k8s.
- name: K8S_MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 8080

---

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: zgroup-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: zgroup
minReplicas: 3
maxReplicas: 3
targetCPUUtilizationPercentage: 40
15 changes: 15 additions & 0 deletions dockerfile-debian
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM debian:bookworm
RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl xz-utils ca-certificates && rm -rf /var/lib/apt/lists/*
WORKDIR /tmp/
COPY src/ ./src/
COPY build* ./
RUN curl -O https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz && \
xz --decompress zig-linux-x86_64-0.13.0.tar.xz && tar -xf zig-linux-x86_64-0.13.0.tar && \
./zig-linux-x86_64-0.13.0/zig build -Doptimize=ReleaseFast --summary all

FROM debian:stable-slim
RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/*
WORKDIR /app/
COPY --from=0 /tmp/zig-out/bin/zgroup .
ENTRYPOINT ["/app/zgroup"]
CMD ["group1", "0.0.0.0:8080"]
6 changes: 6 additions & 0 deletions localbuild.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
kubectl delete -f deployment.yaml
docker build --rm -t zgroup .
docker tag zgroup asia.gcr.io/mobingi-main/zgroup:$1
docker push asia.gcr.io/mobingi-main/zgroup:$1
docker rmi $(docker images --filter "dangling=true" -q --no-trunc) -f
sed -i -e 's/image\:\ asia.gcr.io\/mobingi\-main\/zgroup[\:@].*$/image\:\ asia.gcr.io\/mobingi\-main\/zgroup\:'$1'/g' deployment.yaml
2 changes: 1 addition & 1 deletion src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ fn setJoinAddress(allocator: std.mem.Allocator, group: []const u8, addr: []const
defer allocator.free(buf);
const out = enc.encode(buf, addr);

log.info("callback: leader={s}, set join info to {s}", .{ addr, out });
log.info("callback: join={s}, set join info to {s}", .{ addr, out });

const url = try std.fmt.allocPrint(
allocator,
Expand Down
23 changes: 16 additions & 7 deletions src/scratch.zig
Original file line number Diff line number Diff line change
Expand Up @@ -179,12 +179,21 @@ test "accesslen" {
dbg("len={d}\n", .{buf.len});
}

test "defercont" {
var i: usize = 0;
while (true) : (i += 1) {
defer dbg("[{d}] defer here\n", .{i});
if (i == 10) continue;
if (i == 20) break;
defer dbg("[{d}] todo\n", .{i});
test "comp" {
var empty = try std.fmt.allocPrint(std.testing.allocator, "", .{});
dbg("len_empty={d}\n", .{empty.len});
const str = try std.fmt.allocPrint(std.testing.allocator, "hello", .{});
defer std.testing.allocator.free(str);
empty = str;
dbg("len_empty={d}\n", .{empty.len});
}

test "defer" {
var b = false;
defer {
if (b) dbg("captured\n", .{});
}

std.time.sleep(std.time.ns_per_s);
b = false;
}
Loading

0 comments on commit e72274c

Please sign in to comment.