当我们对一个软件系统做架构设计的时候,避不开的问题就是做技术选型,
那我们需要考量哪些因素呢
一般来说我们的一个软件系统主要会包含
1、开发语言,这个直接决定了后续很多框架的基调,
应该结合团队技术栈首先确定
2、中间件,一般做 数据存储 流转 缓存等工作
3、各种框架
三个主要的组成部分
原则
1、也是最关键的一点,法律协议是否符合公司要求
2、一般我们常考虑的是 优先满足需求 和 与当前团队技术栈吻合
找到 技术前景 与 开发周期和成本 的平衡
3、然后我们要考虑技术的性能是否能满足后续的拓展,和社区活跃度是否能保障遇到问题可以很好的解决
语言
语言的话一般分为编译语言和脚本语言
这里建议大型软件系统使用如JAVA之类的编译语言,同时某些组件化模块如AI算法可以使用如Python这种脚本语言
比如在项目过程中
举几个例子
JAVA与Go的选型
这里考虑到后端团队80%以上都是用的JAVA,
从并且技术成熟度,框架丰富程度,
资料完善程度都是因此最后选择了JAVA
中间件
中间件一般是软件系统中不同模块之间进行交互使用的
如多个系统可以使用Mysql作为数据库,使用Kafka做消息中间件
举几个例子
时序数据库的选型
Influxdb 与 TDengine
首先考虑数据库性能是否满足需求,在满足需求的基础上会继续考虑
是否有大型项目背书,使用是否方便,
集成到代码里是否简单
开源协议,商业版收费情况等等
框架
举几个例子
微服务框架的选型
spring cloud 与 Dubbo
当时首先考虑 spring cloud 有之前项目的技术资源可以复用,符合降低开发周期和成本的考虑,同时社区活跃度会更高一些,具有完善的一系列组件支撑,因此最后选择了spring cloud
2284

被折叠的 条评论
为什么被折叠?



