2019独角兽企业重金招聘Python工程师标准>>>

前言

随着互联网的快速发展,很多传统行业都开始将原有的产品互联网化移动化,这其中就涉及到对原有系统的改造,因为之前大部分时间都是在传统银行工作所以对于原先的系统设计我们也有一个套路,类似传统的SSH、LAMP这种,但是随着技术的不断快速发展,互联网高并发的架构设计也有了新的模式,本文就介绍下基本的高并发设计模式。互联网大部分系统的设计采用本文的设计模式都是可以的,但是对于一些超高并发的特殊场景的系统还是需要根据具体业务场景单独去设计的,下面我们就对高并发设计模式进行讲解。

分层

分层设计是企业应用系统中常见的设计模式,为了保证后续系统的可拆分和可复用,一般会将系统拆分为应用层、服务层、数据层,这也是传统的系统分层拆分模式。通过分层,可以更好的将一个庞大的软件系统切分为不同的部分,便于分工合作并行开发和维护。每层都是独立的,互相通过接口进行调用,各层可以根据业务情况的变化独立作出调整,只需要保证接口一致性即可。

分层比较大的挑战就是合理规划和划分每一层的边界和接口,在实施过程中禁止跃层调用。对于分层架构不是一成不变的,一般来说在实际过程中,会根据具体的情况再细化分层,应用层可以分为视图层、业务逻辑层等,服务层也可以细分为数据接口适配层、逻辑处理层等。

分层架构对网站支持高并发分布式的发展方向至关重要,所以在系统刚开始建的时候最好就要采取分层架构,这样后续分层会比较容易。

分割

分层是对系统的横向的切分,分割则是对系统纵向的切分。系统越大,分割的就会越细,例如银行系统我们会切分为核心系统、账户系统、支付系统、现金管理系统、营销系统等等,基本上你在网银或者手机银行上看到的每个功能背后基本都是一个系统去支撑,例如我们常见的手机银行里的账户交易查询,就这么一个简单的交易查询功能,对于有一定规模的银行来说,都会单建一个交易查询系统提供全渠道的查询服务。

按照这样将功能从业务层面分割以后,各个系统承载的压力自然也就下降下来,而且扩展性也会比较好。不过功能分割对于大型网站的分割粒度一般会比较小,对于小规模的公司来说一般没必要上来就分割成很多子系统,随着业务的发展再进行分割就可以。

分布式

分布式由来已久,分布式意味着可以通过增加机器完成同样的功能,机器越多,cpu资源、内存、磁盘都是随着机器的增加而线性增加,机器越多能够处理的并发访问和数据量就越大,从而能为更多的用户提供服务。

分布式架构需要考虑很多问题,并不是简单的加机器就可以了。实施分布式以后需要考虑用户会话如何管理,数据在分布式环境中如何保持数据一致性,分布式事务如何保证一致性,分布式的日志维护等都是需要考虑的问题,所以分布式设计要根据具体情况而来,不要为了分布式而分布式。

分布式方案有以下几种:

1)分布式应用和服务:将分层和分割后的应用分布式部署,这样可以提高网站性能和并发,加快开发和发布速度,还可以让不同应用交叉复用共同的应用,便于功能扩展。

2)分布式静态资源:网站的静态资源独立分布式部署,并采用独立的域名,这就是动静分离。静态资源的分布式部署可以减少应用服务器的压力,使用独立域名可以加快加载速度,也可以降低静态资源服务器的压力。

3)分布式数据和存储:大型网站处理的数据都是P级的,单台服务器无法提供这么大的存储空间,这么大的数据需要分布式存储。除了分布式文件存储,还有关系型数据库和Nosql都有分布式的部署方案。通过分布式能够提供海量的数据存储空间。

4)分布式计算:对于很多后台批量处理的任务都是采用分布式计算方案,常用的有Hadoop和MapReduce分布式计算框架。分布式计算框架内容比较多。

集群

分布式部署的应用和服务部署了很多机器后还需要将其集群化才能对外提供服务,多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。

当业务量不断增大以后,可以在集群中不断增加服务器就可以满足业务增长了,当一台服务器坏了也不会影响对外的服务提供,只是性能有所下降。

缓存

缓存是高并发系统的杀手锏,在真正有高并发需求的系统一般会设计多级缓存来减少真正的服务计算,而是直接通过缓存提供服务。像微博、朋友圈这些高QPS的系统都是采用了多级缓存的架构方案。

1)CDN:CDN供应商一般都部署在距离用户最近的网络服务商,用户的请求总是先到网络服务商,在这里缓存网站的静态资源,可以就近将静态数据返回给用户。一般来说对于电商、社交应用、新闻门户或者视频网站这些高QPS网站,都建议使用CDN来环节源系统的压力。

2)反向代理:反向代理属于网站前端架构的一部分,部署在网站的前端,当用户请求到达网站的数据中心时,最先访问到的就是反向代理服务器,这里将网站的静态资源缓存起来,这样不需要继续转发应用服务器,直接从反向代理缓存中返回就可以了。

3)本地缓存:对于应用服务器被访问的高热点数据,应用程序可以在服务器内存中缓存这些热点数据,这样就不需要访问服务器磁盘或者数据库了,能够将内存中的热点数据直接返回。

4)分布式缓存:很多系统数据量非常大,光靠本地缓存可能内存空间不够,这时候就可以考虑使用分布式缓存了,常用的分布式缓存有redis、memcache这些key-value分布式缓存,这些分布式缓存一般也都提供了集群版本,能够做到很好的高可用和高性能。

