2 Star 14 Fork 5

zh/springcloud-groupon

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
zh reload 16543cd 4年前
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

springcloud-groupon

介绍

一个前后端分离的管理系统(后续计划做一套中后台业务系统,此项目仅为后台管理系统),后端使用SpringBoot2.1,SpringCloud,结合Mybatis,Nacos,Redis,Kafka,rocketmq等常用组件。 前端采用React,Redux,Ant design构建的单页应用。前端只做了登录,用户管理,角色管理,动态菜单等基础模块。

设计初衷

设计此项目是为了进一步学习目前微服务常用技术栈。从项目实战深入Spring Cloud 各个微服务的解决方案

架构图

项目结构

springcloud-groupon
├── groupon-common        公用模块以及自定义starter
  ├── groupon-common-base   公共类,异常处理,工具类等
  ├── groupon-common-log    日志收集与处理,可自行扩展
  ├── groupon-common-mybatis  如mybatis枚举处理,拦截器等
  ├── groupon-common-redis   集成redis与redisson,提供分布式锁
  ├── groupon-common-rocketmq  基于rocketmq-client封装的
  ├── groupon-common-xxljob   基于xxl-job封装的
├── groupon-file-storage    文件服务,支持本地存储/sftp存储/fastdfs
├── groupon-admin        后台管理系统
  ├── groupon-admin-gateway
  ├── groupon-admin-system
  ├── web-client 后端管理平台演示项目,仅包含登录,角色/用户管理
└── groupon-parent       maven pom依赖版本管理

Q&A

  • 网关身份认证与鉴权

    身份认证主要依靠Json Web Token,以登录流程为例

    • 客户端调用登录接口,传入用户名密码,经过nginx后进入网关服务
    • 网关服务确认用户名密码正确后创建 JWT,返回给客户端。
    • 客户端拿到 JWT,进行存储(web浏览器存储在cookie中)在后续请求中,在 HTTP 请求头中加上 JWT。
    • 服务端校验 JWT,校验通过后返回相关资源和数据。如果token快过期,应制定相应的刷新策略。

    访问鉴权目前是依赖数据库来做的,将定义好的规则在项目初始化时加载进redis,后续每个api则根据规则进行鉴权,仅适用于后台管理系统。

  • 跨域

    比较简单的是在nginx服务器中,监听同一个域名和端口,不同路径转发到客户端和服务器,把不同端口和域名的限制通过反向代理来做跨域。
    当然也可以通过springMvc,自己实现过滤器,或者继承WebMvcConfigurerAdapter或者实现WebMvcConfigurer接口等方式

  • 日志收集

    系统日志均在 /applog/{appName}目录中,使用filebeat扫描指定目录,读取所有日志文件,将其发送至elasticSearch,使用kibana展示(这个我只在本地做过,服务器实在是承受不住)

  • 链路追踪

    常用方案有两种,1.skywalking全链路追踪;
    2.根据MDC的特性自定义traceId并依次想下游服务传递。本项目是使用的skywalking。

    线程池中使用traceId

    提供了TracedThreadPoolExecutorTracedThreadPoolTaskExecutorMDCThreadPoolExecutor

    logback中使用traceId

    apm-toolkit-logback-1.x有轮子

  • ......

TODO

  • 可引入knife4j进行swagger文档聚合
  • ......

本地运行

* 注册中心需自行搭建,调整各个服务中的bootstrap.yml文件,分别启动 admin-gateway,admin-system,如果需要debug可以访问 localhost:{port}/swagger-ui.html
* 前端  
  * 1.执行 yarn install 安装依赖  
  * 2.调整 webpack.dev.js 中的代理地址为后端网关地址
  * 3.执行 yarn start 运行项目

服务部署

1. 搭建各个服务的数据库服务,sql在各个模块doc中
2. 搭建nacos 注册中心服务,可集群部署
3. 搭建redis 中间件缓存服务,可集群部署
4. 搭建kafka/rocketmq 中间件队列服务(待定,kafka计划用来做业务日志/指标等监控)
5. 打包admin-* 项目,使用/doc/shell/start.sh启动jar包(如需skywalking,则需要搭建skywalking服务,脚本中可选择加入skywalking探针),可多实例部署
6. 在将web-client根目录执行 yarn build 打包,使用nginx存放静态文件并做反向代理,所有请求转发到网关处

空文件

简介

基于SpringCloud,React实现前后端分离的系统 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/sowho.github.io/springcloud-groupon.git
git@gitee.com:sowho.github.io/springcloud-groupon.git
sowho.github.io
springcloud-groupon
springcloud-groupon
develop

搜索帮助