/bonelf

个人开发项目总结:包含技术栈:nacos、swagger、mybatis多数据源、druid、hystrix、feign、redis、mybatisplus、消息转化器、异常处理advice、spring cache使用redis实现等)(SpringBoot、Netty、redis发布订阅三者的websocket)、quartz、文件上传、swagger-ui、登录、OAuth2、验证码 图形验证码、二维码、rocketmq、elasticsearch等

Primary LanguageJava

bonelf 个人项目经验总结

介绍

项目结构

模块 名称 端口
cicada 工具包
bonelf-common 公用模块
bonelf-gateway 网关 HTTP 9999
bonelf-support Netty Websocket服务、定时器等 HTTP 8800 & WS 8802
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&A

Q:关于为什么不把实体类和VO拆分出单独的模块从而避免模块间Feign请求需要再建实体接受的问题:

A:抽离出来确实不用再担心解耦在调用时出现因为实体类不一致导致的无法解析,导致接口调用失败。但我个人认为既然使用了微服务,那么各模块之间应尽可能避免耦合,各模块用各模块需要的实体,不应同意实体。

Nacos

下载地址: 点击下载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

开发计划

更换为标准的Aibaba架构,备份后改用Dubbo、sentinel

完善开发到一半的功能

sentinel 流量控制

seata 分布式事务中间件

继承Webserver是否可以替换springboot的web服务?

三方登录

二维码登录

OAuth自动刷新token

支付对账、分账

maven一键部署、使用docker部署(depoly)

zipkin 监控 压力测试

grafana 度量分析和可视化工具

kibana 日志分析的 Web 接口

Kafka 分布式日志(MQ)

已完成

nacos基本微服务框架功能配置(swagger、多数据源、druid、hystrix、feign、redis、mybatisplus、消息转化器、异常处理advice、spring cache使用redis实现等)

SpringBoot、Netty、redis发布订阅三者的websocket

quartz数据库定时器

数据库字典、枚举字典注解

文件上传至服务器、OSS(七牛云一般前端传,后端维护refreshToken)

swagger-ui 微服务下整合

小程序、账号密码登录

文件上传

规格问题(增删改查)

空字符串转null 注解(并没有实现注解,而是全局设置)

OAuth2

string 替换文本注解

支持表情注解(valid)

过滤表情 过滤HTML表情(XSS)注解方式实现

加密传输注解

枚举校验注解(valid clazz or enum value)

验证码 图形验证码

二维码

RocketMQ(应用订单服务通知商品修改销售数目、定时器发送消息,其他服务处理)

RocketMQ 实现 redis websocket发布订阅

点击量排序问题(需rocketmq)

销售量排序问题(需rocketmq)

开发到一半(点到为止)

微信支付宝 支付、退款

库存问题

规格问题(下单)

经纬度排序问题

搜索服务elasticsearch

放弃

CAS单点登录(使用OAuth2.0解决)

shiro (不支持分布式,替换成OAuth2)