一文总结分离/隔离技术
概述
分离,又隔离,目地是将系统或者资源分隔开。
系统隔离的目的:在系统发生故障时,限定传播和影响范围,不至于出现雪崩效应,保证其他服务的可用性。
资源隔离,通过隔离来减少资源竞争,保障服务间不相关影响,提高性能等。
技术
常见的分离(隔离)技术包括:
读写分离
常见于数据库和缓存系统。
对于数据库而言,当单表数据量多大时,会采用主从集群模式部署,
对于缓存系统而言,当请求量过高或者缓存数据过高时,需要做读写分离部署,
线程隔离
主要是指线程池隔离,请求分类,交给不同的线程池处理。一般把业务逻辑分为核心业务和非核心业务,分别配置不同的线程池,非核心业务的问题不影响核心业务。
进程隔离
进程隔离是为保护操作系统中进程互不干扰而设计的一组不同硬件和软件的技术。百度百科
进程的隔离实现,使用虚拟地址空间。进程A的虚拟地址和进程B的虚拟地址不同,这样就防止进程A将数据信息写入进程B。
IPC,进程间通信,Inter-Process Communication,指至少两个进程或线程间传送数据或信号的一些技术或方法。
参考进程、线程和协程的区别与联系
环境隔离
一般公司都会将应用、数据库、配置、等资源按照环境隔离,确保相互直接不产生影响。
环境包括:生产PROD,开发DEV,测试FAT,UAT、压测;
动静分离
常用于前端技术。
静态页面,是指互联网架构中,几乎不变的页面(或变化频率很低),如:首页等html页面、js/css等样式文件、jpg/apk等资源文件。这些静态资源一般配套使用如下技术来加速访问:
- CDN
- Nginx
- squid/varnish
动态页面,指不同用户不同场景访问,展现都不一样的页面。一般用分层、服务化、数据库/缓存等架构。
动静分离指,静态页面与动态页面分开不同系统访问的架构设计方法。一般来说:
- 静态页面访问路径短,访问速度快,几毫秒
- 动态页面访问路径长,访问速度相对较慢(数据库的访问,网络传输,业务逻辑计算),几十毫秒甚至几百毫秒,对架构扩展性的要求更高
- 静态页面与动态页面以不同域名区分
页面静态化
页面静态化:将原本需要动态生成的站点提前生成好,使用静态页面加速技术来访问的技术。
试用场景:总数据量不大,生成静态页面数量不多的业务。
冷热分离
主从分离
前后端分离
关于前后端分离的背景和原因,在blogAPI文档管理工具略有表述。
这里再整理一遍:
- 后端实现不了复杂且完美的前端页面和样式
- 后端实现不了多客户端兼容
- 模版引擎技术并不是适用于所有页面
前后端分离,可以各司其职。
但是前后端是否一定要分离,是要看具体情况判断的。如对页面美观要求不高,如内部人员使用的管理平台,或者项目发展初期,人员不足,迭代要求足够快等情况,则可以不需要前后端分离。
内外网分离
关注分离
生产/监控分离
在线/离线分离
爬虫隔离
对于爬虫,我们既爱且憎。爱憎的原因是来自不同爬虫源。
集群隔离
引入集群的目的:解决单实例的单点故障。集群隔离,则是为了将核心服务,如秒杀服务,单独做一个集群部署,使得秒杀服务和其他服务不相互影响。
机房隔离
高并发情况下,为了实现高可用,会采用多机房部署。各个机房的服务之间是独立的,即本机房的服务只调用本机房服务,不产生跨机房调用。只有当其中一个机房发生服务器宕机时,才通过负载均衡或者DNS技术实现请求失效转移。
框架
Hystrix
参考
亿级流量网站架构核心技术-隔离术
一分钟了解互联网动静分离架构