Java后端最全技术栈指南详解(java技术栈有哪些)

前几天,有个搞培训的朋友,和我要一份java后端目前最常用的工具和框架,正好我以前画过这样一张图,于是发给了他。虽然不是很全,但也希望得到他的夸奖。没想到…

本篇内容涵盖14个方面,涉及上百个框架和工具。会有你喜欢的,大概也会有你所讨厌的家伙。这是我平常工作中打交道最多的工具,大小公司都适用。如果你有更好的,欢迎留言补充。一、消息队列二、缓存三、分库分表四、数据同步五、通讯六、微服务七、分布式工具八、监控系统九、调度十、入口工具十一、OLT(A)P十二、CI/CD十三、问题排查十四、本地工具复制代码

一、消息队列

一个大型的分布式系统,通常都会异步化,走消息总线。 消息队列作为最主要的基础组件,在整个体系架构中,有着及其重要的作用。kafka是目前最常用的消息队列,尤其是在大数据方面,有着极高的吞吐量。而rocketmq和rabbitmq,都是电信级别的消息队列,在业务上用的比较多。2019年了,不要再盯着JMS不放了(说的就是臃肿的ActiveMQ)。

pulsar是为了解决一些kafka上的问题而诞生的消息系统,比较年轻,工具链有限。有些激进的团队经过试用,反响不错。

mqtt具体来说是一种协议,主要用在物联网方面,能够双向通信,属于消息队列范畴。

二、缓存

数据缓存是减少数据库压力的有效途径,有单机java内缓存,和分布式缓存之分。

对于单机来说,guava的cache和ehcache都是些熟面孔。

对于分布式缓存来说,优先选择的就是redis,别犹豫。由于redis是单线程的,并不适合高耗时操作。所以对于一些数据量比较大的缓存,比如图片、视频等,使用老牌的memcached效果会好的多。

JetCache是一个基于Java的缓存系统封装,提供统一的api和注解来简化缓存的使用。类似SpringCache,支持本地缓存和分布式缓存,是简化开发的利器。

三、分库分表

分库分表,几乎每一个上点规模的公司,都会有自己的方案。目前,推荐使用驱动层的sharding-jdbc,或者代理层的mycat。如果你没有额外的运维团队,又不想花钱买其他机器,那么就选前者。

如果分库分表涉及的项目不多,spring的动态数据源是一个非常好的选择。它直接编码在代码里,直观但不易扩展。

如果只需要读写分离 ,那么mysql官方驱动里的replication协议,是更加轻量级的选择。

上面的分库分表组件,都是大浪淘沙,最终的优胜品。这些组件不同于其他组件选型,方案一旦确定,几乎无法回退,所以要慎之又慎。

分库分表是小case,准备分库分表的阶段,才是重点:也就是数据同步。

四、数据同步

国内使用mysql的公司居多,但postgresql凭借其优异的性能,使用率逐渐攀升。

不管什么数据库,实时数据同步工具,都是把自己模拟成一个从库,进行数据拉取和解析。 具体来说,mysql是通过binlog进行同步;postgresql使用wal日志进行同步。

对mysql来说,canal是国内用的最多的方案;类似的databus也是比较好用的工具。

现在,canal、maxwell等工具,都支持将要同步的数据写入到mq中,进行后续处理,方便了很多。

对于ETL(抽取、清洗、转换)来说,基本上都是source、task、sink路线,与前面的功能对应。gobblin、datax、logstash、sqoop等,都是这样的工具。

它们的主要工作,就是怎么方便的定义配置文件,编写各种各样的数据源适配接口等。这些ETL工具,也可以作为数据同步(尤其是全量同步)的工具,通常是根据ID,或者最后更新时间 等,进行处理。

binlog是实时增量工具,ETL工具做辅助。通常一个数据同步功能,需要多个组件的参与,他们共同组成一个整体。

五、通讯

Java 中,netty已经成为当之无愧的网络开发框架,包括其上的socketio(不要再和我提mina了)。对于http协议,有common-httpclient,以及更加轻量级的工具okhttp来支持。

对于一个rpc来说,要约定一个通讯方式和序列化方式。json是最常用的序列化方式,但是传输和解析成本大,xml等文本协议与其类似,都有很多冗余的信息;avro和kryo是二进制的序列化工具,没有这些缺点,但调试不便。

rpc是远程过程调用的意思 ,其中,thrift、dubbo、gRPC默认都是二进制序列化方式的socket通讯框架;feign、hessian都是onhttp的远程调用框架。

对了,gRPC的序列化工具是protobuf,一个压缩比很高的二进制序列化工具。

通常,服务的响应时间主要耗费在业务逻辑以及数据库上,通讯层耗时在其中的占比很小。可以根据自己公司的研发水平和业务规模来选择。

六、微服务

