【架构师】如何做技术选型?

简介: 技术选型无绝对优劣,关键在于“更合适”。需综合评估功能满足度、可扩展性、安全性、性能等非功能性需求,同时考量使用人数、社区活跃度、迭代速度、学习与维护成本,以及与现有技术体系的匹配度,权衡利弊后做出最优选择。

技术选型,没有最好,只有更合适。

当我们要做技术选型的时候,通常需要考虑很多因素,然后再综合对比各个因素,最终选择一个相对比较合适的技术方案。


一般需要考虑以下几个因素:


首先就是看一个工具、或者框架的功能是否能够满足业务、技术需求,这是一个大的前提,如果不能满足需求,有再多的优点都没用。而满足需求又分为多个方面,一个是当前的需求,一个是未来可能会需要的需求,所以这就需要开发者或者架构师仔细去对比各个方案的功能列表,从中选择更加适合自己团队的。


功能符合的话,其次还要看这个技术使用的人多不多,如果用的人多,那么当我们使用过程中,遇到问题的话,就能很快的找到答案。


一般来说,用的人多的技术,bug就少一些,开源社区也更加活跃一些,那么,他的更新迭代速度,以及问题的解决速度也就更快一些。这些对于生产环境中使用某个技术来说还是比较重要的。


提到bug,这就需要考虑一个技术在非功能性需求以外的一些基本要求,比如可扩展性、安全性、性能等,这些可能在短期影响不大,但是随着业务的逐渐增长,这些都可能成为瓶颈。


另外,在成本上也是需要重点考量的,成本包括很多,使用成本、学习成本、迁移成本、维护成本等等,不仅仅限于要付费的叫成本,人员的上手速度、后期的迭代维护,这些都是成本。有很多东西,用起来免费,但是学习成本很高,后期问题也多,那也并不一定是最佳选择。


还有一点也很重要,那就是引入的这项新技术或者框架,和公司内部现有技术体系的匹配度怎样?不能说全公司都用kafka,你非要用rocketmq吧?


所以说,做一个技术选型,需要在:功能性、非功能性需求、是否足够成熟、使用的人多不多、开源社区是否活跃、学习成本,使用成本,维护成本,以及和现有技术的匹配度如何。

目录
相关文章
|
7月前
|
架构师 微服务
【架构师】微服务的拆分有哪些原则?
微服务拆分需遵循七大原则:职责单一、围绕业务、中台化公共模块、按系统保障级别分离、技术栈解耦、避免循环依赖,并遵循康威定律使架构与组织匹配,提升可维护性与协作效率。
563 4
|
canal 缓存 NoSQL
【Redis系列笔记】双写一致性
本文讨论了缓存不一致问题及其后果,如价格显示错误和订单计算错误。问题主要源于并发和双写操作的异常。解决方案包括使用分布式锁(但可能导致性能下降和复杂性增加)、延迟双删策略(通过延迟删除缓存来等待数据同步)以及异步同步方法,如通过Canal和MQ实现数据的最终一致性。面试中,可以提及这些策略来确保数据库和缓存数据的一致性。
1886 1
【Redis系列笔记】双写一致性
|
7月前
|
消息中间件 存储 负载均衡
【高可用】什么是异地多活、同城容灾?
异地多活与同城容灾均为提升系统高可用的分布式架构。前者实现跨地域数据中心实时同步与故障切换,保障全球服务连续性;后者聚焦同城内快速容灾,通过高速网络实现低延迟、高可靠的数据同步与负载均衡,适用于对延迟敏感的业务场景。
379 11
|
7月前
|
存储 Java
为什么JDK 9中把String的char[]改成了byte[]?
Java 9引入“Compact String”优化字符串存储:若字符均为Latin-1编码(单字节),则用byte[]存储,节省空间;否则仍用UTF-16。通过新增`coder`字段标识编码类型,提升存储效率并保持兼容性。
215 6
|
7月前
|
消息中间件 Java 调度
深入探讨进程、线程和协程之间的区别和联系
本文深入解析进程、线程与协程的核心区别与联系,涵盖资源分配、调度机制、通信方式及性能对比。结合代码示例与实际场景,阐明三者在高并发系统中的协同应用,助你掌握现代并发编程设计精髓。(239字)
609 11
|
7月前
|
Java Spring
IDEA调出services窗口
本教程分两步指导:首先点击指定选项,然后在Templates中添加Spring Boot并应用,即可调出services窗口,快速完成配置。
430 11
|
7月前
|
存储 JSON 运维
微服务架构下的日志“捕手”:构建高效的日志收集与分析体系
微服务架构下的日志“捕手”:构建高效的日志收集与分析体系
380 8
|
7月前
|
消息中间件 NoSQL Kafka
聊聊场景题:百万人同时点赞怎么办?这个怎么回答
如今面试更重场景题,如“百万用户同时点赞”类问题,考察高并发下系统设计能力。重点在于流量削峰、数据一致、可用性与资源优化。核心思路:用Kafka削峰、Redis缓存状态与计数、异步批量同步数据库,实现高性能、高可用与最终一致性,兼顾体验与成本,体现技术选型与业务权衡能力。
339 1
|
7月前
|
Cloud Native Java API
Spring Boot 3.0 vs. 2.0
Spring Boot 3.0 带来革命性升级:全面支持 Java 17+ 与 Jakarta EE,引入原生编译、增强可观测性,推动云原生转型。相比 2.0,性能更强、启动更快、更现代。新项目应首选 3.0,老项目需逐步迁移,拥抱未来。
|
7月前
|
消息中间件 安全 Java
java消费消息且保证消息不丢失
本文介绍Java中如何安全消费消息并防止消息丢失或篡改,涵盖Kafka与RabbitMQ的消息持久化、手动确认机制及偏移量控制,强调事务处理与元数据保留,确保消息完整性与可靠性。
304 0