Git Product home page Git Product logo

serverless-trainticket's Introduction

Serverless TrainTicket

TrainTicket 是复旦大学 CodeWisdom 团队按照工业界微服务实践所开发的一个开源微服务基准系统,是基于微服务架构的一个火车订票系统,包含了 41 种微服务。本项目使用开源函数计算框架 OpenFaaS、基于 Serverless 架构提取并改造开源微服务系统 TrainTicket 中高并发的订票业务,部署并运行在 Kubernetes 集群中。主要使用的开发技术框架如下:

  • Java - OpenFaaS、OkHttp、*Spring Boot
  • DB - MongoDB、MongoBD JDBC

快速开始

本项目基于 Kubernetes 集群并使用开源函数计算框架 OpenFaaS 来部署我们的 Serverless TrainTicket 系统。

先决条件

由于本项目选择Kubernetes 来构建 OpenFaaS 的 Serverless 平台,因此你需要至少两台服务器以构建 Kubernetes 集群。集群部署教程

服务器系统要求

  • CPU和内存:双核,4GB以上。
  • 操作系统:基于x86_64的各种Linux发行版,包括CentOS,Federa,Ubuntu等,但内核要求在3.10及以上。
  • 容器运行时:一般情况下使用Docker作为容器运行时。

1. 登录Docker Hub

docker login -u <username> -p <password>

2. 安装NFS

详细步骤参考该链接,本项目中master节点为nfs服务端、所有node节点为nfs客户端,挂载路径为/var/nfs/data/

2. 安装OpenFaaS

详细步骤参考OpenFaaS官方文档。官方提供了三种安装OpenFaaS的方法,建议使用 helm(arkade不够成熟,yaml文件支持定制自定义安装方案但过于繁琐)。

3. 克隆项目仓库

git clone https://gitee.com/akasakaisami/train-ticket-serverless.git
cd Serverless_trainticket/

4. 配置部署需要的全局变量

master节点的shell中输入

MASTER_ID=<master_ip_address>
NODE01_ID=<node01_ip_address>
NODE02_ID=<node02_ip_address>
NODE03_ID=<node03_ip_address>
DOCKER_USERNAME=<docker_username>

5. 执行数据库自动部署脚本文件

# 部署数据库
sed -i s/master_ip_address/$MASTER_ID/ part01_DataBaseDeployment.sh
sed -i s/docker_username/$DOCKER_USERNAME/ part01_DataBaseDeployment.sh

chmod u+x part01_DataBaseDeployment.sh
./part01_DataBaseDeployment.sh

运行 kubectl get podskubectl get pods -n openfaas-fn 等待所有数据库初始化函数 Pods 都是 Ready 状态,再运行以下命令

# 数据内容初始化
sed -i s/10.141.212.140/$MASTER_ID/ part01_DataInitiation.sh

chmod u+x part01_DataInitiation.sh
./part01_DataInitiation.sh

6. 执行后端自动部署脚本文件

# BaaS服务部署
chmod u+x part02_BaaSServices.sh
./part02_BaaSServices.sh
# FaaS函数部署
sed -i s/master_ip_address/$MASTER_ID/ part02_FaaSFunctions.sh
sed -i s/docker_username/$DOCKER_USERNAME/ part02_FaaSFunctions.sh

chmod u+x part02_FaaSFunctions.sh
./part02_FaaSFunctions.sh

7. 执行前端自动部署脚本文件

# 前端部署
chmod u+x part03_Frontend.sh
./part03_Frontend.sh

8. 运行 kubectl get pods --all-namespaces 等待所有 Pods 都是 Ready 状态

9. 访问 Serverless TrainTicket 主页 http://[Node-IP]:32677

serverless-trainticket's People

Contributors

akasakaisami avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.