“马上好医”项目白皮书
一、大型医疗挂号微服务“马上好医”医疗项目
“马上好医”即为网上医疗预约挂号系统,首先,由于互联网的发展,衍生出非常多的便民医疗服务的需求,而网上预约挂号则是其中一个便民需求,我们能够通过网上预约挂号服务,随时随地查询医院是否有号,让患者不一定要去到医院就可以提前进行挂号服务,提前就可以选择医生,并且网上预约挂号系统从技术实现上不难,可以让各位学员以最精简的业务理解微服务项目的业务以及清楚为什么需要微服务架构设计。
二、架构设计中可能需要考虑到的问题
性能:主要考虑访问频率,每个用户每天的访问次数。项目初始阶段用户的访问量并不大,如果考虑做运营推广,可能会迎来服务器访问量骤增,因此要考虑分布式部署,引入缓存
可扩展性:系统功能会随着用户量的增加以及多变的互联网用户需求不断地扩展,因此考虑到系统的可扩展性的要求需要使用微服务架构,引入消息中间件
高可用:系统一旦宕机,将会带来不可挽回的损失,因此必须做负载均衡,甚至是异地多活这类复杂的方案。如果数据丢失,修复将会非常麻烦,只能靠人工逐条修复,这个很难接受,因此需要考虑存储高可靠。我们需要考虑多种异常情况:机器故障、机房故障,针对机器故障,我们需要设计 MySQL 同机房主备方案;针对机房故障,我们需要设计 MySQL 跨机房同步方案。
安全性:系统的信息有一定的隐私性,例如用户的个人身份信息,不包含强隐私(例如玉照、情感)的信息,因此使用账号密码管理、数据库访问权限控制即可。
成本:视频类网站的主要成本在于服务器成本、流量成本、存储成本、流媒体研发成本,中小型公司可以考虑使用云服务器和云服务。
三、内容介绍
由于项目是医疗挂号项目,所以对于一致性的要求比可用性要求高很多,所以整个项目的体系会采用Spring Cloud Alibaba体系,而非奈飞体系,因为阿里体系的项目比较在考虑一致性的情况下还会考虑可用性,并且组件方面整体采用偏向阿里体系组件,因为兼容性会比较好一点。并且项目重点在于微服务架构风格。
四、业务流程
五、技术架构图
六、业务架构图
七、网络拓扑图
九、开发环境以及操作
一、前置知识体系
Java基础、HTML、CSS、JavaScript、Spring、MyBatis、SpringBoot、Spring Cloud Alibaba、MySQL、Redis、RocketMQ、nginx、idea、maven、VMWare 虚拟机、CentOS7.X 操作系统、架构设计基础
二、技术栈
1、后端
- SpringBoot 2.6.0.RELEASE
- SpringCloud Hoxton.SR8:微服务基础设施 - 服务注册、服务发现、服务熔断、微服务网关、配置中心等
- SpringCloud Alibaba 2.2.2.RELEASE
- MyBatis Plus:持久层框架和代码生成器
- Lombok:简化实体类开发
- Swagger2:Api接口文档生成工具/apidoc,这个还没定下来
- Logback:日志系统
- Spring Data Redis:Spring项目中访问Redis缓存 / 项目中会对于Redis的使用进行再封装
- OpenFegin: 基于Http协议的客户端,用来实现远程调用
- xxl-job2.2.0:定时任务
2、数据库和中间件
- MySQL 5.7:关系型数据库
- 管理工具:Navicat
- Redis 6.0:缓存技术
- 管理工具:RedisDesktopManager
- RocketMQ 4.7.0:消息中间件
3、三方接口
- 阿里云短信:短信网关 (可能会更新为华为云)
- 阿里云OSS:分布式文件存储 (可能会更新为华为云)
4、前端
- Node.js: JavaScript 运行环境
- ES6:JavaScript的模块化版本
- axios:一个发送Ajax请求的工具
- Vue.js:web 界面的渐进式框架
- Element-UI:前端组件库
- 模块化开发:解决javascript变量全局空间污染的问题
- NPM:模块资源管理器
- vue-element-admin:基于Vue.js的后台管理系统UI集成方案
- NuxtJS:基于Vue.js构建的服务器端渲染应用的轻量级框架