JAVA微服务部署

Springboot 和 SpringCloud

SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

Spring Boot是整合了框架的框架,它让一切依赖都变得有序简单,你不用操心A.jar是什么版本,又依赖哪些版本的jar,它默认配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架,第三方库的功能你拿着就能用。

Spring Cloud是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯、熔断、监控等。因此就需要很多的组件来支持一套功能。

java微服务架构图.png

Spring Cloud中文网-官方文档中文版

名词解释


docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard

# sentinel sentinel

docker run -d -p 8848:8848 --env MODE=standalone  --name nacos  nacos/nacos-server

# nacos nacos

# 分布式事务
docker run --name seata-server \
        -p 8091:8091 \
        -e SEATA_IP=192.168.80.80 \
        -e SEATA_PORT=8091 \
        seataio/seata-server

# sentinel
docker run --name sentinel -d -p 8858:8858 -d bladex/sentinel-dashboard

每个服务打成jar包 配置文件中写指定字符串 通过hosts进行解析 比如redis-server 192.168.80.80

PiggyMetrics 地址:https://github.com/sqshq/piggymetrics

分布式电商项目 地址:https://github.com/SiGuiyang/spring-cloud-shop

轻松阅读微服务项目 api:https://github.com/Zealon159/light-reading-cloud

SpringBlade 微服务开发平台 地址:https://gitee.com/smallc/SpringBlade

Cloud-Platform 地址:https://gitee.com/geek_qi/cloud-platform

互联网云快速开发框架 地址:https://gitee.com/JeeHuangBingGui/jeeSpringCloud

所有服务调用注册中心 通过注册中心 写入配置文件

将所有的配置文件写入数据库 nacos通过数据库获取数据

java -jar blade-gateway.jar  --spring.profiles.active=dev --spring.cloud.nacos.config.server-addr=192.168.80.80:8848 --spring.cloud.nacos.discovery.server-addr=192.168.80.80:8848 --spring.cloud.sentinel.transport.dashboard=192.168.80.80:8858 --Xmx2048m --Xms2048m

部署 blade-admin

服务

部署规则 2台部署

81.144

  • blade-admin
  • blade-auth
  • blade-desk
  • blade-develop
  • blade-log
  • blade-report
  • blade-resource
  • blade-system
  • blade-user
  • blade-gateway
nohup java -jar blade-log.jar  --spring.profiles.active=dev --spring.cloud.nacos.config.server-addr=192.168.80.80:8848 --spring.cloud.nacos.discovery.server-addr=192.168.80.80:8848 --spring.cloud.sentinel.transport.dashboard=192.168.80.80:8858 --Xmx2048m --Xms2048m &
nohup java -jar blade-report.jar  --spring.profiles.active=dev --spring.cloud.nacos.config.server-addr=192.168.80.80:8848 --spring.cloud.nacos.discovery.server-addr=192.168.80.80:8848 --spring.cloud.sentinel.transport.dashboard=192.168.80.80:8858 --Xmx2048m --Xms2048m &
nohup java -jar blade-resource.jar  --spring.profiles.active=dev --spring.cloud.nacos.config.server-addr=192.168.80.80:8848 --spring.cloud.nacos.discovery.server-addr=192.168.80.80:8848 --spring.cloud.sentinel.transport.dashboard=192.168.80.80:8858 --Xmx2048m --Xms2048m &
nohup java -jar blade-system.jar  --spring.profiles.active=dev --spring.cloud.nacos.config.server-addr=192.168.80.80:8848 --spring.cloud.nacos.discovery.server-addr=192.168.80.80:8848 --spring.cloud.sentinel.transport.dashboard=192.168.80.80:8858 --Xmx2048m --Xms2048m &
nohup java -jar blade-user.jar  --spring.profiles.active=dev --spring.cloud.nacos.config.server-addr=192.168.80.80:8848 --spring.cloud.nacos.discovery.server-addr=192.168.80.80:8848 --spring.cloud.sentinel.transport.dashboard=192.168.80.80:8858 --Xmx2048m --Xms2048m &
nohup java -jar blade-swagger.jar  --spring.profiles.active=dev --spring.cloud.nacos.config.server-addr=192.168.80.80:8848 --spring.cloud.nacos.discovery.server-addr=192.168.80.80:8848 --spring.cloud.sentinel.transport.dashboard=192.168.80.80:8858 --Xmx2048m --Xms2048m &

