1. 优秀的技术选型(摘选)
1.1. 缓存
- redis因为是单线程,不适合高耗时操作,对数据量比较大的缓存还是memcached比较合适
1.2. 分库分表
- sharding-jdbc,驱动层,不需要额外机器
- mycat,代理层,如果有运维团队,又舍得机器可以用这个
1.3. 数据同步
- mysql在分库分表时,要做的一个重要操作,数据迁移
- 对mysql来说,canal是国内用的最多的方案,其次databus
- canal、maxwell等支持将要同步的数据写入mq,后续处理方便
- ETL(抽取,清洗,转换),使用source,task,sink路线,常用工具datax,logstash,gobblin,sqoop等
1.4. 微服务
- 注册中心通常用 consul、nacos、eureka、zookeeper
- 熔断组件 sentinel、resilience4j、hystrix
- 调用链 jaeger、skywalking、sleuth+zipkin、cat
- 配置中心 apollo、disconf、spring-cloud-config
- 网关 nginx(openresty、kong)、zuul2、traefik
1.5. 分布式工具
- 协调工具 consul、etcd、zookeeper
- 事务 seata(前fescar)
1.6. 监控系统
- zabbix 在主机数量不多时是非常好的选择
- prometheus 最流行的配合grafana进行前端展示
- influxdata的influxdb和telegraf
- elkb使用es存储的工具链(elasticsearch、logstash、kibana、beats)同样比较流行
1.7. 调度
- quartz比较老的调度方案,分布式调度采用数据库锁的方式,界面需要自行开发
- elastic-job-cloud应用比较广泛,但系统运维复杂,学习成本高
- xxl-job国人开发,可以后台配置,学习成本较低
1.8. 入口工具
- centos + haproxy + lvs + keepalived + ansible
1.9. OLT(A)P
- 当数据量到达一定程度,需要建立数据仓库
- 搜索方面solr和elasticsearch,后者实时性更好
- 列式存储方面,基于Hadoop的hbase,使用最广泛
- tidb国产新贵,兼容mysql协议
- 时序数据库方面,opentsdb用在超大型监控系统多些,druid和kudu,在处理多维度数据实时聚合方面更胜一筹
1.10. CI/CD
- 支持持续集成和虚拟化 jenkins是打包发布首选,idea的公司还写了一个TeamCity也可参考
- gitlab搭建的git服务器中,gitlab CI也可以用
1.11. 问题排查
- 发生内存溢出,可以用jmap导出堆栈后用mat分析
- 线上实时分析可以用 arthas和perf
选自:学完这100多技术,能当架构师么?