Coder Social home page Coder Social logo

danvol / best-cloud Goto Github PK

View Code? Open in Web Editor NEW

This project forked from shanzhaozhen/best-cloud

0.0 0.0 0.0 1.01 MB

实现一套Java的微服务(Spring Cloud)开发模板

License: Apache License 2.0

Java 61.15% Dockerfile 0.38% JavaScript 0.89% TypeScript 33.82% Less 1.41% EJS 1.52% HTML 0.82%

best-cloud's Introduction

Best Cloud

介绍

这个一个基础架构项目,以目前最新的技术栈输出最好的示例,以实现拿来即用的开发框架脚手架。项目结构主要采用微服务 Spring Cloud 系的技术栈实现,是一个非常好用的轮子,欢迎大家指错,一起进步。

没条件搞服务器都挂了

功能实现

实现功能 是否已实现
Spring Cloud 微服务化
整合 Oauth2.1
增加 Password 认证方式
Oauth2 加入JWT增强
RBAC 动态权限管理
动态分配菜单 -
整合服务熔断 Sentinel -
openapi文档查看、导出
实现分布式定时任务 -
加入分布式事务 -
引入分布式存储 MinIO -
加入 Oauth2 实现第三方登陆 -
加入Dockerfile直接打包部署到服务器 -

微服务组件选型

组件功能 组件
服务发现 Nacos
配置中心 Nacos
服务熔断 Sentinel
分布式事务 Seata
消息队列 RocketMQ

版本说明

Spring Cloud Alibaba 版本说明

相关技术

该项目使用的相关技术/工具主要有:

  • Spring Cloud / Spring Cloud Alibaba
  • Spring Boot
  • Spring Security
  • Oauth2
  • JWT
  • React
  • Typescript & ES6
  • Redis
  • openapi
  • Docker

版本要求

  1. JDK 1.8
  2. Gradle 7.0+
  3. Node.JS 16.x.x

项目路径

best-cloud -- 父项目,各模块分离,方便集成和微服务
│  ├─common -- 核心通用模块,主模块
│  │  ├─common-core -- 封装通用模块
│  │  ├─common-mybatis -- 封装 mybatis 配置模块
│  │  ├─common-redis -- 封装 redis 配置模块
│  │  ├─common-web -- 封装 web 常用基础模块
│  │─gateway -- 统一网关模块 [8088]
│  │─authorize -- 统一认证中心模块 [9000]
│  │─uaa -- 系统用户管理模块,主模块
│  │  ├─uaa-api -- 系统用户管理的通用模块,供其他模块引用
│  │  ├─uaa-biz -- 系统用户管理模块核心功能 [9500]
│  │─client -- 前端项目

建表语句

基础服务建表语句: 在sql文件夹下

oauth2授权信息持久化建表: https://github.com/spring-projects/spring-security-oauth/blob/master/spring-security-oauth2/src/test/resources/schema.sql

生成密钥库jwt.jks

keytool -genkey -alias best-cloud -keyalg RSA -keypass 123456 -storepass 123456 -keystore jwt.jks

# genkey 生成密钥
# alias 别名
# keyalg 密钥算法
# keypass 密钥口令
# keystore 生成密钥库的存储路径和名称
# storepass 密钥库口令

环境要求

执行指南

1. 启动 Nacos (详细文档)

  1. 下载/更新源码或下载发行包,详细点击查看

    1. 直接下载:Nacos Server 下载页
    2. 源码构建:进入 Nacos Github 项目页面 ,将代码 git clone 到本地自行编译打包,参考此文档
  2. 启动Nacos

Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式): sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行: bash startup.sh -m standalone

Windows 启动命令(standalone代表着单机模式运行,非集群模式): startup.cmd -m standalone

  • Docker 启动
mkdir -p /home/nacos/logs/                      #新建logs目录
mkdir -p /home/nacos/init.d/
vim /home/nacos/init.d/custom.properties        #修改配置文件

git clone https://github.com/nacos-group/nacos-docker.git
cd nacos-docker

# 单机模式 Derby
docker-compose -f example/standalone-derby.yaml up

# 如果希望使用MySQL5.7
docker-compose -f example/standalone-mysql-5.7.yaml up

# 如果希望使用MySQL8
docker-compose -f example/standalone-mysql-8.yaml up

# 集群模式
docker-compose -f example/cluster-hostname.yaml up 

docker run -d \
  --restart=always \
  --name nacos-standalone \
  -e MODE=standalone \
  -p 8848:8848 \
  nacos/nacos-server:latest
  • K8S
git clone https://github.com/nacos-group/nacos-k8s.git

2. 启动 Sentinel (详细文档)

  1. 首先需要获取 Sentinel 控制台,支持直接下载和源码构建两种方式。

    1. 直接下载:下载 Sentinel 控制台
    2. 源码构建:进入 Sentinel Github 项目页面 ,将代码 git clone 到本地自行编译打包,参考此文档
  2. 启动控制台,执行 Java 命令 java -jar sentinel-dashboard.jar完成 Sentinel 控制台的启动。 控制台默认的监听端口为 8080。Sentinel 控制台使用 Spring Boot 编程模型开发,如果需要指定其他端口,请使用 Spring Boot 容器配置的标准方式,详情请参考 Spring Boot 文档

  • Docker 启动

    Sentinel 没有官方的镜像,所以使用Dockerfile构建镜像(请看路径/middleware/sentinel)

    docker run \
      --name sentinel \
      -p 18080:18080 \
      -d sentinel-dashboard:1.8.0

启动分布式存储 MinIO

# 创建一个存储的文件夹进行映射,我这里的环境是使用虚拟机,直接用硬盘映射到虚拟机测试
# 默认账号密码:minioadmin:minioadmin
docker run \
    -p 9000:9000 \
    -p 33909:33909 \
    -v /root/minio-docker/data:/data \
    -v /root/minio-docker/config:/root/.minio \
    -d minio/minio server /data \
    --console-address ":33909"

RSA证书

# 生成RSA证书
# -genkey 生成密钥
# -alias 别名
# -keyalg 密钥算法
# -keypass 密钥口令
# -keystore 生成密钥库的存储路径和名称
# -storepass 密钥库口令

keytool -genkey -alias jwt -keyalg RSA -keystore jwt.jks

keytool -genkey -alias <alias> -keyalg RSA -keypass <keypass> -keystore <filename>.jks -storepass <storepass>

best-cloud's People

Contributors

shanzhaozhen 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.