技术选型因素及示例

技术选型

参考资料

  • 基础设施选型
    • 云平台或 IDC (互联网数据中心)
    • 编程语言 - JAVA / Python
    • 数据库 - MySQL / Oracle / MongoDB
  • 框架和库选型
    • 前后端开发框架 - springboot / springcloud
    • 核心类库 - JDK 版本
  • 中间件选型
    • 负载均衡 - Nginx / HAproxy
    • 消息中间件 - RabbitMQ / Kafka / RocketMQ
    • 缓存中间件 - Redis / Memcached
  • 第三方服务选型
    • 短信
    • 第三方消息推送 - 微信、公众号、APP

影响因素

  • 项目因素
    • 项目规模
    • 重要程度
    • 时间要求
  • 团队因素
    • 开发人员技术栈
    • 最熟悉的技术
  • 技术因素
    • 易用性、可维护性、扩展性、性能
    • 技术成熟度
    • 社区活跃度
    • 框架匹配度
  • 其他因素
    • 许可协议问题
    • 版权问题

项目示例

1、平安证券量盈策略系统
  • 项目因素
    • 时间急迫
    • 功能最小化版本上线
    • 持续迭代更新
  • 团队因素
    • 后端开发人员少,以 java 为主要开发语言
    • 前端开发人员没有,后端兼顾开发前端功能
  • 技术因素
    • 要求能快速开发
    • 支持持续快速迭代
    • 易于接入第三方库
技术选型
选项可选方案方案比较最终方案
前端vue、react项目组成员对 vue 掌握度较高,且国内使用 vue 的较多,资料齐全
react 主要国外使用较多,没有前端开发不太适合
vue
后端springboot、springcloud、mybatis、hibernate项目要求快速上线,故未加入太多微服务相关组件,使用 springboot 快速开发,项目成员对其掌握程度较高
hibernate 门槛较高,项目组成员对半自动 ORM 框架 mybatis 更熟悉
springboot、mybatis
数据库MySQL、Oracle、MongoDBMySQL 免费且开发人员对 MySQL 的相关操作较熟悉,就目前项目来看很适合使用
Oracle 收费服务,项目组成员对其掌握不是很高
MongoDB 不支持事务,且项目组成员对其掌握程度不高
MySQL
消息中间件RabbitMQ、Kafka、RocketMQ由于引入消息中间件会增加系统的复杂度,会耗费不少时间来处理相关逻辑,故暂时未引入消息中间件,后续迭代过程中有必要再加入相关组件
缓存中间件Redis、MemcachedRedis支持的数据类型丰富,Memcached 只支持简单的数据类型
Redis 支持多种集群方式,主从、哨兵、Clustor
Redis 支持持久化,宕机后重启能够进行数据恢复,Memcached 不支持持久化
项目组成员对 Redis 的了解程度较高
Redis
2、翔安法院新版送达系统
  • 项目因素
    • 项目时间不是很急迫
    • 经费充足
    • 要求服务化,支持多法院适配及服务公用
  • 团队因素
    • 后端开发人员齐备,以 java 为主,python 为辅
    • 前端有专门的开发,人员较少,前端编写模板,后端可协助前端开发
  • 技术因素
    • 微服务
    • 支持快速上手开发
    • 持续迭代更新
技术选型
选项可选方案方案比较最终方案
前端vue、react、angularjs有专门的前端开发,其对 react 较为熟悉,且能够提供组件模板,后端可根据模板协助开发前端react
后端springboot、springcloud、springcoud-stream、springcloud-gateway、zuul、springcloud-netflix、springcloud-alibaba、mybatis、hibernate要求服务化,且能快速开发
springboot 来开发服务
nacos 可同时作为注册中心和配置中心, eureka 单独作为注册中心,config 单独作为配置中心,管理分散
dubbo 为服务调用RPC框架,使用也简单,openFeign 为服务调用 HTTP 方式,请求头数据太多
springcloud-stream来处理消息
springcloud-gateway 来作为网关,与zuul类似,社区活跃
hibernate 门槛较高,项目组成员对半自动 ORM 框架 mybatis 更熟悉
springboot、mybatis、nacos、dubbo、springcloud-stream、springcloud-gateway
数据库MySQL、Oracle、MongoDBMySQL 免费且开发人员对 MySQL 的相关操作较熟悉,就目前项目来看很适合使用
Oracle 收费服务,项目组成员对其掌握度不是很高
MongoDB 不支持事务,且项目组成员对其掌握程度不高
MySQL
消息中间件RabbitMQ、Kafka、RocketMQ微服务化,提供专门的消息服务
引入MQ来进行消息处理
Kafka 需要额外的搭建 ZK 来协调管理 Kafka 集群
RocketMQ 有自己的 nameServer 来协调管理,社区活跃,且经过双11的验证,性能稳定,可直接购买其服务
RocketMQ
缓存中间件Redis、MemcachedRedis支持的数据类型丰富,Memcached 只支持简单的数据类型
Redis 支持多种集群方式,主从、哨兵、Clustor
Redis 支持持久化,宕机后重启能够进行数据恢复,Memcached 不支持持久化
项目组成员对 Redis 的了解程度较高
Redis
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值