• Java后端开发技术选型


    简介

    本文介绍Java后端开发的技术选型。持续更新。

    本文中的每一项都按照从上到下为从好到差的顺序排列技术栈,并给它们打分(满分100分)。我推荐使用最高分的那个,也就是第一个。

    持久层框架

    说明

    这几个框架我都用过。按开发速度来看,一个模块,如果MyBatis-Plus开发需要1天,则JPA需要2.5天,MyBatis需要4天。

    新项目基本都是用MyBatis-Plus了。

    评分

    1. MyBatis-Plus(95)
      1. 好处:开发速度快、兼容MyBatis
      2. 缺点:个别场景的多表联查不如JPA。(但可以使用MyBatis)
    2. JPA(60)
      1. 好处:个别场景的多表联查比较好用。
      2. 缺点:正常场景下,开发速度不如MyBatis-Plus。
    3. MyBatis(40)
      1. 优点:可以被MyBatis-Plus依赖,与MyBatis-Plus共同使用。
      2. 缺点:开发速度慢

    分布式框架

    说明

    现在新项目一般都用Spring Cloud Alibaba了。feign+nacos+sentinel,很舒服!

    评分

    1. Spring Cloud Alibaba(95)
      1. 优点:feign调用基于http,灵活;nacos和sentinel很好用
    2. Spring Cloud原生(80)
      1. 优点:feign调用基于http,灵活
      2. 缺点:eureka已闭源,配置中心使用不方便
    3. Dubbo(50)
      1. 优点:基于长连接,比SpringCloud速度稍快一点儿
      2. 缺点:不够灵活,且相关的组件很少

    分布式锁

    1. Redisson(95分)
      1. 续期、可重入等接近完美
    2. Zookeeper(70分)
      1. 用的比较少
    3. MySQL(30分)
      1. 效率很低

    分布式定时任务

    1. XXL-JOB(90分)
      1. 很流行;很好用
    2. PowerJob(80分)
      1. 流行度低;使用体验略差
    3. Quartz(50分)
      1. 难用;
    4. Spring自带(30分)
      1. 无可视化页面

    分布式事务

    1. Seata(95分)
      1. 阿里开发,很流行

    MQ

    1. RocketMQ(95)
      1. 支持延迟消息
      2. 吞吐量也够大
    2. RabbitMQ(85)
      1. 支持延迟消息
      2. 吞吐量略小(但对于一般项目足够了)
    3. Kafka(75)
      1. 不支持延迟消息
      2. 吞吐量大,适用于数据量很大的场景,比如:日志收集

    Redis客户端

    1. Ridisson(98)
    2. RedisTemplate(80)
    3. Jedis(60)

    ElasticSearch客户端

    1. Spring Data ElasticSearch(95)
    2. bboss-elasticsearch(75)
    3. elasticsearch-sql(60)

    链路追踪

    1. SkyWalking(90)
    2. Zipkin(80)
    3. Cat(60)

    接口文档工具

    1. knife4j(90)
    2. swagger(75)
    3. apidoc(60)

    工具类

    工具类优先使用Spring自带的(稳定、基本没bug)。Spring自带的工具基本都够用,非必要不要用其他乱七八糟的工具类(不稳定、bug多)。

    JSON工具

    1. Jackson(99)
      1. Spring自带,效率和稳定性都很好
    2. FastJson(60)
      1. bug多,经常爆出问题
    3. gson(50)
      1. 不流行

    HTTP客户端

    1. RestTemplate(95)
      1. 优点:Spring自带,稳定性好。
      2. 缺点:只能用于Spring的Web项目(gateway也可以),不能用于其他项目。
    2. Okhttp(85)
      1. 优点:稳定,性能好
      2. 缺点:易用性略低于RestTemplate;代码是Kotlin写的,不是Java。
    3. HttpClient(80)
      1. 有点:稳定,性能好
      2. 缺点:易用性较差。
    4. HttpRequest(70)
      1. 优点:hutool的,灵活性不错
      2. 缺点:hutool的东西,bug多;底层基于HttpUrlConnection,性能差。

    String工具

    1. Spring自带的StringUtils(95)
      1. Spring自带,稳定性好
    2. Apache的StringUtil(90)
      1. 稳定,但版本略复杂。
    3. Hutool的(70)
      1. 不推荐!

  • 相关阅读:
    透彻解析云原生在数字化转型中的应用实践,PaaS功不可没
    「Vue系列」欢迎传送到“Teleport”星球
    mac 13.x 打开第三方应用,提示已损坏无法打开
    深入理解“字符编码模型”
    Nacos适配达梦
    常用类和内部类总结
    Llama.cpp工具main使用手册
    Qt QDateTime计算时间差
    wechaty-puppet-whatsapp的uos协议使用中常见问题
    R语言 一元正态分布参数最大似然估计
  • 原文地址:https://blog.csdn.net/feiying0canglang/article/details/126257387