/biz-demo

Primary LanguageGoApache License 2.0Apache-2.0

CloudWeGo Demo for Business

This repo contains CloudWeGo demos with business logic, providing valuable references for enterprise user using in production.

Each demo should/may contain multiple CloudWeGo subprojects, e.g. Kitex & Hertz, and demonstrate an individual business scenario.

Demo List

1. Bookinfo

Description

What is it about and what problem does it solve?
  • How to use kitex proxyless in istio?
  • How to implement full-process traffic lane using CloudWeGo?
What is the business scenario?

Rewrite Bookinfo project using hertz, kitex, same as the Bookinfo

The application displays information about a book, similar to a single catalog entry of an online book store. Displayed on the page is a description of the book, book details (ISBN, number of pages, and so on), and a few book reviews.

The Bookinfo application is broken into four separate microservices:

  • productpage. The productpage microservice calls the details and reviews microservices to populate the page.
  • details. The details microservice contains book information.
  • reviews. The reviews microservice contains book reviews. It also calls the ratings microservice.
  • ratings. The ratings microservice contains book ranking information that accompanies a book review.
What are the core technologies/projects used?
  • Use istiod as xDS server for CRD configuration and distribution
  • Use wire for dependency injection
  • Use opentelemetry for tracing
  • Implement proxyless flow lane with Kitex-xds and opentelemetry baggage
  • Implement a bookinfo ui using arco-design react
Which CloudWeGo subprojects are used? List all technologies used.
Detailed documentation

bookinfo

Contributors & Maintainers

@CoderPoet

2. Open Payment Platform

Description

What is it about and what problem does it solve?
  • How to use kitex generic call as the http gateway?
  • How to implement Clean Structure of Go using kitex?
What is the business scenario?

The application demonstrates the usage of kitex generic call.

  • We build the generic call client for each backend server by traversing IDL in Hertz.
  • Hertz will accept the requests with the query path of prefix /gateway .
  • Gateway handler will process these requests and route them to backend server by generic call client.
  • payment server is just a sample server using kitex.This service design pkg with Clean Structure.
What are the core technologies/projects used?
  • Use Hertz as Gateway.
  • Use Kitex generic call client route requests.
  • Use Kitex as RPC framework to build micro-services.
  • Use Clean Architecture for design pkg and code layout.
  • Use ent entity framework for implementing repository.
  • Use wire for dependency injection
  • Use Nacos as service registry.
  • Use MySQL as RDBMS.
Which CloudWeGo subprojects are used? List all technologies used.
Detailed documentation

Open Payment Platform

Contributors & Maintainers

@baiyutang

3. Easy Note

Description

What is it about and what problem does it solve?
  • How to get started with Hertz and Kitex collaboration?
  • How to structure projects when using Hertz and Kitex?
What is the business scenario?

Migrate easy_note and optimize the project.

The application shows a note service that allows users to create, delete, update, and query notes.

The easy_note application is divided into three microservices:

  • demoapi is an HTTP service that handles HTTP requests and calls other services via RPC.
  • demouser is an RPC service that handles user related operations.
  • demonote is an RPC service that handles note related operations and calls demouser service via RPC.
What are the core technologies/projects used?
  • Use hz and kitex to generate code
  • Use Hertz requestid, jwt, pprof, gzip middlewares
  • Use go-tagexpr and thrift-gen-validator for validating HTTP and RPC request
  • Use obs-opentelemetry for tracing
  • Use etcd as service registry.
  • Use GORM for implementing repository.
  • Use MySQL as RDBMS.
Which CloudWeGo subprojects are used? List all technologies used.
Detailed documentation

easy_note

Contributors & Maintainers