ID:282888

景泉

高级java开发工程师

  • 公司信息:
  • 用友
  • 工作经验:
  • 3年
  • 兼职日薪:
  • 600元/8小时
  • 兼职时间:
  • 周六
  • 周日
  • 所在区域:
  • 北京
  • 海淀

技术能力

• 深入理解 JDK 集合和并发源码,深入研究 volatile,synchronize 硬件级别工作原理;
• 深入理解 JVM 底层工作原理和垃圾回收机制,熟练使用 jstat、jmap、mat 进行 JVM 调优并制定 JVM 模板;
• 深入理解 MySQL Innodb 存储引擎 Buffer Pool、事务、锁、索引底层工作原理,能根据 explain执行计划优化 SQL;
• 深入理解 Spring Cloud Netfix 组件 eureka、ribbon、feign、hystrix 核心源码;
• 熟悉使用 Dubbo、Zookeeper等技术、 理解其原理和使用场景。
• 深入理解Redis数据结构、持久化、复制、主从、集群工作原理,熟悉缓存雪崩、穿透、击穿、并发竞争解决方案。

项目经验

项目描述:
报表平台是用友网络公共产品部提供的一个公共组件,为其他领域部门提供了公共接口,可以直接使用报表平台自己的逻辑,并且报
表平台提供公共的位置可以供领域去写自己的逻辑代码。
由于报表平台的格式、内容等标志位很多,所以渲染页面时会很慢,因此使用缓存架构redis cluster集群部署,使用AOF+ RDB做冷
热备份;使用nginx + redis + encache三级缓存 + hystrix先流组件实现高性能及高并发,并且防止缓存雪崩、穿透的问题发生。使
用RocketMQ让功能模块解耦、异步调用,利用一主双从集群保证RocketMQ的高可用性。
工作业绩:
对系统完成了性能优化,最终实现系统的响应性能提升了10倍以上;
大大提高了服务的高可用性,可扩展性,避免出现缓存雪崩这种灾难性问题;
项目问题:
1、基于nginx + redis + ehcache 三层缓存架构的设计及缓存雪崩的问题
描述:由于现有平台展示的服务强依赖于多级缓存架构,因此多级缓存必须保证高可用性,尤其是redis缓存,但是当由于一些不
可抗力因素导致redis集群挂掉而引起的缓存雪崩会给系统带来巨大的灾难,甚至导致服务直接不可用。
解决方案:缓存雪崩可能会导致整个系统崩溃,因此考虑了比较完善的方案,分为事前、事中、事后三个层面来应对缓存雪崩的
场景。
(1)事前:确保Redis本身的高可用性,数据恢复备份,Redis cluster集群部署,一旦主节点挂了,从节点跟上;
(2)事中:当redis不可用时,少量请求可以走缓存生产服务的本地缓存ehcache获取数据,基于hystrix对有领域逻辑服务和
redis操作做限流保护配置降级、超时、熔断策略。从而保证发生缓存雪崩时缓存生产服务不会被拖死;
(3)事后:基于redis的数据备份,快速将redis重新跑起来对外提供服务;
2、纬度化拆分大value解决方案
描述:之前是将页面标志位和业务逻辑返回结果集等多种数据耦合在一起,这样每次数据变更时,redis缓存中的数据都要全量更
新,导致网络资源消耗大,redis吞吐量急剧下降。
解决方案:对缓存进行纬度化拆分,将每个维度的数据都存一份,那么在不同的维度数据更新的时候,只要去更新对应的维度数
据就可以了;redis性能大幅度提高,并且压力也降低很多。
2019-08 ~ 2021-03 蓝盾风控平台 Java RD
3、基于双层nginx部署架构的缓存命中率提升方案
描述:部署多台nginx集群情况下,流量被负载均衡,均匀地打到各个nginx服务器上去,这样缓存命中率很低,而且会导致
redis的压力暴增。
解决方案:双层nginx(分发层 + 应用层)部署架构 + lua脚本实现一致性hash流量分发策略;分发层获取到用户请求的参数id
进行hash计算出hash值,再根据应用层nginx服务器的数量进行取模获取到坐标位置,利用http发送请求到应用层nginx,这样就能
保证同样的请求,就固定路由到一个nginx后端服务器上去,只会从redis中获取一次数据,后面全都是走nginx本地缓存了。

信用行为

  • 接单
    0
  • 评价
    0
  • 收藏
    0
微信扫码,建群沟通

发布任务

企业点击发布任务,工程师会在任务下报名,招聘专员也会在1小时内与您联系,1小时内精准确定人才

微信接收人才推送

关注猿急送微信平台,接收实时人才推送

接收人才推送
联系需求方端客服
联系需求方端客服