Bonelf
├── bonelf-frame -- 运维中心
├ ├── bonelf-base -- 通用配置
├ ├── bonelf-web -- web服务通用配置
├ ├── bonelf-mq -- mq配置
├ ├── bonelf-cloud -- 微服务配置
├ ├── bonelf-gateway -- 网关通用配置
├ ├── bonelf-core -- 核心功能
├ ├── bonelf-cicada -- 私用工具
├ ├── bonelf-support -- 通用工具服务
├ ├ ├── bonelf-support-fegin --
├ ├ ├── bonelf-support-fegin-domain --
├ ├ ├── bonelf-support-provider --
├ ├ ├── bonelf-support-main --
├── bonelf-gateway -- 网关
├ ├── bonelf-gateway-main -- 网关逻辑
├ ├── bonelf-gateway-app -- 启动模块
├── bonelf-support-app -- 工具服务启动模块
├── bonelf-auth -- 授权服务提供
├── bonelf-service-user -- 用户模块
├── bonelf-service-demo -- demo服务
├ ├── bonelf-demo-feign -- 提供feign发送方法 (可选)
├ ├── bonelf-demo-feign-domain -- feign 参数
├ ├── bonelf-demo-main -- 服务
└── └── bonelf-demo-app -- 启动模块 (web)
模块 | 名称 | 端口 | |
---|---|---|---|
bonelf-common |
公用模块 | ||
bonelf-gateway |
网关 | HTTP 9999 | |
bonelf-support-app |
Netty Websocket服务、定时器等 | HTTP 8800 & WS 8802 | |
bonelf-auth |
鉴权服务 | HTTP 8809 | 接口文档 |
bonelf-service-order |
订单服务 | HTTP 8801 | 接口文档 |
bonelf-service-pay |
支付服务 | HTTP 8806 | 接口文档 |
bonelf-service-product |
商品服务 | HTTP 8803 | 接口文档 |
bonelf-service-promotion |
营销服务 | HTTP 8805 | 接口文档 |
bonelf-service-search |
搜索服务 | HTTP 8807 | 接口文档 |
bonelf-service-system |
管理系统服务 | HTTP 8808 | 接口文档 |
bonelf-service-user |
用户服务 | HTTP 8804 | 接口文档 |
bonelf-service-test |
测试服务 | HTTP 8080 | 接口文档 |
Q:关于为什么不把实体类和VO拆分出单独的模块从而避免模块间Feign请求需要再建实体接受的问题:
A:抽离出来确实不用再担心解耦在调用时出现因为实体类不一致导致的无法解析,导致接口调用失败。但我个人认为既然使用了微服务,那么各模块之间应尽可能避免耦合,各模块用各模块需要的实体,不应同意实体。
Q:关于项目细分的问题:
A:
1.普通项目细分为config、service、web、domain、dao;作用:多项目互相调用只需要引用需要的包
2.微服务再细分feign接口、consumer(mq)、provider(mq)、resource(oauth)、具体项目;作用:主要是多微服务项目知道项目的feign、producer接口,主要功能在web包中
下载地址: 点击下载ZIP(镜像)
先将/conf 中的nacos-mysql.sql添加到自己项目的数据库中并修改application.properties 31行(Config Module Related Configurations)的配置
Windows启动:切换到/bin目录 -> .\startup.cmd -m standalone
Jeecg-boot、ruoyi-cloud、Guns、litemall、best-pay
jenkins 部署 springcloud(DockerFile/docker-compose.yml-docker方式)
mybatis-plus 分页可能与seata不兼容;增加 start、end 的传参方式
数据库异常封装,controller封装
处理文件上传 aop or 拦截器,处理后返回url填充入对应表单字段中,这样controller只需要处理保存链接地址即可
RocketMQ(应用订单服务通知商品修改销售数目、定时器发送消息,其他服务处理)
点击量排序问题(需rocketmq)
销售量排序问题(需rocketmq)
微信支付宝 支付、退款
库存问题
规格问题(下单)
经纬度排序问题
三方登录
二维码登录
zipkin 监控 压力测试
grafana 度量分析和可视化工具
Kafka 分布式日志(MQ)(新建项目熟悉)
接口耗时aop (只能适用标准的请求-Controller结尾的,例如Oauth等不符合定义的没等统一配置)
基本微服务框架功能配置(swagger、多数据源、druid、nacos、feign、redis、mybatisplus、消息转化器、异常处理advice、spring cache使用redis实现等)
quartz数据库定时器
数据库字典、枚举字典注解
文件上传至服务器、OSS(七牛云一般前端传,后端维护refreshToken)
swagger-ui 微服务下整合
小程序、账号密码登录
文件上传
规格问题(增删改查)
空字符串转null 注解(并没有实现注解,而是全局设置)
OAuth2
string 替换文本注解
支持表情注解(valid)
过滤表情 过滤HTML表情(XSS)注解方式实现
加密传输注解
枚举校验注解(valid clazz or enum value)
验证码 图形验证码
二维码
RocketMQ 实现 redis websocket发布订阅
Websocket:stomp netty origin
更换为标准的Aibaba架构,备份后改用Dubbo、sentinel、streamer
sentinel 流量控制
minio 对象存储
seata 分布式事务中间件
elasticsearch 搜索服务 (elk)
单点项目版本(分离auth服务 类似support)
maven一键部署、使用docker部署(depoly)
断点续传、秒传
flowable 工作流(简单封装)
查询条件装配、分页参数适配
liquibase 数据库表版本更新
继承Webserver是否可以替换springboot的web服务?
CAS单点登录(使用OAuth2.0解决、SpringSecurity也有支持CAS)
shiro (不支持分布式,替换成OAuth2)