00-Java技术选型总纲

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
技术选型总纲(常见):

网关:NginxKongZuul
熔断:HystrixResilience4j
负载均衡:NginxSLBDNSF5LVSOpenRestyHAproxy

数据库:MySqlOraclepolarDBRedisMariaDBMongoDBPostgreSQLMemcacheHBaseElasticSearch
数据库中间件:DRDSMycatShardingSphere/Sharding-ProxyAtlas360)、Cobar(不维护了)
SQL审核:YearningArchery
全文检索:LuceneElasticSearchSolrHibernate Search
缓存:RedisMemCachedOsCacheEhCache
缓存客户端:Spring Data RedisJedisRedisson

ORM框架:HibernateMyBatisMyBatisPlusSpringDataJPAJOOQ

注册中心:NacosEurekaZookeeperRedisEtcdConsul
配置中心:NacosApolloSpring Cloud ConfigDisconfDiamond
限流工具:Sentinel
认证鉴权:Spring SecurityJWTShiro
消息队列:RocketMQMQCloud(搜狐)、RabbitMQActiveMQKafkaZeroMQRedisPulsar
RPC框架:Feign+RibbonDubbogrpcMotanThrift
文件系统:OSSNFSFastDFSMogileFS
爬虫框架:JsoupWebmagicCrawler4jNutch
网络框架:NettyRocketMQ+MQTTWebSocket

分布式IDUUIDSnowFlakeLeaf(美团)、TinyID(滴滴)、Uidgenerator(百度)
分布式框架:SpringCouldSpringCloudAlibabaDubboMotan
分布式存储:HDFSSwiftCeph
分布式事务:Seata
分布式任务:XXL-JOBElastic-JobQuartzSaturn
分布式追踪:SkyWalkingSpring Cloud SleuthPinpointCATzipkin
分布式日志:ElasticsearchLogstashKibanaELK)、RediskafkaFilebeat

工具整合:HutoolGuava
AI写代码:Cursor(客户端)、Copilot(插件)、Bito(插件)、CodeGPT(插件)
JSON解析:FastjsonJacksonGson
Excel解析:EasyExcelApache POIEasyPoi
图片绘制:Graphics2D
规则引擎:Easy RulesDroolsILOG JRules
模版引擎:FreemarkerThymeleaf

调试工具:ArthasJMH
代码检测:SonarSpotBugs
单元测试:JunitJacocoDiffblueMockito
接口文档:Knife4jSwaggerYApiApidocApiFox
压测工具:LoadRunnerJMeterABwebbenchMeterSphere
构建工具:MavenGradleBazel
集成部署:DockerJenkinsGitMaven
容器管理:DockerRancherK8s(Kubernetes)
系统监控:GrafanaPrometheusInfluxdbTelegrafLepus
版本发布:蓝绿部署、A/B测试、灰度发布/金丝雀发布

每一项都按照从上到下为从好到差的顺序排列技术栈,并给它们打分(满分100分)。

1.持久层框架

说明

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

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

评分

MyBatis-Plus(95)

好处:开发速度快、兼容MyBatis
缺点:个别场景的多表联查不如JPA。

JPA(60)

好处:个别场景的多表联查比较好用。
缺点:正常场景下,开发速度不如MyBatis-Plus。

MyBatis(40)

优点:可以被MyBatis-Plus依赖,与MyBatis-Plus共同使用。
缺点:开发速度慢

2.分布式框架

说明

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

评分

Spring Cloud Alibaba(95)

优点:feign调用基于http,灵活;nacos和sentinel很好用

Spring Cloud原生(80)

优点:feign调用基于http,灵活
缺点:eureka已闭源,配置中心使用不方便

Dubbo(50)

优点:基于长连接,比SpringCloud速度稍快一点儿
缺点:不够灵活,且相关的组件很少

3.分布式锁

Redisson(95分)

续期、可重入等接近完美

Zookeeper(70分)

用的比较少

MySQL(30分)

效率很低

4.分布式定时任务

XXL-JOB(90分)

很流行;很好用

PowerJob(80分)

流行度低;使用体验略差

Quartz(50分)

难用;

Spring自带(30分)

无可视化页面

5.分布式事务

Seata(95分)

阿里开发,很流行

6.MQ

RocketMQ(95)
RabbitMQ(85)
Kafka(70)

7.Redis客户端

Redisson(98)
RedisTemplate(80)
Jedis(60)

8.ElasticSearch客户端

Spring Data ElasticSearch(95)
bboss-elasticsearch(75)
elasticsearch-sql(60)

9.链路追踪

SkyWalking(90)
Zipkin(80)
Cat(60)

10.接口文档工具

knife4j(90)
swagger(75)
apidoc(60)

11.杂项

11.1 JSON工具

Jackson(99)

Spring自带,效率和稳定性都很好

FastJson(60)

bug多,经常爆出问题

gson(50)

不流行

11.2 HTTP客户端

RestTemplate(95)

Spring自带,稳定性好

HttpRequest(80)

hutool的,灵活性好


00-Java技术选型总纲
https://janycode.github.io/2020/06/13/19_技术选型/00-Java技术选型总纲/
作者
Jerry(姜源)
发布于
2020年6月13日
许可协议