web框架
Spring
Spring是Web后端框架标配;唯一的缺点就是项目太庞大了,没有心情去看一下源码。开心也很重要,不开心的事情就不要做了。
配置管理
携程开源的apollo几乎是标配,维护和使用都比较方便。
消息队列
Kafka
Kafka是消息队列的标配,缺点在于不支持延时队列和优先队列。
数据量不大的时候可以用Redis Zset来做优先队列。
存储
Redis
随便搭一个Redis集群,都能支持上百GB容量,对于大多数业务而言几乎不是瓶颈了。
数据只要不是强依赖DB事务来保障一致性,能放缓存就放缓存。
DB
一个DB表最多能存多少行呢?很多10年前的教程和帖子里面说不要超过2kw行,有一定的道理。
但是现在的硬件能力大幅提升了,实际存5亿行问题都不大。但此时,改字段类型和调整索引就是高风险操作,可能导致长时间锁表。
ES
如果按业务拆分了DB和表,比如 转账用了 transfer_order_tab,支付用了 payment_order_tab;
业务上线一段时间后,PM往往会提出这样一个需求,多类订单要在一个列表展示,还需要支持各种多条件查询:比如时间,类型,金额范围。
这个时候,还用MySQL就有点不便了,一是聚合多个订单表的数据比较繁琐,二是关系型数据多条件查询和翻页性能很差。
这时可以使用ES来聚合多个订单表到一个index,提供聚合查询的功能。
比较坑的地方在于ES处理BigDecimal不够智能,如果没有手动指定index mapping,第一次插入可能被自动识别成float,后面的数据又超出的float精度,写入数据就会报错。
Databend
Databend用来做离线数据分析还是不错的,不比Hive差。存算分离的架构,能节省很多成本。
Clickhouse
Clickhouse也是用来做数据分析。
定时任务
xxljob
国产开源软件的良心之作。定时任务往往干的都是“脏活、累活”;朴实无华的xxljob比阿里宣传的哪些虚无缥缈的概念、行业黑话,强了无数倍。