一、Java基础扎实
1、熟悉JVM内存结构,java内存模型,垃圾收集器的组合使用
2、熟悉synchronized锁的膨胀过程(无锁、偏向锁、轻量级锁、重量级锁)。
3、熟悉AQS原理,并阅读过相关源码
4、掌握多线程编程
二、熟悉主流消息中间件(kafka、rocketMq),主流缓存中间件redis,实时文档存储与分析搜索引擎Elasticsearch
1、kafka运用了利用segment+有序offset+稀疏索引+二分查找+顺序查找等多种手段来高效的查找数据。
2、rocketMq则运用commitlog+consuneQueue+indexFile。
3、了解redis架构设计(多个socket、io多路复用、文件事件分派器、事件处理器)
4、理解缓存雪崩、缓存穿透、缓存击穿
5、熟悉Elasticsearch文档的索引与检索底层工作原理
五、熟悉SpringCloud微服务框架的设计原理及底层架构,熟悉各种微服务架构场景设计
1、可对网关进行统一限流也可对某个微服务的热点接口进行限流;
2、微服务间调用时可以进行数据压缩减少网络流量;
3、Feign调用整合Hystrix进行回退处理时可配置FallbackFactory可将异常信息通过日志输出;
4、Hystrix请求合并可减少通信开销(并发量较低,对延迟敏感的接口不建议使用请求合并);
5、可对ribbon配置重试机制;
六、熟悉dubbo并能熟练使用dubbo进行微服务的架构开发工作
1、熟悉dubbo的核心模块及他们的职责
2、熟悉dubbo的调用工作流,并能够手书该过程
七、熟悉主流数据库mysql、tidb(了解其底层架构设计)和非关系型数据库mongodb
1、熟练运用关系型数据mysql及非关系型数据mongodb进行项目的开发与sql优化
2、熟悉新型分布式关系型数据库tidb的底层架构设计,并能熟练使用
八、熟练运用springboot进行服务的设计与开发工作
脸脸信息化系统 2021.01-2023.04
项目背景:脸脸信息化系统是从0到1的建设主要是为了解决以运营负责人,分组组长,公司管理者的视角,实现以单项目,分组,大盘等多种维度查看项目数据,帮助不同角色以不同的时间维度查询运营过程中产生的数据,辅助数据分析,并实施调整运营策略。
遇到的难点及解决方案:
难点1:数据分散在各个不同的业务数据库中
解决方案1:对于数据分布于不同业务系统采用mysql+canal+kafka+tidb进行实时数据采集
难点2: 数据量大其中券发放数据超过了1600W+,用户参与数据1460W+,还有一些其他的如订单数据、券核销数据都接近千万级别
解决方案2:选择TIDB(分布式关系型数据库,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态)数据库存储数据
难点3:数据统计维度广(有的接口需统计将近30个维度的数据)接口耗时长
解决方案3:对于应用程序采用了Future模式提升系统并发运行的效率来解决项目开发过程中遇到的系统响应速度问题,经实测将系统响应速度有原先的约1.9s提升至只耗时0.5s
MoMo(app)
该系统采用springcloud微服务设计拆分出了用户、信审、风控、订单、支付、催收、营销、埋点数据分析、消息通知以及文件服务等业务模块。运用alibaba-nacos作为微服务的注册中心和配置中心,nacos采用集群部署方式,前置采用nginx来做负载均衡;采用mysql作为持久层数据的存储,同时为了应对将来数据量激增需要分库分表情况的发生本次数据库主键id采用了snowflake算法生成并提前埋入分库基因;采用redis作为分布式锁,并缓存相应热点数据;采用rabbitmq来处理给批量用户发送的催收、还款短信(每天的发送量在2w~10w条之间);采用es存储短信发送情况,方便业务与短信运营商进行数据校对。
具体技术点总结如下:
1、基 础 技 术: spring、springboot、jwt、spring security、oauth2
2、分布式组件: springcloud生态组件,alibaba-nacos
3、中 间 件: RocketMQ、redis、skywalking
4、持 久 化: Mysql、 Redis、Elasticsearch、aliyun-OSS
5、构 建 组 件: Jenkins、Gitlab、Maven
6、其 他 组 件: Swagger、Swagger-ui
众城通app
众城通app是通卡联城网络科技有限公司打造的服务于8家金卡联盟股东卡公司的首款公交扫码app,通过集成公司自有码发码系统,能够方便市民随时随地刷码乘车(目前已在宝鸡市投放使用)。同时通过我们设计开发的展台系统可以在app内方便快速地接入第三方应用。
设计:
一、基于SpringCloud做微服务架构分布式系统,Spring Security OAuth2提供全套的解决方案来支持在Spring Cloud/Spring Boot环境下使用OAuth2.0,提供了开箱即用的组件。同时优雅的集成短信验证码登录及第三方登录,集成过程做到了:
1、不侵入Spring Security OAuth2的原有代码
2、对于不同的登录方式不扩展新的端点,使用/oauth/token可以适配所有的登录方式
3、可以对所有登录方式进行兼容,抽象一套模型只要简单的开发就可以集成登录
二、对集群中的部分服务以及一些热点接口进行限流,保护系统不被大量请求冲垮。对于流量最大的网关zuul采用了RateLimiter进行限流。但是即使我们做了整体的集群限流,如果某个服务的具体限流持续并发量很大且是同一个接口,那么还会影响到其它接口的使用,所有的资源都被这一个接口占用了,其它的接口请求过来只能等待或者抛弃,所以我们将限流做得更细,针对具体的 API 接口进行并发控制。
三、对于具体业务点运用美团点评分布式监控cat作为关键业务点的监控,并接入钉钉告警可方便相关人员及时发现并排除异常。对于此款app的主要功能“乘车扫码”业务点,监控每分钟扫码量的上限与下限值。并接入钉钉告警方便运维人员及时 捕捉到扫码出现异常的情况。同时也方便分析扫码业务量的分布。
四、采用elasticsearch存储rabbitmq异步收集的分布式服务链路追踪信息。分布式微服
众城通app是通卡联城网络科技有限公司打造的服务于8家金卡联盟股东卡公司的首款公交扫码app,通过集成公司自有码发码系统,能够方便市民随时随地刷码乘车(目前已在宝鸡市投放使用)。同时通过我们设计开发的展台系统可以在app内方便快速地接入第三方应用。
七喜直播系统管理平台具有系统管理、用户管理、财务管理等丰富的功能。本人负责整个后台框架的搭建,数据库设计等工作内容。