技术选型原则

  1. 该技术能否满足功能需求和性能需求
  2. 该技术是否成熟
  3. 社区活跃度如何,用户量如何
  4. 学习和应用成本
  5. 法律风险(license问题)

以下选型均是在满足功能需求和性能需求、技术成熟、以及无法律风险的基础上,着重对比社区活跃度、学习和应用成本、技术功能。

选型示例1:

Java

Go

社区活跃度

非常活跃

活跃

学习和应用成本

一般

面向对象

支持

基于结构体

函数重载

支持

不允许

接口实现方式

显式

隐式

协程

第三方类库

默认支持

性能

一般

高,上下文切换代价小

语言生态

非常丰富,Spring生态圈

一般,工具性为主

选型示例2:

Maven

Gradle

社区活跃度

活跃

活跃

学习和应用成本

语言

XML配置

Groovy语言,灵活性高

插件

插件多

一般

选型示例3:

Vue

React

社区活跃度

活跃(star 195k)

活跃(star 187k)

学习和应用成本

低,文档清晰有序

代码风格

HTML、JS、CSS组合

JSX(all in JavaScript)

数据绑定

双向绑定

单向绑定

数据驱动视图

响应式编程

函数式编程

组件化

支持

支持

UI生态

丰富

丰富

选型示例4:

Ant Design Vue

ElementUI

社区活跃度

活跃

活跃

学习和应用成本

一般

一般

设计价值观

自然、确定性、意义感、生长性

一致、反馈、效率、可控

文档

设计原则和设计模式清晰

缺少人机交互深度

组件数量

丰富

丰富

单元测试覆盖率

87%

81%

选型示例5:

原生开发

flutter

社区活跃度

活跃

活跃

学习和应用成本

高(分别开发iOS和Android)

低(一套代码)

使用语言

Java/Kotlin,Objective-C/Swift

Dart

性能

接近原生

热重载

可热重载,较复杂

支持

选型示例6:

Nacos

Consul

Zookeeper

Eureka

社区活跃度

非常活跃

活跃

活跃

停止维护

学习和应用成本

高(Go语言)

CAP

AP/CP

CP

CP

AP

是否可用作配置中心

支持

需扩展

需扩展

不支持

雪崩保护

支持

不支持

不支持

支持

自动注销实例

支持

不支持

支持

支持

访问协议

HTTP/DNS

HTTP/DNS

TCP

HTTP

多数据中心

支持

支持

支持

支持

跨注册中心同步

支持

支持

不支持

不支持

SpringCloud集成

支持

支持

支持

支持

Dubbo集成

支持

支持

支持

不支持

选型示例7:

Redis

Memcached

社区活跃度

活跃

一般

学习和应用成本

数据类型

String、list、hash、set、zset

简单的key-value结构

持久性

支持(RDB、AOF)

不支持

分布式存储

支持集群方式水平扩展

支持分布式存储

线程/进程

单线程通信,避免不必要的上下文切换与竞争

支持多线程,可扩展

快照备份

支持

不支持

Key的Value限制

512M

1M

选型示例8:

ElasticSearch

Solr

社区活跃度

活跃(star、commit、issue)

一般(搜索趋势)

学习和应用成本

低(易于部署和使用,配置简单)

实时搜索、动态数据

性能高

IO阻塞,效率低

静态搜索

一般

对不变数据搜索,速度更快

分布式架构和高可用

内部协议支持,无需其它中间件

基于第三方组件zookeeper

查询DSL

JSON

JSON、XML等

搜索引擎框架

Lucene

Lucene

选型示例9:

RocketMQ

Kafka

RabbitMQ

社区活跃度

活跃

活跃

一般

学习和应用成本

一般

一般

开发语言

Java

Java、Scala

Erlang

可用性

高(分布式架构)

高(基于zookeeper,未来版本会去掉zookeeper)

高(集群部署)

可靠性

同步刷盘、异步刷盘

异步刷盘

同步刷盘

性能

很好,十万级 QPS

非常高,百万级QPS

一般,万级QPS

定时消息

支持

不支持

支持

事务消息

支持

不支持

不支持

顺序消息

支持

支持

不支持

消息回溯

支持

不支持

不支持

消息重试

支持

不支持

支持

死信队列

支持

不支持

支持

应用场景

订单交易、消息推送

实时计算、数据采集

吞吐量无要求

选型示例10:

MySQL

PostgreSQL

社区活跃度

活跃

活跃

学习和应用成本

使用许可

GPL

类BSD/MIT许可

实现语言

C/C++

C

存储引擎

多个存储引擎

单个存储引擎

事务(ACID)

支持

支持

非关系数据

支持JSON

支持JSON、地理空间数据等

并行处理

支持

支持

数据复制

支持

支持

架构

多线程

多进程

应用优势

快速和易用性

大型和复杂的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ronshi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值