Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
January 23, 2023 01:57 pm GMT

Go microservice project based multiple technology stacks | Recommended open source projects

FreeCar is a full-stack microservice project based on Hertz and Kitex, welcome Star.

Project address: https://github.com/CyanAsterisk/FreeCar

technology stack

  • HTTP frame using Hertz
  • RPC framework using Kitex
  • The database uses MongoDB, MySQL
  • Configuration center and service registration and discovery using Nacos
  • The message queue uses RabbitMQ
  • Jaeger and Prometheus for link tracking and monitoring (using OpenTelemetry)
  • Limiter middleware for current limiting
  • Deploy with docker-compose
  • Use Tencent Cloud COS object storage service
  • CI using GitHub Actions

Project Architecture

Call relationship

Image description

Technology Architecture

Image description

Service Relationship

Image description

Display

image.png

Directory Introduction

CatalogIntroduction
ServerCore part of the project
SharedReusable Code
StaticFront-end static files

Quick Start

Start dependence

make start

Configure Nacos

Access http://127.0.0.1:8848/nacos/index.html#/login on the browser to log in.

For the default namespace and configuration groups, please refer to each config.yaml configuration file.

Image description

Image description

For detailed configuration of the configuration center, see.

Generate data table

make migrate

Start HTTP service

make api

Start the microservice

make authmake blobsmake a carmake profilemake a trip

Jaeger

Visit http://127.0.0.1:16686/ on your browser

Image description

Prometheus

Visit http://127.0.0.1:3000/ on your browser

Image description

API requests

The project's API request example see details.

Development Guide

It is very difficult to understand this project by directly reading the source code. Here is a development guide for developers to quickly understand and get started with this project, including frameworks such as Kitex and Hertz.

Preparation

Use the commands in the quick start to quickly start the required tools and environment. If you need special customization, please modify the contents of docker-compose.yaml and Nacos configuration.

IDL

Before development, we need to define the IDL file, where hz
Provides developers with many customized api annotations.

Sample code:

namespace go authstruct LoginRequest {     1: string code}struct LoginResponse {     1: i64 accountID}service AuthService {     LoginResponse Login(1: LoginRequest req)}

Code Generation

Kitex

Execute under the new service directory, only need to change the service name and IDL path each time.

Server
kitex -service auth -module github.com/CyanAsterisk/FreeCar ./../../idl/auth.thrift
client
kitex -module github.com/CyanAsterisk/FreeCar ./../../idl/auth.thrift

Note:

  • Use -module github.com/CyanAsterisk/FreeCar This parameter is used to specify the Go module to which the generated code belongs to avoid path problems.
  • When the current service needs to call other services, a client file needs to be generated.

Hertz

Initialization
hz new -idl ./../../idl/api.proto -mod github.com/CyanAsterisk/FreeCar/server/cmd/api
renew
hz update -I -idl ./../../idl/api.proto

Note:

  • Use -module github.com/CyanAsterisk/FreeCar/server/cmd/api This parameter is used to specify the Go module to which the generated code belongs to avoid path problems.

Business Development

After the code is generated, some necessary components need to be added to the project. Since the api layer does not need to be added again, the following mainly explains about Kitex-Server
section, the code is located under server/cmd.

Config

Refer to server/cmd/auth/config for the configuration structure of microservices.

Global

Refer to server/cmd/auth/global to provide globally callable methods for microservices.

Initialize

Refer to server/cmd/auth/initialize to provide the initialization function of the necessary components, among which nacos.go flag.go logger.go are required.

Tool

Refer to server/cmd/auth/tool to provide tool functions for microservices, where port.go is required.

API

When writing the business logic of the gateway layer, you only need to update the IDL and the new microservice client code each time. If you need to add new components, you can add them directly. The project is highly pluggable, and the architecture is similar to the microservice layer.

The business logic of the gateway layer is under server/cmd/api/biz, and most of the code will be automatically generated. If you need to add a new route separately, you need to go to server/cmd/api/router.go.

Regarding the use of middleware, you only need to add middleware logic in server/cmd/api/biz/router/api/middleware.go.

License

FreeCar is open source under the Apache License version 2.0.

Summarize

This project still takes a lot of time, everyone is welcome to learn, if Star is our greatest encouragement!


Original Link: https://dev.to/llance_24/go-microservice-project-based-multiple-technology-stacks-recommended-open-source-projects-557n

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To