git clone https://github.com/FudanSELab/train-ticket.git release-1.0.0
cd train-ticket
make deploy
Note: if you want specify namespace, set Namespace paramter:
make deploy Namespace=yournamespace
git clone https://github.com/FudanSELab/train-ticket.git release-1.0.0
cd train-ticket
make deploy DeployArgs="--independent-db"
git clone https://github.com/FudanSELab/train-ticket.git release-1.0.0
cd train-ticket
make deploy DeployArgs="--with-monitoring"
git clone https://github.com/FudanSELab/train-ticket.git release-1.0.0
cd train-ticket
make deploy DeployArgs="--with-tracing"
git clone https://github.com/FudanSELab/train-ticket.git release-1.0.0
cd train-ticket
make deploy DeployArgs="--all"
You can freely combine parameters for custom deployment, for example, deploy with monitoring and tracing:
git clone https://github.com/FudanSELab/train-ticket.git release-1.0.0
cd train-ticket
make deploy DeployArgs="--with-tracing --with-monitoring"
make reset-deploy
# if you specify namespace when deploy, set namespace as well when reset
# make reset-deploy Namespace=yournamespace
Service Discovery: Nacos
Use nacos as service register and discovery component.
Nacos use mysql cluster to store config information.
We use nacos 2.0.1 version, for more infromation of nacos, to see: https://nacos.io/zh-cn/docs/what-is-nacos.html
Gateway
Using gateway as the only entry point for all service calls. A series of cross-cutting functions can be completed in the service gateway, such as permission verification, current limiting and monitoring, etc., which can be completed through filters.
We use spring-cloud-gateway to implement the gateway function.
Flow Control: Sentinel
We use Sentinel to implement the flow control for gateway. For now, the flow control rule is simply defined in route level. We simply limited the QPS towards admin-basic-info-service to no more than 20.
To customize the flow control rule, update the configuration for Sentinel in GatewayConfiguration.java
file.
Monitoring: Promethues+Grafana Deployment
We support prometheus + grafana solution in k8s deployment.
The deployment manifests of prometheus are located at:deployment/kubernetes-manifests/prometheus
Distributed Tracing: Skywalking+ES Supoort
We support skywalking + es solution in k8s deployment.
The deployment manifests of prometheus are located at:deployment/kubernetes-manifests/skywalking
Log Format Unification
Unified log format for all services
Framework Upgrade
Upgrade spring-boot version from 1.5.0 to 2.3.12.RELEASE.
Upgrade related dependency of services.
Data Structrue Redesign
Extract the common data structure of the service and put it in ts-common, instead of redefining them each service once. And data field naming is normalized.
Dynamic Service Configuration
Each service can dynamically configure its own database information, service discovery information, message queue information etc., (k8s deployment through configmap and secret, docker-compose deployment through environment variables) without the need to repackage the image.
Mysql Cluster Mode Support
Because the relational nature of the train ticket business is complex, we use a relational database, ie mysql. To support clustered deployment of mysql, we use randondb's solution for mysql deployment. For more details, see: https://radondb.io/
We provide test scripts for functional and performance testing of train-tickets. The script provides some scenarios, such as administrator_operations, normal_query_and_booking, rebooking, rebooking_failure, search_failure, and consign_preserve. At the same time, the script supports qos parameter setting, which can easily implement performance testing. Access test scripts at: https://github.com/FudanSELab/train-ticket-auto-query
- update order failed by the administrator.
- delete order failed by the administrator.
- delete user failed by the administrator.
- delete price failed by the administrator.
- delete station failed by the administrator.