首先要结合具体的业务场景,不根据业务就云设计就是在耍流氓。
业务场景首先你要确定你所架构的系统服务于什么业务。假如我们现在是一个小创业公司,注册用户就20万,每天活跃用户就1万,每天单表数据量就1000,然后高峰期每秒钟并发请求最多就10。但是你要考虑到后面注册用户数达到了2000万!每天活跃用户数100万!每天单表新增数据量达到50万条!高峰期每秒请求量达到1万。
静态资源大宽带、CDN、缓存(页面缓存、对象缓存),WEB服务器缓存等N级分布式缓存,Redis、Memcached缓存集群。
动态资源纵向拆分、水平扩展
计算:多组服务器,负载均衡等技术控制流量。
存储:存储这里就比较麻烦,按照KV存储简单的资源,然后在计算部分进行整合。真的没办法做KV的,采用跨库索引来做。单机存储数量要合理,不能太多。还有就是事务性的问题,解决方案就是BASE思想或者采用日志方式。
系统按照模块功能纵向拆分,再水平扩展,抽象服务层利用各种中间件完善,优化JVM应用服务器。
消息中间件用mq解决稳定性。将耗时比较长或者耗费资源的请求排队,异步处理,减轻服务器压力增加稳定性
数据库关系型、非关系型数据库上最牛比SSD硬盘,分库分表,读写分离,读的流量多时还要增加从库提高IO性能。每秒1万请求到5台数据库上,每台数据库就承载每秒2000的请求,相应的压力也就会减少。
SQL语句避免跨表查询,优化好存储过程,此时注意存储过程利用好了是把利剑,利用不好就成为了累赘。
负载均衡负载均衡由多种实现方式,一种是在硬件上的,常用软件由F5、NetScaler、Radware和Array等商用的,但是价格较昂贵。另外一种就是软件的,常见的软件有LVS、Nginx、Apache等,它们是基于Linux系统并且开源的负载均衡策略。
简单架构图结语系统架构中需要注意的点太多,具体业务也不尽相同。实现方案也有多种,此处只提供一个思路。
码字不宜,如果对您有所帮助请点击一个小赞。
对于这个问题,先来了解下高访问量、高并发单定义及场景:我们可以直接的理解成一个服务器(TCP 服务程序的地址)它从理论上能接受多 少个并发连接,也就是并发的链接个数,同时请求同一服务器上的服务,比如同时请求百度的搜索,一个聊天室内即时消息 的同时推送等? 什么是百万级的并发亮,比如现今流行的滴滴打车,每天接单量均超过百万,司机发单,接单,系统要进行 输入、输出、推送、存储,并发量甚至让千万。
系统在高并发量下运行需消耗计算机大量的系统资源,如CPU、内存,如果并非请求或访问超出了服务器的承受能力的话,轻 则导致服务器抛弃一部分请求,重则导致服务器资源耗尽, DOWN机,甚至使整个应该系统瘫痪。所以针对高并发量进行系统设计,其系统架构设计就是重中之重。
笔者认为设计架构主要可以从下面两个方面来考虑着手:
一,服务体系硬环境优化
1,运营的服务器
如果是对于支持百万级用户并发访问的WEB服务开发设计而言,可以给单个PC服务器可以配置两个到四个高性能独立的4 核CPU,安装高新能的网卡。
如果单台服务器还是无法承载大量访问所带来的压力,所以可以采用服务器集群技术,用N台服务器进行分流,对于每次 访问采取负载均衡策略,被分配到不同的服务器来处理请求。
2, 负载均衡的硬件
一种是通过硬件来实现,直接在服务器和外部网络间安装负载均衡硬件设备,常见硬件有F5,NetScaler、Radware和 Array等商用的负载均衡器,性能上优于软件方式,但是它们是成本昂贵。
二,服务体系软环境环境优化
1,负载均衡的软件
负载均衡也可以通过软件来实现,常见的软件有LVS、Nginx、Apache等,它们都是具有基于Linux系统并且开源的负载均 衡策略,都支持用户请求的多CPU并行处理、静态页面临时文件系统存储、内存数据库支持等技术。
2,系统开发上的优化
代码编程上的优化,对于应用系统进行前端优化外,性能上还要从磁盘IO、数据库访问、业务算法等方面进行优化。比如 对大数据的实现检索优化。
3,服务器安全性配置
采用采用用户态协议栈,加入DDos攻击的防御,系统要做安全隔离,因为前端节点都是直接和用户交互,需要从系统软配 置上防范各种恶意攻击。
对于技术方案,在此,笔者也只能做个介绍性的引入,如要做详细设计,众所周知那是要出成册才能成方案。
笔者最后推荐楼主也采用阿里巴巴旗下的阿里云体系,拿来用之,目前国内市场,服务器生态链以阿里系做的最好,可以去深挖。