Contents
  1. 1. 业务功能:
  2. 2. 程序功能:
  3. 3. 项目值得学习的地方
    1. 3.1. 邮件功能
    2. 3.2. 微信公众号相关功能
  4. 4. 项目可以升级的地方
  5. 5. 工作内容
  6. 6. 网站front-end项目架构
    1. 6.1. 后端框架:
    2. 6.2. 前端框架:
    3. 6.3. nginx相关
    4. 6.4. 全文检索分布式
    5. 6.5. 其他
    6. 6.6. 简化配置
  7. 7. 后端项目架构

业务功能:

服务医疗器械销售团队做产品使用培训。同时附加功能,医疗行业大牛的直播授课解答、手术直播等医疗相关的直播,还有PDF、帖子等文字图片相关内容、合作医院的信息和名医等信息的展示。

程序功能:

前端网站展示,后端网站管理程序独立分开。另外还可以分为PC端展示、Mobile端网站展示和微信公众号推送等服务。

  1. 前端负责展示网站:
  • 搜索引擎关键字搜索(ActiveMQ实现后端程序DML课件后同步搜索结果)
  • JSP动态展示相关内容
  • 直播视频厂商ifream引入、接口调用和回调
  • 微信公众号的绑定、消息通知、简单的跳转导航等功能
  • 论坛发帖和留言功能(ueditor)开源的
  • nginx 反向代理、
  1. 后端程序管理网站:
  • 内容的编辑管理、展示的设置
  • https安全
  • 权限管理
  • 浏览量统计展示等相关
  1. 运维模块:
  • 数据库的压缩备份 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授权、区域管理,展示归属该用户的数据
Contents
  1. 1. 业务功能:
  2. 2. 程序功能:
  3. 3. 项目值得学习的地方
    1. 3.1. 邮件功能
    2. 3.2. 微信公众号相关功能
  4. 4. 项目可以升级的地方
  5. 5. 工作内容
  6. 6. 网站front-end项目架构
    1. 6.1. 后端框架:
    2. 6.2. 前端框架:
    3. 6.3. nginx相关
    4. 6.4. 全文检索分布式
    5. 6.5. 其他
    6. 6.6. 简化配置
  7. 7. 后端项目架构