熟悉Vert.x反应式框架,能基于Vert.x实现高性能HTTP/TCP服务器和客户端。
熟悉分布式应用开发,如RPC框架、Etcd注册中心、负载均衡机制以及重试等。
熟悉集合、线程的生命周期、线程池、线程的锁、并发编程、SPI机制等。
熟悉常用的设计模式,如:双检索单例模式、代理模式、装饰者模式、工厂模式。
熟悉MySQL、Oracle数据库;熟悉数据库SQL优化;熟悉索引的数据结构。
熟悉Redis分布式锁、缓存以及基于Redisson的可重入锁。熟悉Redis哨兵集群的高可用。
熟悉SpringAOP面向切面编程的代理模式。并结合RateLimiter实现限流注解
熟悉RabbitMQ消息队列,实践过消息队列的持久化以及如何解决消息积压。
★ 项目名称:EchoLink RPC框架
技术栈:Java + Vert.x + Etcd + 自定义协议
项目介绍:开发者可以在依赖中引入spring boot starter,并且通过注解和配置文件便捷、快速的使用RPC框架,实现简单调用远程服务的操作;同时使用Java SPI机制实现对序列化器、负载均衡器等工具类的灵活配置。
责任描述:【核心架构】包括方法调用、序列化器、请求处理器、注册中心等。
【注册中心】使用Etcd实现注册中心,实现服务发现;同时通过租约、监控客户端以及心跳检测,实现本地服务缓存定期维护。
【心跳检测】使用定时任务以及Etcd租约,定时在本地缓存查找需要续租的服务并重新续租。
【自定义协议】基于TCP实现自定义通讯协议,解决HTTP头文件冗余问题,提高网络通讯效率。
【服务注册器】使用ConcurrentHashMap存储本地服务注册信息,通过对应服务名称获取实现类,并通过反射完成真实方法调用。
【负载均衡】使用一致性Hash算法实现相同服务在不同IP下的负载均衡调用。
★ 项目名称:Princess 智绘
技术栈:SpringBoot + RabbitMQ + MyBatis-Plus + Redis + MySQL
项目介绍:由AIGC与Rabbit MQ为核心实现的异步化数据分析并展示为可视化图表。利用Redis实现分布式session存储,且自定义限流注解,实现了对用户使用AI分析数据的限流,确保高可用以及稳定性。
责任描述:【数据转换】用EasyExcel解析用户上传的图表数据并压缩为csv格式,解决AIGC因接收Token长度限制而导致的输入数据量少的问题,实测提高20%左右输入量。
【限流注解】基于反射机制和Redis实现分布式限流注解,保证系统的高可用。
【AIGC异步化】由于AI响应时间长,使用线程池和rabbitMQ队列实现AIGC并发执行和异步响应。
【Prompt模板构建】后端自定义Prompt模板预设,并封装用户数据以及分析诉求。同时限制AI返回数据格式要求,返回给前端直接可渲染的Echart图表代码。
【表数据加载优化】将图表数据缓存到Redis,提高静态图标的加载速度。
★ 项目名称:Prince API开放平台
技术栈:SpringBoot + Spring Cloud Gateway + Redis + React + JWT
项目介绍:基于SpringBoot框架搭建的API接口调用平台。管理员可以接入并发布可调用的接口,并且可以可视化看到接口的调用情况;用户可以开通接口调用权限、浏览器接口及在线调试,并通过客户端的SDK调用已发布的接口。
责任描述:【API认证】为了防止接口被恶意调用,为用户分配唯一accessKey和secretKey以鉴权。
【单点登录】用JWT生成token存在Redis,判断用户是否处于登录态,用拦截器拦截实现单点登录。
【API网关】使用Spring Cloud Gateway,实现路由转发、访问控制,并集中处理签名校验、请求参数校验、接口调用等业务逻辑,提高安全性同时便于系统开发维护。