开发技术选型
综合技术选型
存储
关系型
-
MySQL
- 连接池选择
- Druid
- HikariCP(spring默认连接池)
- 连接池选择
-
Oracle(除了政府项目,一般用不到)
-
Sqlite(客户端项目比较好用)
非关系型
-
redis
- 客户端选型
- Ridisson(98)
- RedisTemplate(80)
- Jedis(60)
- 客户端选型
-
ElesticSearch
- 客户端选型
- Spring Data ElasticSearch(95)
- bboss-elasticsearch(75)
- elasticsearch-sql(60)
- 客户端选型
数据库管理
SQL审核
- Yearning http://yearning.io/
- Archery https://archerydms.com/
binlog解析
- MyFlash
- binlog2sql
- Archery工具包也具有binlog解析能力
Percona Toolkit 工具包
Percona Toolkit 工具包是一组高级的管理 MySQL 的工具包集,可以用来执行各种通过手工执行非常复杂和麻烦的系统任务。简称 PT 工具,由 Percona 公司开发维护,是广大数据库维护人员的好帮手。
- pt-archiver:主要用于清理、归档历史数据。
- pt-duplicate-key-checker:列出并删除重复的索引和外键。
- pt-kill:杀掉符合条件的数据库连接。
- pt-online-schema-change:在线修改表结构,常用于大表 DDL 。
- pt-query-digest:分析 MySQL 日志,并产生报告,常用于慢日志分析。
- pt-table-checksum:校验主从复制一致性。
MQ
- RocketMQ(95)
- 支持延迟消息
- 吞吐量也够大
- RabbitMQ(85)
- 支持延迟消息
- 吞吐量略小(但对于一般项目足够了)
- Kafka(75)
- 不支持延迟消息
- 吞吐量大,适用于数据量很大的场景,比如:日志收集
- activeMQ
监控及链路追踪
- SkyWalking:
Skywalking是一个分布式追踪系统,可以跟踪整个分布式系统的请求流程,并记录每个组件之间的调用关系和时间消耗。Skywalking被广泛应用于微服务架构中,帮助用户快速定位分布式事务链路上的问题。 Skywalking比较适合跟踪分布式事务链路
- Prometheus
Prometheus是一个开源监控系统,可以收集并存储各种指标数据,并提供强大的查询语言和可视化界面。Prometheus被广泛应用于分布式系统监控、服务质量保障等方面。 Prometheus比较适合收集指标数据并进行分析
代码管理
- github
可能需要坐飞机,私有仓库,是需要付费的
- gitee
国内平台,企业版支持5人组队开发
- gitlib
可实现完全私有化的git管理,私密性更强
镜像管理
- dockerhub
国内镜像源:阿里云、网易云、docker官方 访问源站可能需要翻墙
- aliyun
阿里云镜像源,可构建 maven, docker, node 等私有仓库
- harbor
是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。 我之前用过的是使用其docker仓库功能,部署在服务器上,可实现私有仓库
- Nexus
Nexus 是一个私有 Maven 仓库管理器,主要用于公司内部,用于搭建私服,可实现镜像管理 也提供yum、pypi、npm、docker、nuget、rubygems 等私有仓库
Java方向
框架选型
- SpringBoot(单体架构)
- Spring Cloud Alibaba (微服务架构)
持久层框架
- MyBatis-Plus
- 好处:开发速度快、兼容MyBatis
- 缺点:个别场景的多表联查不如JPA。(但可以使用MyBatis)
分布式锁
- Redisson(95分)
分布式定时任务
- XXL-JOB(90分)
- 很流行;很好用
- Quartz(50分)
- 功能很全,但是上手难度高,新手不友好,没可视化界面
- Spring自带
- 无可视化页面
分布式事务
- Seata(95分)
- 阿里开发,很流行
线上问题排查应用程序诊断
- arthas
Arthas是一个Java诊断工具,可以实时查看应用程序的运行状态、调用堆栈、方法耗时等信息,并进行动态修改代码或者配置。Arthas被广泛应用于线上故障排查和性能优化中,同时也支持离线日志分析。 Arthas比较适合快速排查线上问题
接口文档工具
- knife4j
- swagger
- apidoc
工具类
工具类优先使用Spring自带的(稳定、基本没bug)。Spring自带的工具基本都够用,非必要不要用其他乱七八糟的工具类(不稳定、bug多)。
JSON工具
- Jackson(99)
- Spring自带,效率和稳定性都很好
- FastJson(60)
- bug多,经常爆出问题
- gson(50)
- 不流行
HTTP客户端
- WebClient
基于Reactor模型能能更优,如果是新项目推荐使用
- RestTemplate(一个同步的http客户端)
Spring早期的http客户端,是使用阻塞线程模型
- HttpRequest(80)
- hutool的,灵活性好
String工具
- Spring自带的StringUtils
Spring自带,稳定性好,能满足大多数场景,目前已知的唯一痛点是不支持 equals
- 其他:包括hutool、commons-lang3、apache-commons-lang3、apache-commons-text等
数据采集
- kettle引擎