本文参考微信公众号——黄小斜

Java开发工程师到底开发什么?准确点来说,Java后端到底在做什么?
众所周知,Java是一门后端语言,后端指的就是服务端,服务端代码一般运行在服务器上,
通常我们运行Java程序的服务器都是Linux服务器。
JRE也就是Java运行环境,有了这个运行环境,你就可以运行Java应用程序了。

Java除了基础语法如for循环、if语句外,还有一些其他的概念,比如面向对象的特性,其中有类、接口等概念。
Java引入这些东西的目的是想让使用者更好地进行设计、抽象和编程。(当然,这些东西只有你真正写代码
之后才能逐步去理解。)

Java里经常用到集合类,因为在现实生活中有很多场景,需要用到集合类,比如说存储一个用户名列表我们就可以使用List,
所以集合类的作用就是让数据更好地存取。集合类的底层是数据结构。

Java中的并发编程,Java中的多线程是为了更好地利用电脑中的CPU,通过并发编程,就可以提高程序并发的效率。
并发编程需要操作系统的支持以及计算机硬件的支持,所以如果要理解多线程,不仅仅要理解Java里的Thread和线程池,
还需要理解操作系统以及计算机组成原理。

Java里面也有网络编程的概念,其实也是基于TCP/IP协议实现的一套API,通过网络编程,你就可以在程序中把你想传输的
数据传输到网络的另一端,有了网络编程和并发编程之后,Java程序员的能量已经很大了。

下面我们举一个支付宝的例子来阐述Java后端技术:
支付宝在早期用户数并不多,一台服务器,一个数据库就可以支持所有的业务了。
当支付宝的用户越来越多的时候,一台服务器无法同时满足海量用户的需求,于是开始出现了多台服务器,多台服务器组成了
一个集群,用户可以通过负载均衡的方式访问这些服务器,每个用户可能会访问到不同的机器上,这样就达到了分流的效果,
服务器的压力就会减小。

由于数据库需要保证数据的可靠性,所以数据库需要备份,于是就有了数据库的主从部署。

但是随着业务的发展,数据库的压力也越来越大,主从部署并不能解决数据库访问性能的问题,于是我们需要进行分库分表,
在数据库主从的基础上,我们会把一个数据库很大的表拆成多个表,并且把数据库请求分流到不同的数据上,比如说100个分库,
100个分表,就相当于把一个数据表划分成10000个数据表。

如果一个数据库有多个备库,并且当主库挂掉的时候需要进行主从切换时,主备数据库之间的数据就可能发生不一致,
而这也是分布式理论研究的问题之一,因为比较复杂,我们这里就略过不讲。

负载均衡。分库分表都是分布式技术的一种实现,如果不想做分库分表,那么还有什么办法能够减轻数据库访问的压力呢?
于是缓存就出现了,