1. 深入理解:spring,springaop,springmvc,springboot等开源框架设计原理以及底层架构,研究过核心源码。
2. 熟练掌握:mybatis,dubbo,springcloud,zookeeper等开源框架,linux操作系统。
3. 深入理解:redis线程模型,熟悉各种缓存高并发的使用场景。缓存预热,缓存穿透,缓存雪崩,在项目中真实解决过各种分布式场景的技术难题。
4. 深入理解:mysql的内部计算原理,及ISAM和INNODB搜索引擎的索引底层数据结构、以及数据查找原理,以及mysql的一些优化
5. 熟练使用:rockerMQ,rabbitMQ 等消息中间件,理解其工作原理。
6. 有处理过高并发的经验,微服务有过拆分业务服务数>10个。
个人贡献成就:
a) 自己实现过 基于框架的插件开发。如:手动实现过基于aop实现分库分表的插件 等。
b) 基于springIOC ,使用springIOC的后置处理器, 和动态代理以及反射技术,手写过简易的AOP框架。
c) 基于javassist 技术,实现过分布式调用链系统。
多聊聊社交聊天程序
java工程师 2019.02—2019.04
简介:
是一款模仿微信开发的一款社交软件。
应用模块:
1. 聊天室:一对一,多对多聊天室。
2. 支付:微信支付、支付宝支付。
3. 红包:发红包,和群抢红包。
4. 通讯录:联系人、黑名单、新朋友、群聊、标签
5. 朋友圈:我的朋友圈,好友朋友圈, 朋友圈
6. 我的:充值、相册、表情、收藏。
我负责的模块及用到的技术:SpringBoot,SpringCloud(SpringCloud中使用了部分框架),WebSocket,Redis,RabbitMq,zookeeper
1. 架构设计:最终拆分为 5块服务:Websocket服务;推送服务;朋友圈服务;个人中心服务;MQ消息服务;
a) webSocket服务采用的是集群架构,通过redis 记录 客户端与Websocket服务的连接(方便找到对应的WebSocket服务),使用rabbitMQ 通知对应的服务推送消息。
b) 推送服务:推送服务是与WebSocket服务一起协作的,推送服务 给客户端做推送时,需要用到的,也是redis和RabbitMQ, redis 监听服务,RabbitMQ 发送消息给对应的WebSocket服务,推送消息给客户端。
2. 聊天室:聊天用到最多的就是Websocket服务了。可讲的也是Websocket在集群环境下的运作,在写群聊天时,一个客户端给WebsocketServer发送一条消息,需要同时给所有满足条件的发送这条消息,集群条件下,我是采用的将消息发给【推送服务】通过Redis检测用户IP,然后通过RabbitMQ将消息分发给不同的WebSocketServer服务。最后完成消息推送。
3. 红包:由于微服务集群架构,为了避免超卖现象,我采用的是分布式锁。然后这里可能产生大量请求,我采用的是多级缓存机制和异步削峰。
a) 分布式锁:采用的是redis+zk redis原子操作记录锁,zk监听 避免由于服务宕机产生死锁。
b) 多级缓存:采用jvm 缓存,redis缓存, 每次请求想验证缓存,后验证redis缓存,这里采用了zk的服务接口监听,解决集群环境下的jvm缓存同步。
c) 异步削峰:抢红包操作,通过异步执行,执行成功后像前端推送消息。
d) 服务防刷:使用redis 做标记,每个用户只能抢成功一次红包。
4. 朋友圈:这个模块没有太多可说的,唯一可说的就是朋友圈都严格权限控制。
5. 表情:完成模块的其中之一,技术方面普通的业务模块没什么好说的。
官网:http://dliaoliao.com/
食勾圈(外卖电商平台)
java工程师 2018.06—2018.9
简介:
这是一款外卖电商系统,系统分为三块:食勾圈、食勾圈骑手、商家管理平台。 简历主要介绍电商系统,也是我主要负责的一块。
应用模块:
1. 会员中心:登录、注册、购物、评价、晒单、会员等级、会员积分。
2. 商品中心:商品简介、商品推荐、商品分类、商品搜索
3. 交易:购物车、创建订单、下单结算、订单、申请单、退款单
4. 营销:折扣、购物卷、满减、红包抵用、满减外卖费等。
5. 秒杀:整点秒杀、活动0.1元秒杀抢购(高并发)
6. 支付:微信支付、支付宝支付。
我负责的模块及用到的技术:
1. SpringBoot、Eureka、Feign、Hystrix、zuul、Redis,RabbitMq,zookeeper、ELK、ES、sharding-sphere
2. 架构设计:最终拆分 商品服务、会员服务、交易服务、订单服务、秒杀服务、骑手服务、管理系统服务。
3. 数据库设计:最终采用的是分库分表的设计,使用sharding-sphere来实现分库分表,并自己实现一致性hash算法,来匹配数据对应的数据库(避免因为数据过多而曾库)等问题,由于经过需求的分析,得到读多写少。采用的是读写分离的 策略。
4. 秒杀:使用多级缓存来减少压力,并使用Nginx的缓存来加载商品详情页。和使用RabbitMq 解耦,削峰。使用zk 监听接口,同步JVM缓存。最后订单信息。
5. 购物车:通过redis记录 游客RedisKey 来保证游客和用户在同一台机器上的数据同步。
6. 商品查询:通过ES +KI分词。来达到商品的模糊搜索。
7. 其他模块:登录、注册、评价、会员等级、会员积分 这些都是一般的业务。没有什么亮点。
8. 项目链接:目前IOS 已经上线,可以在AppStore上面搜索食勾圈,即可下载使用。 项目由于某些原因,中途停产,最后只有iOS上线