ChatGPT 可用网址,仅供交流学习使用,如对您有所帮助,请收藏并推荐给需要的朋友。
https://ckai.xyz
首发博客地址
先大致列一下基础情况
- 架构必须是微服务
- 场景上涉及大量查询操作,分析操作
- 并发并不高
- 对高可用要求较高,不能挂掉
- 对安全要求高
- 要能过等保测试等三方测试
- 使用人数并不多,十万内
- 涉及很多在线编辑,预览等操作
- 对大屏展示有需求
- 数据库还不确定,如果要求高的话mysql必须换成达梦
- 中间件也不确定,要求高的话必须换成东方通
- 加密必须是国密
前言
好的代码,肯定最基本的有一套开发规范去约束的,不然堆砌的代码肯定成”屎山“。扩展性,性能啥的先不谈,单单维护代码成本就会很高,也很容易出BUG。
所以呀,我们必须先有一套开发规范,我这里拟了一套规范供内部使用:
架构
这里微服务框架我推荐直接使用Spring Cloud Alibaba体系组件,原因如下:
- spring cloud alibaba 已经是国内实际上微服务标准
- 服务于阿里集团大大小小各种业务,生产使用稳定
- 社区庞大,遇到问题容易解决
- 文档齐全,中文文档详细,方便查阅
- 与Spring Cloud集成,可以充分使用Spring Cloud特性
- 组件丰富
聊聊组件选型
那么,具体我们需要哪些组件呢?这里的组件并不是必须的,需要后续综合考虑
- ES:数据检索
- redis:缓存
- jetcache:多级缓存
- MySQL,如果有国产化需求,考虑达梦数据库
- Druid:数据源管理框架
- ShardingSquare:对数据库进行增强,比如分库分表,加密的支持
- minio:文件存储
- Seata:分布式事务
- Spring Cloud Gateway:由于并发量并不大,所有我们可以不需要Nginx网关
- Sentinel: 熔断限流
- Spring Cloud Alibaba Sidecar:项目中很有可能涉及其他非Spring Cloud应用,此时就需要将其接入Spring Cloud
- 引入GraalVM
,可以看到,对比JVM启动速度提升 - jimureport+easyexcel:报表设计
- KkFileView:在线预览各种文件
- Activity:工作流支持
- Hutool:最全工具类库
- Nacos:服务注册和配置中心
- RocketMQ:消息队列,削峰填谷
- Docker:使用Docker进行容器化部署
- Gitlab:源码管理
- nexus:构建仓库
- Jenkins:部署平台
- SkyWalking:链路追踪
- SaToken或SpringCloudSecurity+Oauth:授权
- Leaf:分布式ID生成器
- MybatisFlex:orm框架
- dubbo或Feign:服务间通信
一些细节
再次声明一点,业务上是读多写少,分析报表多,所以很多设计上要优化
- MySQL:读写分离,分库分表
- Redis:主从从架构,哨兵集群
- 项目使用多级缓存
- 数据国密加密
- 账号最小权限分配,严格限制超级管理员账号
- 统一线程池使用
打任务量导入导出
- 通过优化线程池提高效率
- 通过逻辑过滤重复任务
- 使用消息队列削峰
- 使用缓存优化查询速度
查询流程
- 客户端发送请求
- 前端请求加密
- 请求发送到网关
- 网关校验请求合法性
- 网关根据路由规则转发到具体的服务器上处理
- 服务器解密请求数据
- 查询本地缓存
- 若无则查询Redis
- 若无则进行业务流转,最终查询MySQL,
- 根据路由规则,查询只读MySQL节点并返回数据
- 数据本地缓存,然后Redis缓存
- 返回响应数据
- 对响应加密,转发到网关
- 网关转发给客户端
- 客户端解密,展示数据
部署流程
开发环境
- 开发提交代码
- 基于Gitlab CI/CD 自动拉取代码生成Docker镜像并提供服务
测试环境
- 合并代码到测试分支
- 基于Gitlab CI/CD 自动拉取代码生成Docker镜像并提供服务
生产环境
- 合并代码到生产分支
- 基于Gitlab,手动用Jenkins部署项目
详细部署策略
如果中台能提供,那肯定是最好的。。。不用考虑那么多了
具体还要根据业务和实际情况来,这里以5台服务器为例:
很多组件都很吃内存。。
服务 | A | B | C | D | E | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Redis | 主 | 从 | 从 | ||||||||
Mysql | 从 | 主 | |||||||||
Nacos | 主 | ||||||||||
Seata | 主 | ||||||||||
Leaf | 主 | ||||||||||
业务 | 业务 | 业务 | |||||||||
ES | 从 | 主 | 从 | ||||||||
Zookeeper | 从 | 从 | 从 | ||||||||
Minio | 主 | ||||||||||
KkFile | 主 | ||||||||||
Gateway | 从 | 从 | |||||||||
RocketMq | 从 | 主 | 从 | ||||||||
SkyWalking | |||||||||||
Jenkins | |||||||||||
Gitlab | |||||||||||
Nexus | |||||||||||
Docker |
本文由mdnice多平台发布