系统架构面试题(4)开源软件
Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。Redis是一款开源的内存数据结构存储,用作数据库、分布式缓存、消息中间件,支持多种数据结构。Redis内置了主从复制、事务以及不同级别的持久化功能,并通过Sentinel和自动分区的Cluster提供了高可用性。
Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。Redis是一款开源的内存数据结构存储,用作数据库、分布式缓存、消息中间件,支持多种数据结构。Redis内置了主从复制、事务以及不同级别的持久化功能,并通过Sentinel和自动分区的Cluster提供了高可用性。
Canal[kə’næl]是由Alibaba开发的数据同步中间件,译为水道/管道/沟渠,通过解析MySQL数据库增量日志,提供数据订阅和消费,主要使用场景:创建数据库镜像、数据库实时备份、索引构建和实时维护、按需刷新业务cache、按业务逻辑需要处理增量数据、同步构建其他数据源。相比MySQL本身的主从机制,有下面几点优势:让架构更灵活,多机房同步比较简单;异构表之间也可以同步,可以控制不同步DDL以免出现数据丢失和不一致;Canal可以实现一个表一线程,多个表多线程的同步,速度更快。
唯一ID是业务系统操作数据的重要凭据。如果是单表,采用数据表的自增主键作为唯一ID即可。在分布式和高并发场景下,数据快速增长,单表可能被拆成多表,如果使用自增主键作为唯一ID,每个表都要设置不同的增长步长,不便于数据库扩展。本文主要介绍基于数据库号段模式实现分布式ID。
你们的项目怎么使用kafka;kafa存在丢消息的情况吗,怎么解决;Kafka怎么做到高性能的;详细说说零拷贝技术。
分布式锁的实现方案;主从模式下节点宕机可能导致锁失效,Redission怎么解决的;说说Redlock算法的原理;Redlock算法有什么缺点吗;单节点Redis锁怎么实现。
说说Eureka的高可用方案;Eureka的高可用满足CAP的哪两项;如果其中一台Eureka宕机,会出现什么情况;如果客户端与Eureka失去连接,Eureka会怎么处理
说说你们的分布式ID设计方案;Snowflake算法有什么缺点;UUID不是更简单吗,为什么不用;Snowflake算法的ID太长了,有没有更短的方案;采用Redis方案的缺点是什么。