技术栈
- JDK: saic 内部统一使用 jdk 1.8 版本
- IDE: 推荐使用 idea (eclipse 落伍了), 下载地址: https://www.jetbrains.com/idea/#chooseYourEdition
- 微服务构建: 使用 gradle 4.7 作为微服务的构建工具,(勿使用 gradle 5.x, 因为我们的jacoco配置暂不支持gradle 5.x)
- 公共组件构建: 使用 maven 3.5.x 作为公共组件的构建工具,主要用于 krpc, envconfig 等少量公共组件的构建,不用于微服务 (原因是gradle加optional依赖很麻烦,非内置功能)
- 源代码管理 git
- 打包构建 jenkins
- 仓库:nexus (仅用nexus存储少量公共组件,微服务本身构建发布都不通过nexus)
- 设计文档编写: Confluence 图: Confluence 里的 drawio 插件
- Spring 版本: 5.0.6
- Spring Boot 版本: 2.0.2以上, 所有微服务均基于spring boot开发
- RPC框架/HTTP网关: krpc (saic自己研发的)
- RPC框架底层NIO框架: netty 4
- RPC框架序列化: protobuffer 3.5
- 日志: logback
- JSON解析: jackson (推荐) 或 fastjson
- 单元测试: junit
- MOCK框架: kmock (saic自己研发的)
- 数据库数据源: druid
- 数据库访问: mybatis, bpe工程里用 bpe db 插件
- HTTP调用: RestTemplate, bpe工程里用 bpe rest 插件
- REDIS访问: 使用StringRedisTemplate操作redis (底层基于lettuce) , bpe工程里用 bpe redis 插件
- KAFKA访问:使用 KafkaTemplate 操作kafka , bpe工程里用 bpe kafka 插件
- RabbitMQ访问:使用 RabbitTemplate 操作rabbitmq , bpe工程里用 bpe rabbitmq 插件
- MONGO访问: 使用MongoTemplate, bpe工程里用 bpe mongo 插件
- 注册与发现服务: consul
- 配置服务: apollo
- 分布式调度 xxl-job 1.9.2 (准备升级到 2.x.x版本)
- 监控报警系统: kmonitor (saic自己研发的)
- 全链路跟踪: cat (暂时,目前准备开发新的系统xxx替代cat)