在现今黄金时代,有许多C词汇可能会刻画他们的今后。不过,当他们已经开始自学程式结构设计时,他们常常从C词汇已经开始,接着转至C++或许多其他C词汇中的一种。
那时给我们撷取的是为人津津乐道的JavaC词汇中的辅助工具采用。JavaC词汇的普及化能归咎于它的运动性,因为它能用以结构设计轻量和加速的订制插件,因此能服务于各式各样的目地。
JavaC词汇是这般颇受热烈欢迎,以致于长年在TIOBEC词汇盛行度榜单中名列前三,基本上上每一子公司都在采用Java,不论是这些小子公司,还是像Google,Amazon那般的小型信息技术巨擘。
因此前段时间一两年,Java 的控制技术栈发展的十分快,成千上万的控制技术辅助工具正急速地冒出来,这也造成了一个问题:究竟应该选什么样辅助工具构筑出合适的控制技术栈呢?
一、工程项目辅助工具
非主流的 Java 合作开发辅助工具那时非 IntelliJ IDEA 莫属。前一两年,可能 Eclipse 还能和 IDEA 一较决决,到了那时已经基本是 IDEA 的四海了。
如果你问我用 IDEA 究竟哪NEAR,我真的有 3 点:
标识符智能化提示信息,爽!
标识符手动聚合,爽!
标识符增容,爽!
而这 3 点,不可否认就是能很大提升合作开发人员合作开发工作效率的 3 点。
对于工程项目中的标识符版管理辅助工具,Git 已经处于垄断地位了,新工程项目地话不需要再考虑 SVN、CVS了。
之所以 Git 那时处于垄断地位,主要胜在 2 点:
Git 是分布式的,不会因为版管理服务器崩溃导致完整的标识符历史版丢失。
Git 创建分支是十分廉价的操作,能随意创建分支,从而使并行合作开发很容易落地。而 SVN、CVS 这些版管理辅助工具创建分支则十分笨拙,并行合作开发十分麻烦。
Java 工程项目地构建辅助工具那时是龙争虎斗,业内一般有两个选择:Maven 和 Gradle。
如果是后端的 Java 工程项目,那绝大部分用的还是 Maven 去构建工程项目。如果是前端的 Android 工程项目,则选择 Gradle。
Gradle 本身要比 Maven 先进许多:它配置灵活,性能优秀,真的是个十分优秀的构建辅助工具。
二、合作开发框架
那时的 Web 工程项目合作开发,大部分都转向了 SpringBoot 了。
采用 SpringBoot 有三个最大的好处:
配置十分少,能说是即插即用
基于 Spring 构建,入手门槛十分低
直接运行,不需要再考虑 Web 容器的问题
2.2 持久层框架
工程项目开发中用到的持久层框架,基本上有两类:
Mybatis 系列产品衍生框架
JPA 系列产品衍生框架
在国内来讲,大部分持久层框架还是首选 Mybatis,貌似在国外大部分工程项目是用的 JPA 框架。
现在 Java 工程项目地架构,基本上都在转向分布式架构。分布式系统的整合,核心就是 RPC,因此许多工程项目中都引入了 RPC 框架。
RPC 框架,那时用得比较多的是 Dubbo 框架。
三、中间件
那时的 Java 合作开发,由于大部分采用了 SpringBoot,所以以前我们常用的 Tomcat、Jetty、Resin 等 Web 容器都不怎么单独部署采用了。
但是,有一个 Web 容器反而还愈加兴旺起来,这就是 Nginx。
Nginx 在 Java 工程项目合作开发里,地位是十分特殊的。它在 Java 工程项目架构里起到了两个作用:
处理静态资源请求的web容器——Nginx 在 Java 工程项目中,专门负责处理对图片、html、js、css等这类静态资源的 Http 请求。
反向代理做分发——除了做专门处理静态资源请求的 Web 容器之外,Nginx 同时还会把对 servlet、controller 等这些动态资源的请求,转发给后面的 SpringBoot 中内置的 Tomcat 容器。
反向代理这个特性,Nginx 后面会被部署上集群,Nginx 在转发请求的时候,同时也会做负载均衡的请求分发的反向代理。
如今,做架构越来越趋向分布式架构。分布式架构里,常用的通信手段,除了网络请求,就是消息队列了。
那时非主流的消息队列框架有 RabbitMQ、RocketMQ、Kafka 等。
RabbitMQ 性能虽然低一些,但是容易上手,更适合用在中小工程项目。
RabbitMQ 是 AMQP 协议的实现,而 AMQP 协议本身就是来自于金融行业的软件专家们联手制定的,十分成熟和全面,已经成了工业标准。
RabbitMQ 是 Erlang 写的,Erlang 的虚拟机对内存和 CPU 过载的保护十分成熟,也因此刻画了 Erlang 应用本身的可靠和健壮。
大工程项目、非金融工程项目,我们能在 RocketMQ、Kafka 这两者之间选择。
RocketMQ 和 Kafka 差不多 90% 的功能和概念都是相通的,只是 RocketMQ 在 Kafka 理念的基础上做了一些改进,更适用的业务场景也更广泛。
在流数据处理上,我们应该优先考虑 Kafka,原因是 Kafka 的流数据处理生态更加的完善周全。
互联网领域,非主流数据库就是MySQL。在一些传统行业,比如银行,Oracle 用得不少。
Oracle 贵,互联网工程项目地一个特点就是数据库服务器数量贼多,如果用 Oracle 的话,成本太高了。
而且我们越来越有版权意识,国家对这方面也抓得越来越紧,所以,在互联网领域基本上上都在用 MySQL。
采用 MySQL,常见的有 MHA 方案——MySQL 的高可用方案,基本上架构就是一主两从。当主机出故障了,从机就会被提升为主机。
对于高并发的架构,外置缓存不可或缺,其中最最最常见的就是 Redis。之所以我们都采用 Redis 做外置缓存,原因有三点:
Redis 本身性能十分好。
Redis 有许多数据结构去适配不同的业务缓存需求。
Redis 的集群高可用方案和分片存储的高性能方案相对成熟。
以上,就是 Java 合作开发中经常遇到的非主流控制技术辅助工具了,赶紧收藏起来吧~
