作者:章为忠

cnblogs.com/zhangweizhong/p/5173841.html

这一年,从传统软件行业进入到电商企业,算是一次转行了吧。刚开始,觉得电商网站没有什么技术含量,也没有什么门槛,都是一些现有的东西堆积木似的堆出来而已。然而,真正进入到这个行业之后,才发现并不是这样。记得有人说过,好的架构,是演化出来的。电商网站的架构也是如此,现在牛逼的电商网站,看似很复杂,很牛逼,其实也是从很小的架构,也是从没什么技术含量开始的。架构的演化过程,就是在技术团队,不断追求极致的过程。

技术架构

一般,初期的电商网站,基本就几个业务子系统,网站前台,商家前台,系统管理后台,App,M站等。业务量,也不是很大。所以,mvc + 缓存 + 数据库 。基本就搞定了。

其实,单就开发效率而言,.net mvc 的技术架构不会比LAMP 开发速度慢。所以,一些企业,为了快速推出自己的电商平台,也会采用.net 架构。

基础架构

基础架构层面。这是一个很简单的基础架构了。

1:前端网站和M站,考虑到访问量和系统的可用性,基本会采用分布式部署。通过代理服务器进行请求分发。

2:其他的业务子系统,像商家前台,和管理系统,基本上都是单机或是主从部署。

3:各个DB ,Redis 服务和 文件和图片服务,搜索引擎Solr服务等,采用主从部署。

详细架构

整个系统架构里面,还有一个比较重要的组成部分,那就是监控系统。例如:流量监控,硬件监控,系统性能监控等, 还有就是对某个页面进行监控,设置页面的其中一块进行监控等。它是提高整个平台可用性的一个重要手段,多平台,多个维度的监控,能够确保系统的可用性,一旦出现异常,特别在硬件或者性能方面出现异常,监控系统也能立刻发出警告,这样也好防范于未然。

日志系统与监控系统的解决方案

监控系统主要用于服务器集群的资源和性能监控以及应用异常和性能监控,日志管理等多维度的性能监控分析。一个完善的监控系统和日志系统对于一个系统的重要性不必我多说,总而言之就一句话,只有实时了解各系统的状态,才能保证各系统的稳定。

如上图所示,监控平台监控的范围很广,服务器性能及资源,还有应用系统的监控。每个公司都有特定的平台统一监控的需求及解决方案,但是监控平台的任务和作用基本是一致的。

日志:日志是监视程序运行的一种重要的方式,主要有两个目的:1.bug的及时发现和定位,2.显示程序运行状态。正确详细的日志记录能够快速的定位问题。同样,通过查看日志,可以看出程序正在做什么,是不是按预期的设计在执行,所以记录下程序的运行状态是必要的。这里将日志分为两种:1.异常日志,2.运行日志。

我们主要是使用log4net,将各个系统的日志,持久化记录到数据库或者文件中,以方便后续的系统异常监控和性能分析。如何集成log4net,这里不再说明。

日志记录的几个原则:

1:区分日志级别一定要区分清楚,哪些属于error,warning,info等。

2:记录错误的位置,如果是分层系统,一定要在某个层统一处理,例如,我们的mvc架构,都是在各个action中catch异常,并处理,业务层和数据库层这些地方的异常,都是catch到异常后,往上一层抛。

3:日志信息清晰准确有意义,日志尽量详细点,以方便处理。应该记录相关系统,模块,时间,操作人,堆栈信息等。方便后续处理。

监控:监控系统是一个复杂的系统平台,目前有很多的开源产品和平台。不过我们平台小,监控任务和需求少,所以基本都是自己开发,主要有这五个方面:1.系统资源,2.服务器,3.服务,4.应用异常,5.应用性能。

具体的架构图如下:

系统资源监控:监控各种网络参数和各服务器相关资源(cpu,内存,磁盘读写,网络,访问请求等),保证服务器系统的安全运营;并提供异常通知机制以让系统管理员快速定位/解决存在的各种问题。目前比较流行的应该是zabbix。

服务器监控:主要是监控各个服务器,网络节点,网关,等网络设备,的请求响应是否正常,通过定时服务,定时去ping各个网络节点设备,以确认各网络设备是否正常,,如果哪个网络设备出现异常,则发出消息提醒。

服务监控:指的是各个web服务,图片服务,搜索引擎服务,缓存服务等平台系统的各项服务是否正常运行,可以通过定时服务,每隔一段时间,就去请求相关的服务,确保平台的各项服务正常运行。

应用异常监控:目前我们平台的所有系统的异常记录,都记录在数据库中。通过定时服务,统计分析一段时间之内的异常记录。如果发现有相关重要的模块的系统异常,比如支付,下单模块,频繁发生异常,则立即通知相关人员处理,确保服务正常运行。

应用性能监控:在api接口和各应用的相关位置进行拦截和记录下程序性能(sql性能,或是 程序执行效率)。相关重要模块提供性能预警,提前发现问题。 同时统计相关监控信息并显示给开发的人员,以方便后续的性能分析。

总而言之,一个好的系统架构应该从扩展性、安全性、性能和可靠性来考虑。罗马不是一天建成的,架构适合就行,可以先行之而后优。通过渐进演化的过程,逐步是系统越来越完善。

