【有书共读10】《码农翻身》第三章-浪潮之巅的 Web

加密

哈希加密
  • 常见哈希加密算法:MD5、SHA、Bcrypt。
  • 彩虹表:暴力枚举来破解。
  • 彩虹表防御措施:总的思路是通过增加计算成本来提升黑客的破解难度。具体方法有:a. 加盐,盐可以是固定盐或随机盐,盐的插入位置也可以选择;b. 多次哈希,单纯的增加计算成本。
对称机密
  • 常见对称加密算法:DES、AES。
非对称机密
  • RSA。
  • 核心概念:消息(传输的内容)、消息摘要(对消息进行哈希加密后得到消息摘要)、数字签名(用 CA 的私钥对消息摘要进行机密后得到数字签名)、数字证书(消息和数字签名一起构成数字证书)、CA(证书颁发机构)。
  • 非对称加密的核心是要将公钥安全地传输到客户端,前提是操作系统或浏览器内置了受信任的根证书颁发机构的公钥,此时网站和 CA 之间就已经可以建立起安全的连接,具体步骤:
    1. 将网站公钥及其他信息加密生成消息摘要,再用 CA 的私钥加密形成数字签名,最后将消息摘要和数字签名组合成数字证书;
    2. 网站将证书传输给客户端,客户端拿到证书后用 CA 的公钥对数字签名进行解密,然后对消息进行加密与解密后获得的消息摘要进行比较,一致的话说明证书没有被篡改,获得网站的公钥。
  • 安全获得公钥后客户端就可以用网站的公钥加密对称机密的秘钥,传输给网站,只有网站能用它的私钥解密获得秘钥,之后客户端和网站就能用对称机密的方式进行通信了。
  • 机密算法计算成本:哈希加密 > 对称加密 > 非对称机密。

认证

Session
  • 传输的 sessionId 不包含用户信息,只是一个唯一标志,服务端保存这个标志和用户信息的映射,当用户登出时销毁这个映射。
Token
  • 将用户信息和其他信息(如过期时间)进行加密形成一个 token 发送给客户端,认证的时候对 token 进行节目就可以拿到用户信息,不需要再服务端存储 token 和用户信息的映射关系。

高可用

MySQL
  • 分区表:MySQL 实现,对客户端透明,处于同一个数据库中。
  • 分表:对表进行垂直拆分,分成多个表。
  • 分库:将多个表分开存储在不同的数据库。
  • 分片:根据一定的分片规则(如一致性哈希算法)对表进行水平拆分。
  • 复制,读写分离。
  • 集群,MySQL cluster。
Redis
  • 分片,哈希槽。
  • 复制,读写分离,Redis Sentinel。
  • 集群,Redis Cluster。
Nginx
  • 双机热备,利用 keepAlived。

微服务

服务治理
  • 包括服务的注册与发现,需要定期发送心跳进行健康检查。常用的服务发现工具:Eureke、Zookeeper、Consul、etcd。
服务消费
  • 从注册中心获得服务列表,利用负载均衡算法选取一个服务进行消费。
服务调用
  • REST 或 RPC。
服务熔断
  • 当服务调用超时时返回一个默认的响应。
配置中心
  • 分布式系统的配置中心。
消息总线
  • 消息队列实现。

I/O 多路复用

select 模型
  • 操作系统通知 selector 有 socket 准备好了,selector 遍历 fds,找出准备好的,阻塞读取。操作系统最多监控 1024 个 fds。
poll 模型
  • 解决了 fds 集合大小只能是 1024 的问题。
epoll 模型
  • 操作系统通知 selector 有哪些 socket 准备好了,selector 读取指定的 socket。
全部评论

相关推荐

12-05 15:39
门头沟学院 Java
正在努力学习的鼠鼠:这个博主就是主要做校招互联网招聘的,恰的就是这个流量,你问他他肯定给你列出来100条互联网的好。
点赞 评论 收藏
分享
等一个offer的灰太狼很emo:太强了,大佬,年包多少啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务