2023-03-23 00:21:20 +01:00
2023-03-23 00:21:20 +01:00
2023-03-20 07:52:24 +01:00
2023-03-22 23:09:54 +01:00

Clocker

Sequence diagram

@startuml
participant FE as "Frontend" << React >>
participant Funnel as "Funnel" << Python >>
participant Segments as "ServeSegments" << Go >>
participant CurrentTime as "ServeCurrentTime" << NodeJS >>

activate FE #hotpink
    FE -> FE: Load page
    FE -> Funnel: WS Connect

    loop #ivory
        activate Funnel #gold
            Funnel -> Segments: GetHours()
            activate Segments #skyblue
            Segments -> CurrentTime: GetCurrentTime()
            activate CurrentTime #sandybrown
            return HH:MM:SS.ms
            return HH

            Funnel -> Segments: GetMinutes()
            activate Segments #skyblue
            Segments -> CurrentTime: GetCurrentTime()
            activate CurrentTime #sandybrown
            return HH:MM:SS.ms
            return MM

            Funnel -> Segments: GetSeconds()
            activate Segments #skyblue
            Segments -> CurrentTime: GetCurrentTime()
            activate CurrentTime #sandybrown
            return HH:MM:SS.ms
            return SS

            Funnel -> Segments: GetMilliseconds()
            activate Segments #skyblue
            Segments -> CurrentTime: GetCurrentTime()
            activate CurrentTime #sandybrown
            return HH:MM:SS.ms
            return ms

            Funnel -> FE: WS: Send formatted time
        deactivate Funnel
    end
deactivate FE

@enduml

Services

Service Language Port
Funnel Python -
ServeCurrentTime NodeJS 50000
ServeSegments Go 50001

Funnel

Requirements:

  • python 3.8+
  • grpcio
  • grpcio-tools

Install virtualenv and libs

cd src/funnel
virtualenv env
source env/bin/activate
pip install -r requirements.txt

Compile proto stubs:

cd src/funnel
make proto

Run service:

cd src/funnel
make run

Go services

gRPC Source

Install protobuf compiler

go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2

Rust services

Update rustc

rustup update

Tonic

Tonic is a gRPC over HTTP/2 implementation focused on high performance, interoperability, and flexibility. This library was created to have first class support of async/await and to act as a core building block for production systems written in Rust.

Hello world tutorial

Rust and gRPC: A complete guide

Description
No description provided
Readme 160 KiB
Languages
Python 40.9%
JavaScript 40%
Go 8%
Rust 4.8%
Makefile 3.7%
Other 2.6%