一、知识点补充
1. 什么是API网关
答:API网关可以看做是系统与外界联通的入口,API网关可以做一些非业务的逻辑处理,如:认证鉴权、监控、缓存和请求路由。
2. 分布式ID生成方案
答:
下面着重介绍4种方案:雪花算法、百度UidGenerator、美团Leaf和Redis。
-
雪花算法:41bit-时间戳(毫秒级) + 10bit-机器码 + 12bit-序列号
-
百度UidGenerator:在雪花算法的基础上改良。构成为:28bit-时间戳(秒级) + 22bit-WorkId(由ip和port组成) + 13bit-序列号
-
美团Leaf:在雪花算法的基础上改良。构成为:时间戳 + WorkId(由ZooKeeper生成顺序Id) + 序列号
-
Redis:利用的是incr命令自增后获取其值,作为主键。
127.0.0.1:6379> set seq_id 1 // 初始化自增ID为1
OK
127.0.0.1:6379> incr seq_id // 增加1,并返回
(integer) 2
127.0.0.1:6379> incr seq_id // 增加1,并返回
(integer) 3
3. 为什么最好使用奇数台服务器构成 ZooKeeper 集群?
答:ZooKeeper集群的容错机制是当有ZooKeeper节点宕机时,剩下的可用节点必须大于宕机节点数。
举例:
比如,我们有5台ZooKeeper机器组成的集群,如果挂掉2台,剩余3台,那么这个集群依然可以正常工作。如果是6台ZooKeeper机器组成的集群,挂掉2台,可以正常使用,但是挂掉3台后,集群就没法使用了。既然5台集群和6台集群的效果是一样的,我们为何浪费一台机器呢?
4. 提升网站性能,可用性以及并发量的方法?
答:
- 提高硬件性能,增加服务器
- 分布式系统
- 使用消息中间件
- 数据库分库分表
- 使用Redis做缓存
- CDN加速静态资源(图片、视频)
- 集群
- 连接池(线程池、数据库连接池)