网站技术架构

《大型网站技术架构:核心原理与案例分析》笔记

高可用性

什么是可用性?

可用性(Availablility)是指服务可被有效访问的特性,不是指有用性(Usability)。算法

可以保证服务永远可用吗?

保证服务永远可用几乎是一件不可能完成的任务。数据库

实现高可用的手段

  1. 由集群提供服务,经过负载均衡手段将请求分发到具体节点上,在节点不可用时,从服务注册列表中清楚。
  2. 分级管理。高优先级的服务拥有更好和更多的资源。
  3. 超时设置。控制访问的超时,防止大量的请求即占用资源,又没法得到响应。
  4. 服务降级。对一些请求直接失败,防止机器负载太高致使机器崩溃,结果致使整个服务崩溃。

预发布和线上发布的区别

预发布和线上发布的惟一不一样是没有配置在负载均衡服务中,因此外部没法访问预发环境的机器。缓存

保证服务可用性的意义

工程师对应用作出性能的优化、代码的重构,可是未必能让人直观感觉到,也许你的领导都不知道你作这件事情的意义何在。可是,若是你的产品出现了重大故障,那么CEO都会知道你的名字。安全

伸缩性

什么是伸缩性

指系统可以经过增长(减小)自身资源规模的方式加强(减小)本身计算处理事务的能力。网络

什么是一致性Hash

在缓存服务中,会根据用户的key将数据缓存至某个缓存节点,选择节点的过程须要用到hash值。 架构

传统算法:将key的hash值模缓存节点数目,得到index,则该index对应的节点就是数据要缓存入的节点。这种方法的缺点是动态的添加、下线缓存节点时,会致使大量的缓存没法命中和缓存迁移。
一致性hash:构建一个长度为$2^{32}$的环,全部的缓存节点会散布到环中的某些位置上,须要缓存的数据根据key计算hash值后会映射到环中的某个位置,而后找到不小于该位置且最近的缓存节点,做为其数据存放的节点。在动态的添加缓存节点时,只有和它相邻的缓存节点中的数据受到影响。该方法的问题是,当添加节点时,会致使环上的缓存节点疏密不均,从而使得每一个缓存节点上的缓存数量不均匀。 负载均衡

一致性hash+虚拟节点。上述问题的解决方案是在一致性hash算法的基础上,每一个缓存节点会被当作多个虚拟节点分散到环中。因此在添加一个新的缓存节点时,会当作多个虚拟节点添加到环中,这样就防止环中缓存节点疏密不均的问题。函数

扩展性

什么是扩展性

指对现有系统影响最小的状况下,系统功能可持续扩展或提高的能力。性能

SOA是实现服务扩展性的一种方式

SOA(面向服务的设计架构)是将不一样的业务模块划分为不一样的服务,这些服务具备高内聚和低耦合的特色,经过服务发现机制,能够方便的发布新的服务以提供新的功能。优化

NoSQL是实现数据库扩展性的一种方式

修改关系型数据库的schema是困难的,而且对于稀疏性的数据而言,关系型数据库会浪费存储空间。而NoSQL能够提供列族来灵活的增减列属性,而且不要求每一个数据都具备全部的属性。

不断上新产品是互联网公司的生存本能

互联网公司不停上新产品是其生存的本能,谁能更快更好地推出更多的新产品,谁就活得更滋润,那么工程师就要作好准备应付这种局面。

网络安全

加密技术

  1. 单向散列加密。对明文进行加密,加密算法固定,可是没法经过密文解密为明文。一般用于对用户密码进行加密,加密后存入数据库。即便数据库被别人获取,也没法得到用户的明文密码,也没法经过密文密码登录用户帐户。采用加盐来防止对密文的破解。如,MD5,SHA。
  2. 对称加密。明文的加密和密文的解密采用的都是同一个秘钥。如,DES,RC。
  3. 非对称加密。明文经过公钥加密,密文经过私钥解密。私钥也能够对明文加密,用公钥解密,起到数字签名的做用。如,RSA算法。

布隆过滤器

在须要过滤大量黑名单的场景中,若是采用Hash表来存储黑名单,则须要耗费很大的存储空间。布隆过滤器则能够在较小的存储空间中实现过滤功能。布隆过滤器首先申请一个固定大小的存储空间,该空间共有n个bit,初始为0,须要加入黑名单的名字经过8个函数,映射到n个bit中的8个bit中,将这些bit置为1。若是一个名字经过上述8个函数映射到的位置都被置为1,则该名字在黑名单中。使用布隆过滤器,一个名字最多只须要占用一个字节。布隆过滤器可能会误杀,由于存在名字不在黑名单中,可是因为其它黑名单中的名字,致使其映射的位置都被置为1。

架构师

什么是好的架构师

因此最好的软件项目管理不是制订计划,组织资源,跟踪修正项目进展,对成员进行激励和惩罚,而是发掘项目组每一个成员的优秀潜能,让你们理解并热爱软件产品最终的蓝图和愿景。每一个人都是为实现自我价值而努力,不是为了领工资而工做。

事成就了人

有些企业喜欢挖优秀的人,而不是去把本身打形成一个培养优秀人才的地方。却不知:是事情成就了人,而不是人成就了事。期望优秀的人来帮本身成事,不如作成一件事让本身和参与的人都变得优秀。

相关文章
相关标签/搜索