第二节系统设计
1. 技术选型
服务器:Centos8.0
数据库:MySQL8.0
NoSQL数据库:MongoDB
开发语言:JavaScript、TypeScript、C#、Lua
前端框架:Vue3+VueRouter+Vuex+Element Plus
后端框架:Core Mvc 6.0
缓存框架:Redis6.0
消息队列:RabbitMq
负载均衡:Nginx
配置中心:Consul
消息总线:Cap
测试工具:Jmeter
身份认证和授权:IdentityServer4+Oauth
熔断限流:Polly
网关:Ocelot+BFF
分布式日志:ELK
开发测试运维:DevOps+CI/CD+Git
容器化应用基础结构:Linux+Docker+k8s
其它基础设施:AutoFac、AutoMapper、MediatR、Hangfrie、SignalR、HealthChecks、WebHooks、多语言切换国际化与本地化、自动化测试、通用验证FluentValidation。
…
2. 技术架构

3. 系统架构图

4. 安全策略
根据应急预案框架制定不同事件的应急预案(如针对服务器、系统、网络等各个层面)。
4.1 数据库安全
(1) redis采用RDB和AOF混合持久化方案,冷备热备同时上,RDB中bgsave做全量持久化,AOF做增量持久化,在redis重启的时候,
使用rdb持久化的文件重新构建内存,再使用aof恢复最近操作数据,从而实现完整的服务到重启之前的状态
(2)缓存采用redis cluster模式,它是由多个主从节点群组成的分布式服务集群,它具有复制、高可用和分片特性,并且多个master平行节点,
分摊了写的压力,且无论是master还是slave水平都可以扩展很多。
(3)MySQL采用主从架构,且数据库服务器与外网隔离,仅与业务服务器通信。
(4) MySQL定时备份策略,每天做一次增量备份,每周做一次全量备份,从而防止数据丢失问题。
4.2 系统安全
(1)系统防爆破设置,限制非法登录尝试次数,超尝试次数后实现锁定策略。
(2)黑名单机制,当某个接口短时间被大量请求,会自动熔断,并将请求ip加入黑名单
(3) 接口访问加密,访问接口需要授权获得票据,请求接口时,会根据票据进行验证,票据过期,会执行刷新机制,票据错误,则请求失败。
(4)数据加密,针对船员的关键信息,比如账户号、身份证号、联系方式等,采用非对称加密的方式,将加密后的结果存储到数据库里。
(5)配置用户私钥,链接字符串使用机密文件,使用管理员权限将配置文件存入到加密区。
(6)详细的操作日志,并定期开展日志复核工作。