我们不止一次说到微服务,这一次我们从围绕它的一堆支持框架,来窥探一下这个体系。是的,这里依然是在说spring cloud。

默认的注册中心eureka不再维护,consul已经成为首选。nacos、zookeeper等,都可以作为备选方案。其中nacos带有后台,比较适合国人使用习惯。

熔断组件,官方的hystrix也已经不维护了。推荐使用resilience4j,最近阿里的sentinel也表现强劲。

对于调用链来说,由于OpenTracing的兴起,有了很多新的面孔。推荐使用jaeger或者skywalking。spring cloud集成的sleuth+zipkin功能稍弱,甚至不如传统侵入式的cat。

配置中心是管理多环境配置文件的利器,尤其在你不想重启服务器的情况下进行配置更新。目前,开源中做的最好的要数apollo,并提供了对spring boot的支持。disconf使用也较为广泛。相对来说,spring cloud config功能就局限了些,用的很少。


网关方面,使用最多的就是nginx,在nginx之上,有基于lua脚本的openrestry。由于openresty的使用非常繁杂,所以有了kong这种封装级别更高的网关。

对于spring cloud来说,zuul系列推荐使用zuul2,zuul1是多线程阻塞的,有硬伤。spring-cloud-gateway是spring cloud亲生的,但目前用的不是很广泛。

七、分布式工具

大家都知道分布式系统zookeeper能用在很多场景,与其类似的还有基于raft协议的etcd和consul。

由于它们能够保证极高的一致性,所以用作协调工具是再好不过了。用途集中在:配置中心、分布式锁、命名服务、分布式协调、master选举等场所。

对于分布式事务方面,则有阿里的fescar工具进行支持。但如非特别的必要,还是使用柔性事务,追寻最终一致性,比较好。

八、监控系统

监控系统组件种类繁多,目前,最流行的大概就是上面四类。

zabbix在主机数量不多的情况下,是非常好的选择。

prometheus来势凶猛,大有一统天下的架势。它也可以使用更加漂亮的grafana进行前端展示。

influxdata的influxdb和telegraf组件,都比较好用,主要是功能很全。

使用es存储的elkb工具链,也是一个较好的选择。我所知道的很多公司,都在用。

九、调度

大家可能都用过cron表达式。这个表达式,最初就是来自linux的crontab工具。

quartz是java中比较古老的调度方案,分布式调度采用数据库锁的方式,管理界面需要自行开发。

elastic-job-cloud应用比较广泛,但系统运维复杂,学习成本较高。相对来说,xxl-job就更加轻量级一些。中国人开发的系统,后台都比较漂亮。

十、入口工具

为了统一用户的访问路口,一般会使用一些入口工具进行支持。

其中,haproxy、lvs、keepalived等,使用非常广泛。

服务器一般采用稳定性较好的centos,并配备ansible工具进行支持,那叫一个爽。

十一、OLT(A)P

现在的企业,数据量都非常大,数据仓库是必须的。

搜索方面,solr和elasticsearch比较流行,它们都是基于lucene的。solr比较成熟,稳定性更好一些,但实时搜索方面不如es。

列式存储方面,基于Hadoop 的hbase,使用最是广泛;基于LSM的leveldb写入性能优越,但目前主要是作为嵌入式引擎使用多一些。

tidb是国产新贵,兼容mysql协议,公司通过培训向外输出dba,未来可期。

时序数据库方面,opentsdb用在超大型监控系统多一些。druid和kudu,在处理多维度数据实时聚合方面,更胜一筹。

cassandra在刚出现时火了一段时间,虽然有facebook弃用的新闻,但生态已经形成,常年霸占数据库引擎前15名。

十二、CI/CD

为了支持持续集成和虚拟化,除了耳熟能详的docker,我们还有其他工具。

jenkins是打包发布的首选,毕竟这么多年了,一直是老大哥。当然,写Idea的那家公司,还出了一个叫TeamCity的工具,操作界面非常流畅。

sonar(注意图上的错误)不得不说是一个神器,用了它之后,小伙伴们的代码一片飘红,我都快被吐沫星子给淹没了。

对于公司内部来说,一般使用gitlab搭建git服务器。其实,它里面的gitlab CI,也是非常好用的。

十三、问题排查

java经常发生内存溢出问题。使用jmap导出堆栈后,我一般使用mat进行深入分析。

如果在线上实时分析,有arthas和perf两款工具。

当然,有大批量的linux工具进行支持。比如下面这些:

《Linux上,最常用的一批命令解析(10年精选)》

十四、本地工具

本地使用的jar包和工具,那就多了去了。下面仅仅提一下最最常用的几个。

数据库连接池方面,国内使用druid最多。目前,有号称速度最快的hikari数据库连接池,以及老掉牙的dbcp和c3p0。

json方面,国内使用fastjson最多,三天两头冒出个漏洞;国外则使用jackson多一些。它们的api都类似,jackson特性多一些,但fastjson更加容易使用。

