littlebot
Published on 2025-04-08 / 2 Visits
0

【源码】基于 Spring Cloud 的微服务架构

项目简介

本项目是一个基于 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】