服务器架构

服务器基本架构

  • 使用缓存改善网站性能
  • 使用应用服务器集群改善网站的并发处理能力
  • 数据库读写分离
  • 使用反向代理和CDN加速网站响应
  • 使用分布式文件系统和分布式数据库系统
  • 使用NoSQL和搜索引擎
  • 业务拆分
  • 分布式服务

参考:

分布式服务架构

[常见的网站服务器架构有哪些?](https://www.zhihu.com/question/20657269)

高性能服务器架构的基本策略

一、缓存
在服务器开发的时候,最常用到的有下面这几种硬件:CPU、内存、磁盘、网卡。
一类是时间资源,比如CPU和磁盘读写;一类是空间资源,比如内存和网卡带宽。所以当我们的服务器出现性能问题,有一个最基本的思路,就是——时间空间转换。
空间换时间:内存空间换磁盘时间,
时间换空间:MySQL InnoDB日志型数据表,以及SVN源代码存储,ZIP压缩HTML进行网络传输
缓存策略的难点
缓存清理
常见的解决这类问题有两种处理策略:
1.使用控制命令
2.使用字段判断逻辑
二、分布式
首先出现能支持分布式概念的技术是多进程
划分多个进程的架构,一般会有两种策略:
一种是按功能来划分,比如负责网络处理的一个进程,负责数据库处理的一个进程,负责计算某个业务逻辑的一个进程。
另外一种策略是每个进程都是同样的功能,只是分担不同的运算任务而已。
现在比较复杂的分布式系统,会结合这两种策略,也就是说系统既按一些功能划分出不同的具体功能进程,而这些进程又是可以平行扩展的。
在调用多进程服务的策略上,我们也会有一定的策略选择,其中最著名的策略有三个:

  1. 动态负载均衡策略;一个是读写分离策略;一个是一致性哈希策略。动态负载均衡策略,一般会搜集多个进程的服务状态,然后挑选一个负载最轻的进程来分发服务,这种策略对于比较同质化的进程是比较合适的。
  2. 读写分离策略则是关注对持久化数据的性能,比如对数据库的操作,我们会提供一批进程专门用于提供读数据的服务,而另外一个(或多个)进程用于写数据的服务,这些写数据的进程都会每次写多份拷贝到“读服务进程”的数据区(可能就是单独的数据库),这样在对外提供服务的时候,就可以提供更多的硬件资源。
  3. 一致性哈希策略是针对任何一个任务,看看这个任务所涉及读写的数据,是属于哪一片的,是否有某种可以缓存的特征,然后按这个数据的ID或者特征值,进行“一致性哈希”的计算,分担给对应的处理进程。
    分布式编程复杂度
    动态多进程fork——同质的并行任务
    多线程——能明确划的逻辑复杂的并行任务
    异步并发回调——对性能要求高,但中间会被阻塞的处理较少的并行任务
    协程——以同步的写法编写并发的任务,但是不合适发起复杂的动态并行操作。
    函数式编程——以数据流为模型的并行处理任务
    分布式数据通信
    在动态多进程中,我们往往只能通过父进程的内存提供共享的初始数据,运行中则只能通过操作系统间的通讯方式了:Socket、信号、共享内存、管道等等。
    参考:
    高性能服务器架构思路【不仅是思路】

整理大型网站架构常见的服务器知识

1.负载均衡服务器
2.web服务器
3.缓存服务器
4.消息队列服务器
5.文件服务器
6.索引服务器
7.搜索服务器
8.作业服务器
9.nosql服务器

参考:
整理大型网站架构必知必会的几个服务器知识

谷歌服务器架构

大量语言:Python,Java,C++
Google的三架马车
可信赖的存储机制GFS(Google File System)
使用MapReduce来处理数据
在BigTable里存储结构化数据

参考:

(总结)Google服务器架构图解简析

你可能感兴趣的:(服务器架构)