异步

异步也是处理高并发的一把利器,也是处理解耦的手段之一,业务系统之间的消息传递不是同步调用,而是将一个业务操作分为多个阶段,每个阶段之间通过共享数据的方式异步执行。

在单一服务器内部可通过多线程共享队列的方式实现异步,处在业务操作前面的线程将输出的内容写入队列,后面的处理线程从队列中取出数据进行处理;在分布式系统中,多个服务器集群通过分布式消息队列实现异步。

对于简单的异步实现可以通过内存队列来实现,对于需要高可用和高并发的系统一般来说都依靠商用的消息队列中间件产品,Websphere MQ、Rabbit MQ、Rocket MQ等都是比较好的消息中间件产品。

冗余

为了保证系统的高可用,我们一般会对服务器和数据都进行冗余备份,这样可以保证在服务器宕机的情况下系统依然可以保证提供服务。

访问和负载很小的应用服务也必须部署至少两台服务器组成一个集群,就是为了通过冗余来实现高可用。数据库要定期进行全量备份,每天还要进行增量备份,防止数据库服务器出现异常导致数据丢失,对于实时的数据备份可以通过数据库自带的日志来进行恢复。

总结

上面介绍的这些就是常用的一些高并发的设计模式,其中每一条都值得深入的研究,本文只是介绍了高并发设计时需要考虑的设计方案简介,可以通过这些方案缓解压力提高并发性能和高可用。、

感兴趣可以加Java架构师群获取Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限 都是大牛带飞 让你少走很多的弯路的 群..号是:855801563 对了 小白勿进 最好是有开发经验

注:加群要求

1、具有工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

转载于:https://my.oschina.net/u/3959491/blog/2961433

互联网高并发架构设计模式相关推荐

  1. Java开发大型互联网高并发架构实战之原理概念分析

    JAVA大飞哥 2019-06-16 21:07:08 引言 高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11.双12,就会产生高并发.又如贴吧的爆吧,就是恶意的高并发请求, ...

  2. 互联网高并发架构的8种设计模式演化

    1.单库单应用模式 这种是最简单的模式,即一个数据一个应用服务器,一般在产品发布初期使用会比较方便,单日30万到50万PV以下一般没有问题. 2.内容分发模式 在主机中使用了静态文件缓存之后,还可以使 ...

  3. 互联网高并发架构技术实践

    一.什么是高并发 高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求. 高并发相关常用的一些指标有响应时间( ...

  4. 互联网的SEDA高并发架构

     适于互联网的SEDA高并发架构 一.前言     最近看了一篇博士毕业论文(Matthew David Welsh--An Architecture for Highly Concurrent, ...

  5. 大神级教程!300分钟撸一个基于Redis 6.0 版本的高并发架构

    刚好原先公司搞职位调整,我不太满意,赶上这波金三银四的面试浪潮,干了也有5年的后端开发了,不是大神也是有实战经验的,我就自信满满地去面了几家大厂,结果就遇到... 面试官这夺命连环12问,谁顶得住? ...

  6. 支付宝架构师眼里的高并发架构

    http://blog.csdn.net/sinat_41559116/article/details/79076063 前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动, ...

  7. 架构师眼中的高并发架构

     00 前言   高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等. 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因 ...

  8. java架构师眼中的高并发架构

    前言 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等. 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适 ...

  9. 如何估算代码量_千万级用户的大型网站,应该如何设计其高并发架构?(彩蛋)...

    目录 (1)单块架构 (2)初步的高可用架构 (3)千万级用户量的压力预估 (4)服务器压力预估 (5)业务垂直拆分 (6)用分布式缓存抗下读请求 (7)基于数据库主从架构做读写分离 (8)总结 本文 ...

最新文章

  1. 洛谷 P2468 粟粟的书架 二分(主席树+前缀和)
  2. Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器
  3. Cognizant:走向2028年将诞生的21个新工作
  4. PPT模板中的”书签”
  5. 判断一个变量类型是数组还是对象
  6. STM32开发 -- L3GD20H陀螺仪开发详解
  7. 管理本地多个SSH Key
  8. Flutter 悬浮按钮 FloatingActionButton 的详细配置使用
  9. 在Azure上的Ubuntu Docker运行SQL Server
  10. 线程八锁,同步锁的应用
  11. 如何卸载zabbix且删除
  12. ZZULIOJ 1050~1059(oj入门题)
  13. 安全防范报警系统产品质量监督检测测试中心(上海)
  14. 【毕业设计】基于STM32的智能药箱系统设计与实现 - 物联网 单片机
  15. Word文档中页眉页脚怎么设置
  16. 从降维攻击详解互联网格局体系
  17. elementui3
  18. 如何使用Google Voice接收验证码?
  19. 云服务器搭建减少物流信息成本,摩方谈物流运输:10大措施,控制物流运输成本!...
  20. 燕千云数智化业务服务平台,带来极致的客户及员工服务体验

热门文章

  1. 老梁观世界“20120713期 癌症女博士的生命箴言”
  2. ROS学习(十二):ROS URDF-model_state
  3. 敏捷 - #9 原则:持续关注卓越的技术和良好的设计 ( #9 Agile - Principle)
  4. tar:file-changed-as-we-read-it报错处理
  5. 书山有径——走进清华大学图书馆
  6. andorid手机电脑操作
  7. Redis数据持久化
  8. js,jq设置获取属性,样式
  9. (39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】
  10. 教您怎么从spring 官网下载参考文档