proginn1011472975
1小时前在线
全职 · 1000/日  ·  21750/月
工作时间: 工作日22:00-24:00、周末14:00-21:00工作地点: 远程
服务企业: 0家累计提交: 0工时

APP聊一聊

个人介绍

1、熟悉Java、JVM、Spring、SpringBoot、SpringCloud。

2、熟悉分布式缓存Redis,消息中间件RocketMQ、Pulsar,RPC框架Dubbo。

3、熟悉java多线程、NIO网络编程、Netty、nginx、tomcat。

4、熟悉分布式系统组件:注册中心、断路器、负载均衡、网关、链路跟踪等多种实现。熟悉SpringCloud Netflix和SpringCloud Alibaba多种实现

5、熟悉Mysql数据库,熟悉InnoDB引擎,了解图数据库DGraph、NebulaGraph。

6、熟悉Canal、Xxljob、Pulsar、Rocketmq等框架源代码。深度优化Xxljob并发调度

工作经历

  • 2021-05-20 -至今深圳市保臻社区服务科技有限公司高级Java工程师

    职责: 1、基础服务的规划、选型、部署、实施 2、推动研发部门技术组件升级 3、负责整体提高研发效率的技术组件的开发 4、根据公司业务场景需要对开源框架进行深度改写 5、制定完善研发部门技术规范,使用研人员能够高效、有条不紊地协作开 发 6、协助业务系统的开发,必要时深度参与 7、协助其它开发人员排查其无法解决的问题 业绩: 获取2021年度“保臻之星·创新奖”

教育经历

  • 2007-09-01 - 2012-07-01南京大学计算机科学与技术本科

技能

C++熟练
Java精通
0
1
2
3
4
5
0
1
2
3
4
5
作品
单点登录系统

单点登录系统是投哪网公司内部提供统一的账户和权限服务的系统。用户只需要登录一次就可以访问所有相互信任的应用系统。

0
2023-05-11 16:36
多租户基础组件(系列)

为了适应公司产品saas化战略,简化业务产品开发人员的开发工作,开发多租户组件。 这是一系列的组件。 1、多租户的支持需要解决【租户隔离】和【链路跟踪】两大问题。 1.1、租户隔离,包括数据隔离和服务隔离 1.1.1、数据隔离 每个租户都拥有自己客户、订单等数据。因此SaaS化的平台需要隔离不同租户的数据,即租户只感知到自己的数据,不应该感知到别的租户的存在。 到技术这一层面,就是租户的MQ消息、DB数据、Redis数据如何隔离的问题。 我们SaaS数据隔都是逻辑隔离,可以更高效地复用硬件资源 1.1.2、服务隔离 即每个租户感觉自己是独享整个服务,而不应该感觉到其它租户的存在。 我们SaaS平台提供的服务隔离的是逻辑的隔离,可以更高效地复用硬件资源 1.2、链路跟踪 即在给定的【租户隔离】的方案下,要能随时随地的获取租户id(也包括租户的其它信息),就必需保证租户id信息能随【调用链】一直传递下去。 但是,未使用多租户组件的情况下,租户id等信息必定会在【调用链】传递过程中的某些“环节”丢失。 导致租户id丢失“环节”的罗列如下: 1.2.1、分布式服务间调用导至 租户id 丢失。 例如:在一个【调用链】中,上游服务调用下游服务接口,如果上游服务未在 租户id 放入请求中,或者下游服务接收到请求但未从中提取租户id并放入本服务的“上下文”中,都会导致租户id未能正确传递而丢失。 1.2.2、服务内异步线程调用的环节 由于链路信息在同一jvm进程内部是以线程变量(ThreadLocal)作为载体传递的,所以产生线程切换的异步调用会导致链路信息丢失。 对此,可以使用InheritableThreadLocal,InheritableThreadLocal在父子线程中传递。此解决方法对开发人员完全透明 1.2.3、线程池里环境下因为线程重复利用导致租户id被覆盖而丢失。 开发人员可以用SaasThreadPoolExecutor线程池。

0
2023-05-11 16:34
分布式任务调度平台

1、基于开源的分布式定时任务xxl-job,另外根据公司业务特点,重新设计开发保臻的分布式定时任务bop-job。 1.1、待执行任务丢失问题 每天8点左右有大量的任务要调度(26万个),大量的任务直接通过http同步接口分派到【执行器】导致执行器内存溢出并挂掉。由于待执行的任务是暂存在【执行器】的内存,【执行器】挂掉导至这些任务没有执行且永久丢失 xxljob执行器与调度器之间没有足够的缓冲(所以bop-job采用MQ作为任务缓冲),目前支持rocketmq和pulsar 1.2、调度中心HA机制较弱 原生xxljob采用数据库全局锁方式避免多个调度中心实例之间的“竞争”,这种方式导致并发度很低(实际上只有一个调度中心实例在真正运行,其它实例被锁)。我的解决方式是引入Raft分式协议+分片的方式,来实现各调度中心实例无锁化且真正并行调度。

0
2023-05-11 16:25
更新于: 2023-05-11 浏览: 1