Springboot 2.2.x
整合 spring 框架 不用自己编写各种匹配依赖
Springmvc
Dispatchservlet 统一处理所有的请求,通过自动扫描的所有 controller,restcontroller,进行路由和派发,可以定义 filter(servlet 请求过滤器),使用 mvc 之后采用拦截器的方式,并通过 mvc 进行配置,可以拦截所有的请求,做需要统一的各种业务,例如结合网关判断原来,从而获取用户信息,并且通过 threadlocal 设置用户信息到当前线程的上下文当中,并在后置处理中,对 threadlocal 进行清除处理,统一结果集格式,日志打印请求出入参等等。
Aop一般采用默认的代理机制,前、后、环绕、返回、异常通知,结合需求做一些统一处理。
Ioc了解 spring 创建 bean 的流程。
Jdbctemplate
开发做基于 Jdbctemplate 的二次封装的 lib,在项目中做 orm 层。主要处理项目在 sqlserver oraclemysql 之间切换
Jpa
Jpa 是一套标准,spring 默认采用 hibernate 实现,也有部分 ddd 思想在里面,实际落地中但并没有完全遵循 jpa 的规范开发,主要是各种对应关系很麻烦,所以只是简单的使用,主要是repository 足够简单,各种关联关系使用 query 查询,但是是基于 repository 的扩展,主要使用接口集成实现。复杂的关联查询,或者分页查询,使用 entitymanager 进行封装。
Transaction理解 spring 的事务传播机制
Event
主要用于解耦代码,event 可以有同步或者异步,还有事务消息,事务前后。用 listener 进行监听。或者在 spring 容器需要加上自己的业务处理,也可以使用事务监听机制。
消息集成
使用 spring-kafka 完成 kafka 的发送和接收,结合事务机制和 mongo,redisson(分布式锁),做可靠消息,包括实现消息重发,和消息消费,主要是在数据库提交成功,发送 kafka 消息之后,没有收到 kafka ack 确认之前,应用 down 掉,这时需要在项
目重启之后,读取 mongo 中的消息,通过事件派发给业务系统,自己处
项目经验
2020/1-2020/2 新冠速测/智答
所属公司: 万达信息股份有限公司
项目描述: 在 2020 年大年初一晚上,还在电视上看新冠最新情况的时候,突然接到领导电话,公司需要为社会贡献一份
力量,快速开发一个新冠疫情相关的软件,于是就有了这个项目
新冠速测,整理国家公布的相关传染风险高的区域信息,以及相关的症状,设计成若干道题目,根据用户的回
答,判断用户是否有感染的风险,并提供就近的医疗机构信息。
新冠智答,与医院专家联合整理一套与新冠相关的资料,为用户科普新冠信息,以及注意事项,和当下热门,
热点问题
技术栈:
H5 采用 jquery 开发,实现多点投放(20+渠道,包括 APP,公众号,小程序)
搭建 nginx 集群,以及后端服务的反向代理,负载均衡
keepalived 完成 HA 高可用,VIP 与域名绑定
springboot 完成后端服务相关功能
采用 jenkins,docker 完成 CICD
碰到的坑:
项目从开发,功能测试到上线一切正常(时间紧急没有做相关的压测),后面由于大面积推广大流量进来,导
致页面访问速度异常缓慢,在排查了 nginx,java 日志正常之后,协调公司网络部,确定分配给服务器带宽,
最终确定因为带宽不足,导致缓慢
总结:
项目再紧急,也必须有一个预期流量(尽管可能是 100 并发),进行压测。因为涉及到不同的部门协作。
流量预期可以是产品提出或者跟产品共同确认,比如会投放到 10 个公众号,需要提前了解每个公众号的日常
流量,预估出一个范围,进行压测,如果紧急,至少需要用 jmeter 压满网络(有可能测试机与服务器的带宽
也会有限制)的环境下,进行测试。通过服务器日志和指标,判断是否符合预估的范围。
责任描述: 1、与产品沟通需求,评审原型
2、带领团队开发落地
3、收集各种问题,与相关人员沟通解决方案(大部分是产品)
4、对线上环境负责
2019/1-至今 云诊室
所属公司: 万达信息股份有限公司
项目描述: 打造一款互联网+医疗的 APP 产品,实现居民足不出户与医生面对面沟通,从问诊到开具电子病历,以及预约
线下门诊,检验,检查,到多种渠道取药的全流程支持。
提供完全独立的多端可使用的成果物,包括 PC,PAD,APP 等,也和可以无缝的与公司现有产品进行融合。
业务目标
1、完成居民端 APP,药柜机,健康亭视频,图文问诊,支持线上支付,以及现场取药
2、完成医生端 PAD,PC 的视频,图文接诊
责任描述: 1、技术选型。从众多的视频,图文,消息厂商中,通过阅读文档和代码实践,以及与技术人员沟通,并结合
团队实际情况,确定本产品最终使用的各种第三方中间件。
2、沟通协调 H5,JAVA,安卓,ios 团队共同开发,按质按时按量保证开发进度和完成开发任务
3、对团队碰到的技术难点进行攻关
4、使用 CI/CD 方式,进行产品的生产环境部署规划,以及上线实施
2017/7-2018/12 健康城市
所属公司: 万达信息股份有限公司
项目描述: 响应公司智慧城市的目标要求,打造一款综合性便民的 APP。
其中包括基本的预约挂号,健康档案查询,在线签约,也根据不同上线城市的要求,实现实名认证,移动支付
等等。
已产品的维度进行开发,支持各地的个性化需求。完全贯彻落实微服务的架构思想,以及通过解决各个不同地
方的二次开发,以及上线过程中碰到的问题,逐渐完善产品。
责任描述: 1、带领团队完成全国 20+城市的开发,交付
2、按照产品开发的规律,在不同的阶段做必要的设计和重构,使得产品更加灵活,并且易于使用
3、由于是综合 APP,在对接各种第三方系统接口的过程中总结出大量的实践经验,并与团队中进行分享。
4、在产品迭代中,不断的使用相对稳定的新技术,来升级产品,并且是团队的技术能力保持不断进步。
2016/12-2017/10 分级诊疗平台
所属公司: 万达信息股份有限公司
项目描述: 响应国家政策,开发分级诊疗平台,实现医疗机构的团队管理,医联体管理,在线签约,居民履约记录,并且
对接公卫,HIS 系统,实现数据联动及展示
目前已在全国 20+县,市上线使用。
责任描述: 1、沟通分析项目需求,使用微服务理念,拆分出子系统,使用网关进行服务聚合
2、带领团队实践敏捷开发,其中包括与需求组的同事通力合作,及时响应和沟通新增或变更需求的合理性,
可行性,使得开发团队成员的业务水平有所提高
3、处于安全方面考虑,要求团队所有项目的生产环境,已 linux 操作系统优先,并引导团队熟练掌握在 linux
系统下的各种中间件部署和使用