长按订阅更多精彩▼

小型电商web架构!小而美!相关推荐

  1. 架构:小型电商Web架构

    电商网站的架构也是如此,现在牛逼的电商网站,看似很复杂,很牛逼,其实也是从很小的架构,也是从没什么技术含量开始的.架构的演化过程,就是在技术团队,不断追求极致的过程. 技术架构 一般,初期的电商网站, ...

  2. 亿级流量电商详情页系统设计与实战-小型电商架构VS大型电商架构

    一.电商详情页架构大致分析 电商网站里,大概可以说分成两种: 传统小型电商网站,主要采用页面静态化的架构方案. 大型电商网站,使用较复杂的一套架构方案,商品详情页的系统架构 -> 缓存架构 -& ...

  3. 电商详情页系统实战(2) -小型电商网站商品详情页的页面静态化架构及缺陷

    商品详情页的系统架构 => 缓存架构 => 高并发 => 高可用 电商网站里,大概可以说分成两种 小型电商 简单的一种架构方案,页面静态化的方案 大型电商 复杂的一套架构,大电商,国 ...

  4. 亿级流量电商详情页系统实战-1.小型电商网站的商品详情页的页面静态化架构以及其缺陷

    1.电商网站按规模分类 电商网站里,大概可以说分成两种: 小型电商 简单的一种架构方案,页面静态化的方案 大型电商 复杂的一套架构,大电商,国内排名前几的电商,大型的详情页架构页面静态化,全量的页面静 ...

  5. 电商总结(一)小型电商网站的架构

    又是一年年底了,这一年,从传统软件行业进入到电商企业,算是一次转行了吧.刚开始,觉得电商网站没有什么技术含量,也没有什么门槛,都是一些现有的东西堆积木似的堆出来而已.然而,真正进入到这个行业之后,才发 ...

  6. 电商总结(八)如何打造一个小而精的电商网站架构

    前面写过一些电商网站相关的文章,这几天有时间,就把之前写得网站架构相关的文章,总结整理一下.把以前的一些内容就连贯起来,这样也能系统的知道,一个最小的电商平台是怎么一步步搭建起来的.对以前的文章感兴趣 ...

  7. 如何打造一个小而精的电商网站架构?

    本文大纲: 1. 小型电商网站的架构 2. 日志与监控系统的解决方案 3. 构建数据库的主从架构 4. 基于共享存储的图片服务器架构 5. 移动M站建设 6. 系统容量预估 7. 缓存系统 一.小型电 ...

  8. 小型电商服务器平台搭建(一)

    一.阿里云小型电商服务平台架构介绍 电商平台初创之初,访问量不大,但将来可能访问量暴增,初期阶段业务模式调整频繁,对价格敏感,因此希望服务器平台架构具有良好的功能拓展性及性能伸缩性,所有平台软件最好免 ...

  9. 大型网站电商网站架构案例和技术架构的示例

    大型网站架构是一个系列文档,欢迎大家关注.本次分享主题:电商网站架构案例.从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型.除具备功能需求外,还具备一定的高性能,高可用,可伸 ...

最新文章

  1. java-简单计算器窗口
  2. 在Linux下编写运行你的第一条代码——Hello Linux
  3. appium和selenium不同与相同之处
  4. 牛客网 [编程题]数字和为sum的方法数
  5. springCloud工作笔记090---SpringCloud_redis配置多数据源_redis多数据源
  6. 29岁学java_今年29岁小学文化,想学java请各位指点怎么入手?
  7. python搜索网页特定区域内容_Python爬取练习:指定百度搜索的内容并提取网页的标题内容...
  8. LeetCode 72 编辑距离
  9. 绝对定位元素、浮动元素会生成一个块级框
  10. 【优化算法】蝗虫优化算法(GOA)【含Matlab源码 936期】
  11. 10G ocp 题库
  12. ipv6无网络访问权限可行解决方案
  13. 常用APP的OpenUrl
  14. (附源码)springboot美食分享系统 毕业设计 612231
  15. 果园大二下英方课学习姿势
  16. devm_ioremap_resource devm_ioremap 区别
  17. 多收了三五斗-PB程序员版
  18. linux 查看运行任务管理器,linux任务管理器快捷键有哪些
  19. 计算机鼓轮原理,五.汽车底盘测功机的构造及工作原理a单轮单滚筒式.ppt
  20. mybatis-plus插入效率

热门文章

  1. poj3304(线段相交问题)
  2. 0x35.数论 - 组合数学与计数
  3. EDIUS输出到文件
  4. 1047.删除字符串中的所有相邻重复项
  5. etc下没有mysql_我在linux下,安装mysql的时候,cp support-files/my-medium.cnf /etc/my.cnf找不到my-medium.cnf...
  6. 麒麟处理器是基于arm的吗_麒麟芯片是基于ARM构架,如果得不到授权华为还能活吗?...
  7. 计算机应用基础10000字论文,计算机应用基础论文
  8. oracle+块头csc,数据块转储及RDBA的转换
  9. access汇总含义_2020最新大厂内部 PHP 高级工程师面试题汇总(二)
  10. gradle平级项目引用