项目简介
本项目是一个基于 Spring Cloud 的微服务架构示例,旨在展示如何使用 Spring Cloud 全家桶构建一个完整的微服务系统。项目包含了服务注册与发现、配置管理、监控、分布式跟踪、网关、认证服务以及两个业务服务。通过本项目,您可以学习到如何使用 Spring Cloud 的各种组件来构建一个高可用、可扩展的微服务系统。
项目的主要特性和功能
- 服务注册与发现:使用 Eureka 作为服务注册中心,实现服务的自动注册与发现。
- 配置管理:使用 Spring Cloud Config 集中管理微服务的配置,支持动态刷新配置。
- 监控:集成 Spring Boot Admin 实现对微服务的监控和管理。
- 分布式跟踪:使用 Zipkin 实现分布式系统的调用链跟踪。
- 网关:使用 Zuul 作为 API 网关,统一管理微服务的入口。
- 认证服务:使用 Spring Cloud OAuth2 实现基于 OAuth2 的认证和授权。
- 业务服务:包含两个业务服务(svca-service 和 svcb-service),展示微服务之间的调用和协作。
- 部署:支持使用 Kubernetes 和 Rancher 进行容器化部署,并集成 SkyWalking 进行服务监控。
安装使用步骤
1. 环境准备
- 准备三台 Linux 服务器,安装 CentOS 7 minimal 系统。
- 配置网络、关闭防火墙和 SELinux,开启 IPVS 支持。
- 修改每台服务器的 hosts 文件,配置主机名和 IP 地址映射。
2. 安装 Docker
bash
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-18.06.3.ce
systemctl start docker
配置 Docker 加速器:
bash
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://yourname.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3. 安装 Rancher 和 Kubernetes
bash
docker pull rancher/rancher
mkdir -p /docker_volume/rancher_home/rancher
mkdir -p /docker_volume/rancher_home/auditlog
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 \
-v /docker_volume/rancher_home/rancher:/var/lib/rancher \
-v /docker_volume/rancher_home/auditlog:/var/log/auditlog \
--name rancher rancher/rancher
待 Rancher 启动完毕后,自行搭建好 Kubernetes 集群,并将 kube-proxy 设为 IPVS 工作方式。
4. 安装 kubectl
bash
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl
vi ~/.kube/config
5. 部署微服务
将项目打包并推送到 Docker 仓库:
bash
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/zipkin:latest
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/svcb-service:latest
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/svca-service:latest
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/auth-service:latest
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/monitor:latest
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/gateway:latest
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/registry:latest
docker push ccr.ccs.tencentyun.com/spring-boot-cloud/config:latest
执行 Kubernetes 部署文件 k8s.yaml
,完成整个项目的部署。
6. 安装 SkyWalking
部署 SkyWalking OAP Server 和 UI: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: skywalking-oap-server spec: replicas: 1 selector: matchLabels: app: skywalking-oap-server template: metadata: labels: app: skywalking-oap-server spec: containers: - image: apache/skywalking-oap-server:latest imagePullPolicy: IfNotPresent name: skywalking-oap-server ports: - containerPort: 11800 name: grpc - containerPort: 12800 name: rest
apiVersion: v1
kind: Service
metadata:
name: skywalking-oap-server
spec:
ports:
- name: grpcporst
nodePort: 31800
port: 11800
protocol: TCP
targetPort: 11800
- name: restport
nodePort: 32100
port: 12800
protocol: TCP
targetPort: 12800
selector:
app: skywalking-oap-server
type: NodePort
部署 SkyWalking UI:
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: skywalking-ui
labels:
app: skywalking-ui
spec:
replicas: 1
selector:
matchLabels:
app: skywalking-ui
template:
metadata:
labels:
app: skywalking-ui
spec:
containers:
- name: skywalking-ui
image: apache/skywalking-ui:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
name: httpport
env:
- name: SW_OAP_ADDRESS
value: skywalking-oap-server:12800
apiVersion: v1 kind: Service metadata: name: skywalking-ui labels: service: skywalking-ui spec: ports: - port: 8080 name: httpport targetPort: 8080 type: ClusterIP selector: app: skywalking-ui
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: skywalking-ui spec: rules: - host: skywalking-ui.springcloud.com http: paths: - backend: serviceName: skywalking-ui servicePort: 8080 ``` 通过以上步骤,您可以成功部署并运行基于 Spring Cloud 的微服务架构项目。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】