声明:本文内容整理自网络,观点仅代表原作者本人,投稿号仅提供信息发布服务。如有侵权,请联系管理员。

(0)
上一篇 2022年10月1日 09:37
下一篇 2022年10月1日 09:38

热点推荐

  • 踩脚袜袜子包外面还是里面

    冬天很多女生会穿那种丝袜样式的带绒打底裤,这样穿羽绒服、毛绒裙子会非常好看,而且也不会显得臃肿,里面的绒也能很好地保暖腿部。这种袜子有踩脚的和连脚的,很多人都会一样买上一两条,适合不同的时候穿。踩脚的因为不会包住整个脚,所以还是需…

    热点 2022年10月21日
    156
  • 北上广深,真有那么可怕吗??

    你相信一见钟情吗,那我对上海这个魔都便是一见钟情。 说不出来具体的理由,反正就是铁了心的做个沪飘。 生活成本高,离家距离远。 我躺在出租房的床上,深深的叹了口气,有点欣慰,也有点感叹。 上海啊,我终于来了。 沪飘的日子和绝大多数的…

    热点 2023年7月5日
    119
  • 如何保护好我们的肝脏

    肝脏是人体的重要器官,其健康状态决定了人体健康。肝脏是人体中的解毒器官,它参与体内有毒物质的代谢,有解毒功能。因此,肝脏对人体健康具有十分重要的作用。但是大家都不知道的是,由于现在人们生活方式的改变,很多人都是吃得多了,也就没有那…

    热点 2022年10月24日
    152
  • 仅40岁,奥运冠军杨威需要终身佩戴呼吸机!这是为何,医生告诉你

    诚邀您点击一下“关注”,每天接收精彩内容、看到不一样的故事 杨威,这个名字对于我们体操迷来说,无疑是一个传奇。他曾经两次夺得奥运会男子全能冠军,是我们体操史上的第一人。他的风采和成就,曾经激励了无数人的梦想和奋斗。 然而,不幸的是…

    热点 2023年10月23日
    110
  • 美国要求来自中国的旅客在出发前接受检测,外交部回应

    1月13日,外交部发言人汪文斌主持例行记者会。 有记者提问,据报道,美国务院发言人称,美要求来自中国的旅客在出发前接受检测,原因在于中国国内疫情蔓延,且中方报告的流行病学和病毒基因序列数据不够充分、缺乏透明。中方对此有何评论? 图…

    热点 2023年3月17日
    127
  • 打印机脱机了怎么重新连接(打印机脱机怎么解决)

    相信很多人在使用打印机的过程中都遇到过打印机提示脱机打印的情况,这由好几种原因造成,有些简单原因可能一部分朋友会解决,有些原因可能就不太懂了,那么今天就来讲一下打印机提示脱机的问题解决办法。 一、打印机没开机、数据线松动。这是最简…

    2022年10月8日 热点
    173
  • 海珠疫情源头在哪里(广州海珠疫情源头)

    近期,广州也是本土疫情频发,多个区都有阳性病例发现。据最新消息,10月23日发现的海珠疫情,发生在人口众多的城中村,同时全市也有相当比例的人口在海珠区居住、通行、工作,这些因素都给本次疫情处置带来了相当大的挑战。那么,海珠疫情源头…

    热点 2022年10月26日
    164
  • 天赐的声音第四季定档什么时候 天赐的声音第四季嘉宾阵容都有谁

    天赐的声音第四季于今日官宣定档,许多小伙伴还不知道具体什么时候播,下面就一起来看看详细的介绍吧。 1、播出时间 《天赐的声音第四季》将于4月28日起每周五22:00播出。 2、嘉宾阵容 伯远、胡彦斌、吉克隽逸、刘柏辛、容祖儿、王赫…

    热点 2023年5月8日
    121
  • 女子家中进蜜蜂 半小时被筑超大蜂巢 背后的真相让人始料未及

    近日,浙江衢州发生了一件让人惊讶的事件:大批蜜蜂突然飞进一户居民家中筑巢。现场恐怖的视频引发了网友们的热议和关注。 根据视频显示,一间厨房的窗户上被蜜蜂筑起了超大的蜂巢,密密麻麻的一片让人毛骨悚然。屋内还时不时有蜜蜂飞进来。房主王…

    热点 2023年6月14日
    111
  • 会计专业论文选题方向哪个好写(会计专业论文)

    今天,我想和大家分享一些关于会计专业论文以及会计专业论文选题方向哪个好写的问题。以下是小编对这个问题的总结。让我们看一看。 本科会计专业毕业论文精选? 会计资讯质量直接影响着经营者、投资人和社会公众的利益,进而影响着整个社会的经济…

    热点 2023年4月16日
    144

发表回复

登录后才能评论