47

高性能架构模式

 5 years ago
source link: https://www.tuicool.com/articles/7ruaumi
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

点击蓝色“ 乔志勇笔记 ”关注我哟

加个“ 星标 ”,第一时间获取推送的文章哦

一、高性能数据库集群

(1)读写分离

主从复制延迟

1、写操作后的读操作指定发给数据库主服务器

2、读从机失败后再读一次主机

3、关键业务读写操作全部指向主机,非关键业务采用读写分离

分配机制

1、程序代码分装

2、中间件封装

(2)分库分表

二、高性能nosql

  • K-V 存储:解决关系数据库无法存储数据结构的问题,以 Redis 为代表。

  • 文档数据库:解决关系数据库强 schema 约束的问题,以 MongoDB 为代表。

  • 列式数据库:解决关系数据库大数据场景下的 I/O 问题,以 HBase 为代表。

  • 全文搜索引擎:解决关系数据库的全文搜索性能问题,以 Elasticsearch 为代表。

三、高性能缓存架构

1、缓存穿透

2、缓存雪崩

设计方式:后台定时更新+业务消息队列通知更新

3、缓存热点

实现方式: 针对缓存热点复制多份缓存副本

四、单服务器高性能模式 -并发模型

1、ppc (process per connection)

同步阻塞

优化:ppc + prefork

2、tpc(thread per connection)

同步阻塞

优化:tpc + prethread

小结:

ppc与tpc 适用场景 :

ppc与tpc是阻塞io/bio

常量连接海量请求情形,比如数据库,activemq 的bio模式可以用

常量连接常量请求 情形 企业内部系统

3、Reactor/Dispatcher 模式

形象描述:来了事件我通知你,你来处理

nio 同步非阻塞 ,io 多路复用统一监听事件,收到事件后分配(dispatch)给某个进程

典型实现方案:

(1)单reactor单进程/线程

IBFN3av.jpg!web

只适用于业务处理非常快速的场景,例如单 Reactor 单进程redis

(2)单reactor多线程

AnYbI3F.jpg!web

应用举例:java 的nio,消息队列设计

(3)多reactor多进程/线程

RJbEJnu.jpg!web

应用举例:多reactor多进程的nginx,多reacotr多线程的netty,memcache

(4)proactor模式

aio

形象描述:来了事件我来处理,处理完了我通知你

iAJRJnq.jpg!web

Windows 下通过 IOCP 实现了真正的异步 I/O,而在 Linux 系统下的 AIO 并不完善

海量连接海量请求

小提示:IO操作分两个阶段 1、等待数据准备好(读到内核缓存) 2、将数据从内核读到用户空间(进程空间) 一般来说1花费的时间远远大于2。 1上阻塞2上也阻塞的是同步阻塞IO 1上非阻塞2阻塞的是同步非阻塞IO,这讲说的Reactor就是这种模型 1上非阻塞2上非阻塞是异步非阻塞IO,这讲说的Proactor模型就是这种模型

五、集群高性能模式-负载均衡

(1) 架构

1、dns 负载均衡

优化:http-dns 适合cs模式,替换现有基于udp的dns协议

2、硬件负载均衡

3、软件负载均衡

lvs 或nginx

(2) 算法

轮询 、加权轮询、负载最低、性能最优、hash类

参考:李运华的从0开始学架构

近期文章:

如何开始架构设计

微服务架构————基本组件

微服务实战问题

微服务架构进阶

秒杀系统设计

分布式数据一致性理解

5种分布式锁实现的对比?

Java并发编程学习体系

java8 Stream 史上最全总结

Java 网络编程"初探"

redis 知识点总结

java 核心技术学习总结 (一)

spring中"投机取巧"地限制 用户同时登陆

如果你喜欢本文

请长按二维码,关注 乔志勇笔记

nUVryqI.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK