服务器端server
02 Jan 2017
|
Server
并发模式
- old one 同步阻塞 fork并行模式 prefork模式 进程池
- 多线程 线程池 异步
- master + worker nginx
- 单线程Reactor模式:非阻塞I/O + I/O多路复用 select/poll/epoll/kqueue
- 单线程Proactor模式 常见应用:Boost.Asio
- Actor模式 常见应用:Erlang原生提供/go Akka框架/skynet c+lua
- one loop per thread + thread pool with Reactor 常见应用:moduo
- LMAX Disruptor 无锁RingBuffer
- libco 协程异步事件驱动 同步编程、异步调用
- IOCP 异步IO
- 协程 维护上下文 greenlet coroutine goroutine 协程阻塞线程阻塞
-
router + queue + worker process
- 半同步半异步(half sync/half async) 异步io线程 + 消息队列 + 同步业务线程
- 半同步半反应堆
I/O机制
- BIO:Blocking IO 阻塞IO 一个socket套接字需要一个进程或一个线程来处理
- NIO:Nonblocking IO
基于事件驱动(epool)思想,采用Reactor模式,每个socket套接字分配一个线程,一个线程可以处理多个套接字处理的工作 - AIO:异步 IO 基于事件驱动思想,采用Proactor模式 Boost.Asio
路由
- 按属性归属
- 负载均衡 轮询、均衡、取模、一致性哈希
- 轮询、权重轮询、响应速度均衡、最少连接均衡、处理能力均衡
C10K C100K …
分布式系统
- CAP:2000年7月 由 Eric Brewer提出, 并经过他人证明, 分布式系统不能同时满足CAP:Consistency一致性、Availability 可用性(指的是快速获取数据)、Tolerance of network Parttion 分区容错性: 即使网络出现故障从而分区, 不影响系统运行。AP:放弃C,大多数分布式系统都选择此项(并不是真正放弃,而是通过其它方式实现)。
- 两段式提交2PC 一次事务首先要准备资源, 所有节点的资源都准备好后, 同时进行Commit(提交), 如果中途中断则会一起ROLLBACK(回滚), 从而实现数据一致性。
- 弱一致性(包括最终一致性)