互联网产品, 大型企业级项目常会用到的:
并发处理技术. 具体到 Java 上通常是涉及 java.util.concurrent, 并发锁机制, NIO 等方面, 当然最近比较火爆的 Netty 框架也可以作为高并发处理的备选方案之一, 这需要对 Java 的线程调度机制有着比较深的理解. 不过这些可能会涉及并发控制的对象 (比如 reentrantlock 等) 只能存在于一个 JVM 里的问题, 一旦系统规模大到需要部署多个 JVM 来处理并发的情况, 则需要采用共享 session 的技术(比如 spring-session), 或者尽可能将系统后台设计为无状态的服务, 这需要对 RESTful 有着较深的理解.
高可用, 负载均衡技术. 互联网产品, 企业级应用通常要求一年里的 Downtime 控制在很小的范围内, 这需要足够的高可用和负载均衡架构来支撑, 这个一般和 Java 技术本身没太大关系, 但却是一名初级程序员向高级程序员甚至是架构师 CIO 进阶的必备技术, 因此可以适当了解一下 Nginx,HAProxy 等对这方面的支持. 另外现在最 "时髦" 的做法是将应用 docker 化, 配合 ETCD,kubernetes 等工具在容器的层面上实现高可用和负载均衡, 当然这需要看实际的需求, 最时髦的不见得是最适用的, 要考虑构建成本.
缓存技术. 缓存应该是大型系统中或高并发条件下提高响应速度的亘古不变的真理(虽然也看到过淘宝搜索商品功能采用的大数据处理技术实现的零缓存的文章, 但能达到淘宝的体量和技术水平一般不太可能), 这方面的工具太多了, ehcache,Memcached,Redis...... 从 Java 的角度来讲, 需要了解的一是 Java 对这些工具的连接器, 二是缓存技术背后的 JSR-107 标准, 可以参考 spring-cache 的实现, 阅读一下源码加深理解.
异步处理技术. 这通常也是抵消高并发的处理手段之一, 从 Java 的角度看最简单的异步处理就是新启动一个异步线程, 这同样也需要对 Java 的线程调度有所了解, 当然也可使用 Spring 中的 @Async 之类的也可以简单实现异步线程的处理. 如果是非常消耗资源的业务处理, 简单的异步线程是满足不了需求的, 这就需要一些消息中间件来做这些异步处理了, 消息中间件有很多, activemq,rabbitmq,kafka...... 需要了解的是 Java 对这些中间件的连接器. 不过异步处理中最关键的是事务保证的问题, 这可能需要对事务的两步提交有所了解.
在这里我有一个专门为跳槽 JAVA 开发人员想要跳槽准备的一个线路图:
- Tomcat
- MySQL
- Spring IoC
- Spring AOP
- Spring MVC
- Redis
- Memcached
- MongoDB
- Git
- Maven
- Jenkins
- Sonar
来源: http://www.jianshu.com/p/3b7635f99901