zoukankan      html  css  js  c++  java
  • 【架构★我的系统架构】我的系统架构<前言>

    前言  

      之前在微博上看到网友说了这样一句话:“好的系统架构不是设计出来的,而是在实际应用过程中不断完善得来的” 。我也觉得很有道理,但是我仍然认为在系统构建之前必须要有一套合理的基础架构,否则日后的“完善”将会苦不堪言。

      一套系统架构不可能做到通用,但是我想一些基础理念必然相同,或者说存在一套通用的可扩展的基础架构。后面我会写几篇博文,来描述一下“我的架构”。

      此处附上一篇转载的博文:百万级访问量网站的技术准备工作 。此文从全局概括一套“大”系统的架构需要做好哪些准备工作,所以以此文作为本系列的前言,我想是再合适不过了。

    场景

      本人现在供职的公司是一家以O2O为核心业务的家装行业的电商公司。即从线上召集用户到线下消费,线下用户看到实物后可到线上商城下单购买。

      前台业务主要包括:O2O活动召集、线上商城、资讯门户、家装公司、案例分享、线上团购、智能手机客户端、家装论坛、会员中心、数字化装修、全站全文检索、装修问答、以及设计师、项目招标、推广联盟等一些周边的功能频道。

      后台业务主要包括:网站平台管理系统、站内统计系统、报表系统、库存物流系统

      访问量:目前网站访问量日IP十万左右,PV大概是IP的5-10倍左右,即50-100万左右。

      现状:  ①由于历史原因,现在公司开发平台为VS2003+SQL2000【够老吧】,所以升级开发工具和运行平台势在必行。

           ②当前整套系统几乎处于无架构的状态(最主要的问题在于分站模式不合理;扩展性被限制在一套CMS系统上,导致整套系统无法扩展或者说很难扩展;无缓存设计等等等等这里就不详细说明了)

           ③当前系统的性能出现瓶颈(我觉得主要原因在与 系统无缓存设计,导致在大量复杂的存储过程中多表联查;数据库设计不合理,比如没有合理的冗余设计;没有报表系统,很多统计功能都是实时统计;细节没做好,比如很多查询都是内存分页甚至没做分页;以及DBMS版本比较老等等。)

            ④公司完成首轮融资,所以业务将会有较快的发展,要求也会更高。所以对当前系统的升级改造已经迫在眉睫。

    目标

      “没有最好的架构,只有最合适的架构”这也是为什么要做上面场景的描述。本系列博文的目的并不是说我的架构有多好,这套架构是有针对性的对与我们来说最合适的架构。但是可以轻松的向“最好架构”的方向扩展也是其基础要求之一。

      整体目标:在保证系统的安全性稳定性的基础上,无障碍承压日IP50万,日IP接近50万时,可轻松扩展至承压日IP100万。并保证较低的开发、维护成本。

    合理的基础服务器架构是整个应用系统稳定、高效、安全运行的保障,需对其进行合理的规划。以下从网段划分、服务器规划、服务器安全三个方面进行详细的规划说明: 

    网段划分

    我们根据功能业务对服务器内网划分为十大网段,并可以在不同的场景下对各网段间的访问权限进行控制。



    10.1.1.*:数据库服务器网段(供核心数据库、论坛数据库等数据库服务器使用)
    10.1.2.*:核心应用网段(供会员中心、通行证、中心服务、全局缓存等核心应用服务器使用)
    10.1.3.*:商城相关网段(供商城、每日抢购、订单系统、支付系统等商城相关服务器使用)
    10.1.4.*:周边应用网段(供团购活动、装修公司、家装案例、装修问答、全站检索等周边应用服务器使用)
    10.1.5.*:第三方应用网段(供论坛等第三方应用服务器使用)
    10.1.6.*:管理系统网段(供网站管理系统、财务系统、报表系统、仓储物流系统等内部应用服务器使用)
    10.1.7.*:文件服务器网段(供图片、论坛附件、静态文件、文件上传服务等文件服务器使用)
    10.1.8.*:作业服务器网段(供数据同步、定时队列、系统监控等循环或定时执行的脚本服务器使用)
    10.1.9.*:备份服务器网段(供数据库、文件等备份服务器使用)
    10.1.10.*:网络设备网段(供F5、防火墙、路由等网络设备使用)

    服务器规划 

     

    1. 数据库服务器n台:n视数据库服务器压力逐步增加,可按需将各个模块的数据库分别部署到不同的数据库服务器。现阶段建议3台:主数据库服务器、副数据库服务器、论坛数据库服务器。数据库服务器应选用配置较高的机器,并需要做硬盘Raid等安全措施,最大限度的保证数据的安全。

    2. WEB服务器n台:n视Web服务器压力和模块独立性合理配置,可将各个模块和系统部署到不同的WEB服务器。现阶段建议5台:主站Web服务器(主要用于资讯类模块)、商城服务器、其他应用服务器(含Job Server)、论坛服务器、ERP服务器。

    3. 缓存服务器1台:提供Memcached分布式缓存服务。应选用内存较大的服务器。

    4. 文件服务器n台:提供文件上传、分发服务;并用于文件存储。n视文件服务器压力逐步增加。先阶段建议1台(IIS中分多个网站提供文件访问服务),并使用CDN全网加速。

    5. 备份服务器一台:用于数据库、程序、文件等的增量备份。

    6. 监控服务器1台:用于监控所有服务器、服务、进程、端口、应用程序的运行状态以及宽带流量。

    7. Job服务器:用于运行同步服务、异步服务、功能服务、运维脚本等Job。

    8. 其他服务器:如邮件服务器等

    9. 其他设备:如F5、防火墙、路由器、VPN等设备,按需进行配置。

    服务器安全

    服务器安全方面主要还需要技术运维的同事来进行详细的控制,这里我只做简单的描述:

    1. 通过防火墙、IPSEC、VPN等方式以白名单的形式限制各网段、IP、端口的访问权限。
    2. 每台服务器以白名单的方式开放端口,并控制端口的出、入权限。
    3. 提供监控服务,监控服务器、服务、进程、端口、应用程序的运行状态以及宽带流量等,并在出现异常的时候及时进行短信、邮件的通知。

    目录 

      下面我将分多篇博文,分别从《服务器架构》《数据库架构》《应用系统架构》《程序结构》等几个主要方面以及《分布式存储》《异步队列》《统计报表》《站内统计》等多个详细系统和细节上分别进行讲解。

      

      【架构★我的系统架构】我的系统架构<前言>

      【架构★我的系统架构】我的系统架构<服务器架构>

      【架构★我的系统架构】我的系统架构<数据库架构>

      【架构★我的系统架构】我的系统架构<应用系统架构>

      【架构★我的系统架构】我的系统架构<程序结构>

      【架构★我的系统架构】我的系统架构<分布式存储>

      【架构★我的系统架构】我的系统架构<异步队列>

      【架构★我的系统架构】我的系统架构<统计报表系统>

      【架构★我的系统架构】我的系统架构<站内统计系统>

      ... ...http://www.cnblogs.com/fmp/archive/2013/01/31/MyFramework_Start.html

  • 相关阅读:
    PAT 乙级真题 1013.组个最小数
    PAT 乙级真题 1012.D进制的A+B
    PAT 乙级真题 1011.个位数统计
    PAT 乙级真题 1010.月饼
    PAT 乙级真题 1009.1019.数字黑洞
    PAT 乙级真题 1008.锤子剪刀布
    PAT 乙级真题 1007.A除以B
    PAT 乙级真题 1006.1016.部分A+B
    C++自定义sort函数
    VS2017如何使用scanf函数
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2888135.html
Copyright © 2011-2022 走看看