一个前后端分离的管理系统(后续计划做一套中后台业务系统,此项目仅为后台管理系统),后端使用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依赖版本管理
身份认证主要依靠Json Web Token,以登录流程为例
访问鉴权目前是依赖数据库来做的,将定义好的规则在项目初始化时加载进redis,后续每个api则根据规则进行鉴权,仅适用于后台管理系统。
比较简单的是在nginx服务器中,监听同一个域名和端口,不同路径转发到客户端和服务器,把不同端口和域名的限制通过反向代理来做跨域。
当然也可以通过springMvc,自己实现过滤器,或者继承WebMvcConfigurerAdapter或者实现WebMvcConfigurer接口等方式
系统日志均在 /applog/{appName}目录中,使用filebeat扫描指定目录,读取所有日志文件,将其发送至elasticSearch,使用kibana展示(这个我只在本地做过,服务器实在是承受不住)
常用方案有两种,1.skywalking全链路追踪;
2.根据MDC的特性自定义traceId并依次想下游服务传递。本项目是使用的skywalking。
提供了TracedThreadPoolExecutor ,TracedThreadPoolTaskExecutor 和 MDCThreadPoolExecutor
apm-toolkit-logback-1.x有轮子
......
* 注册中心需自行搭建,调整各个服务中的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存放静态文件并做反向代理,所有请求转发到网关处
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。