容器化部署 docker-compose

设置环境变量

version: '3'
services:
  blade-admin:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:admin1.0"
    ports:
    - 7002:7002
    privileged: true
    restart: always

  blade-swagger:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:swagger1.0"
    ports:
      - 18000:18000
    privileged: true
    restart: always

  blade-gateway1:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:gateway1.0"
    ports:
      - 80:80
    privileged: true
    restart: always

  blade-auth1:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:auth1.0"
    ports:
      - 8010:8010    
    privileged: true
    restart: always

  blade-report:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:report1.0"
    ports:
      - 8108:8108
    privileged: true
    restart: always

  blade-log:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:log1.0"
    ports:
      - 8103:8103
    privileged: true
    restart: always

  blade-desk:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:desk1.0"
    ports:
      - 8105:8105
    privileged: true
    restart: always

  blade-user:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:user1.0"
    ports:
      - 8102:8102
    privileged: true
    restart: always

  blade-system:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:system1.0"
    ports:
      - 8106:8106    
    privileged: true
    restart: always

  blade-resource:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:resource1.0"
    privileged: true
    restart: always

  blade-develop:
    image: "registry.cn-shanghai.aliyuncs.com/sunzhe/blade:develop1.0"
    ports:
      - 7007:7007
    privileged: true
    restart: always

K8S部署

  1. 创建imagepull
kubectl create secret docker-registry aliyun-secret \
  --docker-server=registry.cn-shanghai.aliyuncs.com \
  --docker-username=hcmvnxnv \
  --docker-password=Xa88215985 \
  --docker-email=luxsun_chat@163.com
  1. 创建configmap
kubectl create configmap special-config --from-literal=special.nacos=192.168.80.80:8848 --from-literal=special.sentinel=192.168.80.80:8858
  1. 创建k8s配置文件
# -*- coding:utf-8 -*-
#
# File: c:\Users\developistrator\Desktop\SpringBlade-master\SpringBlade-master\blade-service\blade-user\blade-develop.yaml
# Project: c:\Users\developistrator\Desktop\SpringBlade-master\SpringBlade-master\blade-service\blade-user
# Created Date: 2021-08-02  4:53:24
# Author: sunzhe
# -----
# Last Modified: Mon Aug 02 2021
# Modified By: sunzhe
# -----
# Copyright (c) 2021 Weaver
# ------------------------------------
# Yaml will save your soul!
#
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: blade-develop
  name: blade-develop
spec:
  replicas: 3
  selector:
    matchLabels:
      app.kubernetes.io/name: blade-develop
  template:
    metadata:
      labels:
        app.kubernetes.io/name: blade-develop
    spec:
      containers:
      - image: registry.cn-shanghai.aliyuncs.com/sunzhe/blade:develop1.0
        name: blade-develop
        env: 
        - name: NACOS_SERVER_ADDR
          valueFrom:
            configMapKeyRef:
              # The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEY
              name: special-config
              # Specify the key associated with the value
              key: special.nacos
        - name: SENTINEL_DASHBOARD_ADDR
          valueFrom:
            configMapKeyRef:
              # The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEY
              name: special-config
              # Specify the key associated with the value
              key: special.sentinel              
        ports:
        - containerPort: 7007
      imagePullSecrets:
        - name: aliyun-secret

---
apiVersion: v1
kind: Service
metadata:
  name: blade-develop
  namespace: default
  labels:
    app: blade-develop
spec:
  ports:
    - port: 7007
      targetPort: 7007
      # nodePort: 7002
  selector:
    app: blade-develop
  type: NodePort

单主机安装

参考资料:

Spring Cloud 入门总结