大小公司都适用的架构选型工具箱(涵盖上百个组件)( 三 )


对于spring cloud来说 , zuul系列推荐使用zuul2 , zuul1是多线程阻塞的 , 有硬伤 。 spring-cloud-gateway是spring cloud亲生的 , Spring Cloud 大力支持 , 基于 Spring5.0 的新特性 WebFlux 进行开发 。 底层网络通信框架采用的是 Netty , 吞吐量高 。
七、分布式工具
大小公司都适用的架构选型工具箱(涵盖上百个组件)文章插图
大家都知道分布式系统zookeeper能用在很多场景 , 与其类似的还有基于raft协议的etcd和consul 。
由于它们能够保证极高的一致性 , 所以用作协调工具是再好不过了 。 用途集中在:配置中心、分布式锁、命名服务、分布式协调、master选举等场所 。
对于分布式事务方面 , 则有阿里的fescar工具进行支持 。 但如非特别的必要 , 还是使用柔性事务 , 追寻最终一致性 , 比较好 。
八、监控系统
推荐:prometheus + grafana + telegraf
日志收集:大量ELKB , 小量loki
大小公司都适用的架构选型工具箱(涵盖上百个组件)文章插图
监控系统组件种类繁多 , 目前 , 最流行的大概就是上面四类 。
zabbix在主机数量不多的情况下 , 是非常好的选择 。
prometheus来势凶猛 , 大有一统天下的架势 。 它也可以使用更加漂亮的grafana进行前端展示 。
influxdata的influxdb和telegraf组件 , 都比较好用 , 主要是功能很全 。
使用es存储的elkb工具链 , 也是一个较好的选择 。 我所知道的很多公司 , 都在用 。
九、调度
推荐:xxl-job
大小公司都适用的架构选型工具箱(涵盖上百个组件)文章插图
大家可能都用过cron表达式 。 这个表达式 , 最初就是来自linux的crontab工具 。
quartz是java中比较古老的调度方案 , 分布式调度采用数据库锁的方式 , 管理界面需要自行开发 。
elastic-job-cloud应用比较广泛 , 但系统运维复杂 , 学习成本较高 。 相对来说 , xxl-job就更加轻量级一些 。 中国人开发的系统 , 后台都比较漂亮 。
十、入口工具
推荐:lvs
大小公司都适用的架构选型工具箱(涵盖上百个组件)文章插图
为了统一用户的访问路口 , 一般会使用一些入口工具进行支持 。
其中 , haproxy、lvs、keepalived等 , 使用非常广泛 。
服务器一般采用稳定性较好的centos , 并配备ansible工具进行支持 , 那叫一个爽 。
十一、OLT(A)P
推荐:ES
大小公司都适用的架构选型工具箱(涵盖上百个组件)文章插图
现在的企业 , 数据量都非常大 , 数据仓库是必须的 。
搜索方面 , solr和elasticsearch比较流行 , 它们都是基于lucene的 。 solr比较成熟 , 稳定性更好一些 , 但实时搜索方面不如es 。
列式存储方面 , 基于Hadoop 的hbase , 使用最是广泛;基于LSM的leveldb写入性能优越 , 但目前主要是作为嵌入式引擎使用多一些 。
TiDB是国产新贵 , 兼容mysql协议 , 公司通过培训向外输出dba , 未来可期 。
时序数据库方面 , opentsdb用在超大型监控系统多一些 。 druid和kudu , 在处理多维度数据实时聚合方面 , 更胜一筹 。
cassandra在刚出现时火了一段时间 , 虽然有facebook弃用的新闻 , 但生态已经形成 , 常年霸占数据库引擎前15名 。
十二、CI/CD
大小公司都适用的架构选型工具箱(涵盖上百个组件)文章插图
为了支持持续集成和虚拟化 , 除了耳熟能详的docker , 我们还有其他工具 。


推荐阅读