架构师不会架构选型,能行吗?
如果你在做选型方面的工作 , 或者想了解一些现在正在流行的技术 , 那么这篇文章正好适合你 。
本文插图
图片来自 Pexels
本篇内容涵盖 14 个方面 , 涉及上百个框架和工具 。 会有你喜欢的 , 大概也会有你所讨厌的家伙 。
这是我平常工作中打交道最多的工具 , 大小公司都适用 。 如果你有更好的 , 欢迎留言补充:
- 消息队列
- 缓存
- 分库分表
- 数据同步
- 通讯
- 微服务
- 分布式工具
- 监控系统
- 调度
- 入口工具
- OLT(A)P
- CI/CD
- 问题排查
- 本地工具
本文插图
推荐:
- 吞吐量优先选择 Kafka 。
- 稳定性优先选择 RocketMQ 。
- 物联网:VerneMQ 。
Kafka 是目前最常用的消息队列 , 尤其是在大数据方面 , 有着极高的吞吐量 。 而 RocketMQ和 RabbitMQ , 都是电信级别的消息队列 , 在业务上用的比较多 。
相比较而言 , ActiveMQ 使用的最少 , 属于较老一代的消息框架 。 Pulsar 是为了解决一些 Kafka 上的问题而诞生的消息系统 , 比较年轻 , 工具链有限 。 有些激进的团队经过试用 , 反响不错 , 但实际使用并不多 。
MQTT 具体来说是一种协议 , 主要用在物联网方面 , 能够双向通信 , 属于消息队列范畴 , 推荐使用 VerneMQ 。
缓存
本文插图
推荐:
- 堆内缓存使用默认的 Caffeine 。
- 分布式缓存采用 Redis 的 Cluster 集群模式 , 但要注意使用限制 。
对于单机来说 , Guava 的 LoadingCache 和 ehcache 都是些熟面孔 , 不过 SpringBoot 选择了 Caffeine 作为它的默认堆内缓存 , 这是因为 Caffeine 的速度比较快的原因 。
对于分布式缓存来说 , 优先选择的就是 Redis , 别犹豫 。 由于 Redis 是单线程的(6.0 支持多线程 , 但默认不开启) , 并不适合高耗时操作 。
所以对于一些数据量比较大的缓存 , 比如图片、视频等 , 使用老牌的 Memcached 效果会好的多 。
JetCache 是一个基于 Java 的缓存系统封装 , 提供统一的 API 和注解来简化缓存的使用 。 类似 SpringCache , 支持本地缓存和分布式缓存 , 也是简化开发的利器 。
分库分表
本文插图
推荐:ShardingSphere 中的 Sharding-JDBC 。
分库分表 , 几乎每一个上点规模的公司 , 都会有自己的方案 。 目前 , 推荐使用驱动层的 Sharding-JDBC(已经进入 Apache) , 或者代理层的 Mycat 。 如果你没有额外的运维团队 , 又不想花钱买其他机器 , 那么就选前者 。
如果分库分表涉及的项目不多 , Spring 的动态数据源是一个非常好的选择 。 它直接编码在代码里 , 直观但不易扩展 。
如果只需要读写分离, 那么 MySQL 官方驱动里的 Replication 协议 , 是更加轻量级的选择 。
上面的分库分表组件 , 都是大浪淘沙 , 最终的优胜品 。 这些组件不同于其他组件选型 , 方案一旦确定 , 几乎无法回退 , 所以要慎之又慎 。
推荐阅读
- 日日看点|这个表演看起来就不会有被骗钱的感觉了
- 菏泽|乐山一企业研发了一款“不会生花的泡菜坛”
- 食品|零食大人-怎样吃休闲食品才不会伤害身体革命的本钱
- 给你说个车|都不会考虑四驱,这是为什么呢?,多数人在买SUV时
- 美国|一旦美国衰落,世界会不会就此太平,专家:将有两个国家无法控制
- 骚狐君|TES史诗级让二追三!PDD复盘直言不敢看,阿水不会再装杯了
- 热点游戏|英雄联盟:PDD复盘TES让二追三,还好赢了,阿水不会再装了
- 热点游戏|还好赢了,阿水不会再装了,英雄联盟:PDD复盘TES让二追三
- 鸡蛋|为什么鸡看到鸡蛋被人类拿走了,却不会生气?
- 桃夭之华|王者峡谷出场率最低的装备,如果没有人提起,根本不会有人记起
