1)使用Spring/Springboot/Mybatis 实现业务服务,使用SpringMVC编写Rest端点;
配置并使用OpenFeign客户端并通过Ribbon来查找选择并消费服务实例; 搭建zuul网关供测试环境使用,生产接入已有的Nginx网关服务;接入nacos配置中心&注册中心注册服务及动态拉取配置;使用Redis存缓存数据(1、 航班、机场数据、人员等修改量小,使用量大的数据以redis作缓存 ,主要存hash结构,结构更清晰,必设失效时间,避免资源浪费 )
- 定时器服务:
一、基于TaskScheduler和CronTask来实现动态增删定时任务,项目加载完毕后(实现commandLiner接口),加载库中定时任务,符合策略后则使用ScheduledTaskRegistrar注册定时任务。
二、采用三数据源:业务需求中,数据迁移,数据同步(不同系统同步通过直接查数据视图方式,而非数据接口)需要多数据源, 通过注册不通数据库的Druiddatasource bean 并绑定属性的方式连接不同数据库,使用mybatis mapperscan或直接在dao层指定所使用数据源
1、问题解决成果:
精间接口返回字段 不需要的字段不返回
解决mysql数据库cpu使用率高达80%:
对大数据量表进行按日期分区
对大字段进行拆表处理
读写进行分离,读走从库,写操作走主库
优化导出实现方式 限制最大导入数目 限制最大导出数目
优化时间段查询方式,更好的走索引
不写联合查询的sql,取出数据在内存中解决
重构代码,减少不必要的查询
对查询频率高的查询sql进行优化。
解决分布式的全局统一ID生成不合理,导致数据库资源抢占,服务停止问题.
生成方式修改为基于数据库id生成的方式。即每次生成id时都从相同表中取出一个唯一的ID值。
alb原理部份
3)使用负载均衡器ALB实现内外服务间调用(不同于k8s,k8s是只有对集群外的请求通过负载均衡器,虚拟IP提供对内部服务访问); |