本项目主要给出独立开发框架(如MQ/RPC等)时所需用到的核心技术。
常见技术列表:
技术 | module/地址 | 应用场景 | 状态 | 其他 |
---|---|---|---|---|
动态代理 | dynamic-proxy | RPC MQ |
done | |
字节码编程 java agent, instrument, byte buddy |
bytecode-program java-agent-and-instrument java-agent-and-instrument-test 一个简单starter实现 |
非侵入式应用监控 ,应用埋点, 方法增强, 热替换等 |
done | 应用监控,如skywalking, pinpoint, zipkin等; 框架开发,如dubbo、spring等; 其他,如arthas, jrebel等 |
连接池 | connection-pool | Druid等 | done | github上一个自定义实现的连接池: https://github.com/aloys-jun/connect-pool |
Java JUC | https://github.com/evasnowind/JUC-learning | done | ||
Java CAS | java-cas | done | ||
Java SPI | java-spi | JDBC | done | |
Java Zero Copy | java-zero-copy | 高性能IO,如kafka | done | |
Dubbo SPI | Dubbo | to do | ||
Spring高级应用 | spring-senior | done | 事件通知机制:比如载入某个实例完成后 通过该机制告知相关类继续往下走 |
|
Spring AOP | spring-aop | done | ||
Spring Factories, 原理与使用, Spring Import, Spring Condition |
spring-conditional-annotation spring-import |
框架开发 | done | 利用spring开发框架, 第三方客户端的开发, 解决客户端的集成问题 |
spring-boot-starter 实现原理 |
tiny-http-server-spring-boot-starter 一个简单starter实现 |
自定义 spring boot starter |
done | 开发一个框架时,自定义实现 一个starter,便于作为第三方 库,将客户端集成其他应用中 |
netty | netty-httpserver | 高性能网络IO, 如RocketMQ |
done | rocketmq, dubbo, seata 等。kafka没用netty, 但也用了NIO。 |
动态数据源切换, 读写分离 |
dynamic-datasource | 数据库中间件, 读写分离,如 MyCAT, shardingsphere-jdbc |
done | 其他参考资料:动态数据源切换 集成多数据源 |