首发博客地址

https://blog.zysicyj.top/

先大抵列一下根底状况

  • 架构必须是微服务
  • 场景上波及大量查问操作,剖析操作
  • 并发并不高
  • 对高可用要求较高,不能挂掉
  • 对平安要求高
  • 要能过等保测试等三方测试
  • 应用人数并不多,十万内
  • 波及很多在线编辑,预览等操作
  • 对大屏展现有需要
  • 数据库还不确定,如果要求高的话mysql必须换成达梦
  • 中间件也不确定,要求高的话必须换成西方通
  • 加密必须是国密

前言

好的代码,必定最根本的有一套开发标准去束缚的,不然堆砌的代码必定成”屎山“。扩展性,性能啥的先不谈,单单保护代码老本就会很高,也很容易出BUG。

所以呀,咱们必须先有一套开发标准,我这里拟了一套标准供外部应用:

  1. MySQL开发标准
  2. 后盾开发标准
  3. [前端开发标准]()
  4. [代码提交标准]()
  5. {% pdf /static/pdf/Java开发手册(黄山版).pdf %}

架构

这里微服务框架我举荐间接应用Spring Cloud Alibaba体系组件,起因如下:

  1. spring cloud alibaba 曾经是国内实际上微服务规范
  2. 服务于阿里团体大大小小各种业务,生产应用稳固
  3. 社区宏大,遇到问题容易解决
  4. 文档齐全,中文文档具体,不便查阅
  5. 与Spring Cloud集成,能够充沛应用Spring Cloud个性
  6. 组件丰盛

聊聊组件选型

那么,具体咱们须要哪些组件呢?这里的组件并不是必须的,须要后续综合思考

  1. ES:数据检索
  2. redis:缓存
  3. jetcache:多级缓存
  4. MySQL,如果有国产化需要,思考达梦数据库
  5. Druid:数据源治理框架
  6. ShardingSquare:对数据库进行加强,比方分库分表,加密的反对
  7. minio:文件存储
  8. Seata:分布式事务
  9. Spring Cloud Gateway:因为并发量并不大,所有咱们能够不须要Nginx网关
  10. Sentinel: 熔断限流
  11. Spring Cloud Alibaba Sidecar:我的项目中很有可能波及其余非Spring Cloud利用,此时就须要将其接入Spring Cloud
  12. 引入GraalVM
    ,能够看到,比照JVM启动速度晋升
  13. jimureport+easyexcel:报表设计
  14. KkFileView:在线预览各种文件
  15. Activity:工作流反对
  16. Hutool:最全工具类库
  17. Nacos:服务注册和配置核心
  18. RocketMQ:音讯队列,削峰填谷
  19. Docker:应用Docker进行容器化部署
  20. Gitlab:源码治理
  21. nexus:构建仓库
  22. Jenkins:部署平台
  23. SkyWalking:链路追踪
  24. SaToken或SpringCloudSecurity+Oauth:受权
  25. Leaf:分布式ID生成器
  26. MybatisFlex:orm框架
  27. dubbo或Feign:服务间通信

一些细节

再次申明一点,业务上是读多写少,剖析报表多,所以很多设计上要优化

  • MySQL:读写拆散,分库分表
  • Redis:主从从架构,哨兵集群
  • 我的项目应用多级缓存
  • 数据国密加密
  • 账号最小权限调配,严格限度超级管理员账号
  • 对立线程池应用

打任务量导入导出

  • 通过优化线程池提高效率
  • 通过逻辑过滤反复工作
  • 应用音讯队列削峰
  • 应用缓存优化查问速度

查问流程

  1. 客户端发送申请
  2. 前端申请加密
  3. 申请发送到网关
  4. 网关校验申请合法性
  5. 网关依据路由规定转发到具体的服务器上解决
  6. 服务器解密申请数据
  7. 查问本地缓存
  8. 若无则查问Redis
  9. 若无则进行业务流转,最终查问MySQL,
  10. 依据路由规定,查问只读MySQL节点并返回数据
  11. 数据本地缓存,而后Redis缓存
  12. 返回响应数据
  13. 对响应加密,转发到网关
  14. 网关转发给客户端
  15. 客户端解密,展现数据

部署流程

开发环境

  1. 开发提交代码
  2. 基于Gitlab CI/CD 主动拉取代码生成Docker镜像并提供服务

测试环境

  1. 合并代码到测试分支
  2. 基于Gitlab CI/CD 主动拉取代码生成Docker镜像并提供服务

生产环境

  1. 合并代码到生产分支
  2. 基于Gitlab,手动用Jenkins部署我的项目

具体部署策略

如果中台能提供,那必定是最好的。。。不必思考那么多了

具体还要依据业务和理论状况来,这里以5台服务器为例:

很多组件都很吃内存。。

服务ABCDE
Redis
Mysql
Nacos
Seata
Leaf
业务业务业务
ES
Zookeeper
Minio
KkFile
Gateway
RocketMq
SkyWalking
Jenkins
Gitlab
Nexus
Docker

本文由mdnice多平台公布