项目总结
Contents
业务功能:
服务医疗器械销售团队做产品使用培训。同时附加功能,医疗行业大牛的直播授课解答、手术直播等医疗相关的直播,还有PDF、帖子等文字图片相关内容、合作医院的信息和名医等信息的展示。
程序功能:
前端网站展示,后端网站管理程序独立分开。另外还可以分为PC端展示、Mobile端网站展示和微信公众号推送等服务。
- 前端负责展示网站:
- 搜索引擎关键字搜索(ActiveMQ实现后端程序DML课件后同步搜索结果)
- JSP动态展示相关内容
- 直播视频厂商ifream引入、接口调用和回调
- 微信公众号的绑定、消息通知、简单的跳转导航等功能
- 论坛发帖和留言功能(ueditor)开源的
- nginx 反向代理、
- 后端程序管理网站:
- 内容的编辑管理、展示的设置
- https安全
- 权限管理
- 浏览量统计展示等相关
- 运维模块:
- 数据库的压缩备份 mysql xtrabackup
- 邮件功能每日更新网站运营数据
- 部署上线脚本 maven和tomcat启动脚本
- JNDI数据源
项目值得学习的地方
- solr-cloud + zookeeper
- JPA的优化,抽象实体类的BaseEntity
- 权限控制(spring security 和 数据库sql控制)
- 彻底吃透邮件功能(Done)
- hibernate 和mybatis的一对多功能
邮件功能
数据库服务器,启动定时任务:每天、每周一、每月1号晚上会通过shell脚本获取到新增用户数量,然后通过mailx服务邮件的形式发送到客户的邮箱,并且会插入到stastics表中去。
流程:
- 清空老的数据文本
- 查询以追加的形式获取到数据库的新增用户数量和总数量
- 直接更新stastics这张表
- 发送数据到配置文件当中的邮箱群里
大致流程就是:注册一个可以开通SMPT服务的邮箱,比如网易163邮箱,然后在linux上安装mailx服务,配置发件邮箱人,然后mailx 发送相关的标题,内容,附件、正文等信息。
微信公众号相关功能
功能:
- 活动报名成功、开始提醒、活动评价、活动根据订阅栏目的主动推送
- 用户微信绑定
- 栏目订阅和推送
- 网站手机端跳转
先要在对应的公众号管理网站,获取到对应的appID 和appsecret,来和应用程序交互的账号密码。
上传特定的template到微信管理后台,参数(openID、消息数据比如用户信息活动信息、templateID发送推送消息,还可以监控返回值是否发送成功,反复发送
项目可以升级的地方
- 操作日志记录功能
- 缓存功能
- GC日志开启,和分析,以及JDK垃圾回收器和内存分配优化
工作内容
- 日常维护(包括微信端公众号的功能维护)
- 新功能的开发(新模块PCB基层医疗、新的直播商:展示直播的引入包含网页嵌入、K值认证、参加统计)
- 服务器的维护和迁移(操作系统的版本、分区情况以及各种软件的重新配置),维护包括CPU和内存的性能监控、和更新病毒库和杀毒
- 项目结构优化:spring mvc扫描配置优化、GC日志开启和垃圾回收器类型优化
- 培训新人
网站front-end项目架构
后端框架:
- Spring(Bean管理和事务控制) 、MVC
- Mybatis:改进后引入mybatis-template、pagehelper、xml热加载
- JPA (简化了简单的新增、修改和简单查询、分页查询的功能)
前端框架:
- jquery、jstl
- BootStrap做table和表单控件、和页面的布局
- site-mesh做通用模板渲染,xml配置filter,然后通过请求url来匹配不同的模板
nginx相关
- upstream引入集群,支持千人以上同时观看直播活动的功能
- 动静分离,把图片资源、PDF资源放在特定的路径下,实现快速获取
- 反向代理:前端和后端公用域名,监听不同的端口。
- 实现测试环境的内网可访问、svn的控制。因为只有1台物理IP对外
- redis实现session共享
全文检索分布式
- web请求通过nginx按照不同的权重分配到6个solr里(其中90的权重低,93服务器5个solr权重高)
- 请求到了solr,solr会反馈到zookeeper中去读取配置,我们每个core做了3个shard,每个shard各做了一个主备
- zk会分配请求任务然后返回搜索结果给报告的solr,solr收到数据渲染界面
- 其中zk本身做了3台机器的集群(高可用且防脑裂)
- 实现3个shard每个分片各有一个主备,实现高可用的同时又可以快速的查询和更新索引
其他
- activeMQ:实现后台发布新的课件的时候,通知前端slor更新搜索索引
- 直播视频的引入:ifram嵌入第三方视频直播方、调用接口交互实现k值认证和与会信息的数据获取
- 定时任务:quarz,定时扫描活动,微信、短信通知相应的客户
- 微信公众号管理:订阅和绑定,获取关注公众号用户的openId推送活动通知和评价、以及订阅相关栏目功能
- linux crontab实现网站运营用户变化数据,mailx服务发送邮件到公司邮箱;脚本化发布测试环境和生产环境
- maven、svn
- mysql(Xtractbackup、慢查询日志)
简化配置
- loombok简化 set get方法和log功能、bean代码清爽
- JNDI数据源,方便在测试环境、生产环境下发布,一次配置,就不需要改动特别是数据库的IP地址
- tomcat部署脚本先copy老的配置文件,再解压替换配置文件,方便开发人员修改不需要在生产环境下开启的功能的配置,避免犯错
后端项目架构
Spring 、MVC、hibernateTemplate、ehcache(做sql级别的缓存)、sitemesh
##安全和权限管理
- 配置ssl实现https访问的功能
- 4台虚拟云主机,网站应用程序所在云主机有对外可访问IP,其他3台物理server只在4台云主机内可以访问
- spring-security实现大的角色的管理
- 数据库控制对应用户的modality授权、区域管理,展示归属该用户的数据