平台各系统统计分析系统设计方案

 

    随着公司业务的快速开拓,数据库数据量极速增长,一些关键数据表的数据没有备份归档策略,在统计分析策略上也没有进行相应的优化,系统将会很不稳定,最终影响日常交易、运营业务运行,同时也对新业务的开展造成了严重制约(例如商家查询和报表)。特编写手软平台所有系统进行统计分析的基本设计规范,作为各新系统建设的建设。

    基本指导原则:

  • 分离统计库(olap)和交易库(oltp)
  • 建立相对完备的数据归档、预处理机制,定期将统计数据归档到统计分析中间表
  • 统计分析数据从中间表读取,避免从oltp都实时统计查询

1. 目前系统主要的问题及经验教训

    性能问题主要来自于后台统计、结算等操作,这些sql的代价非常庞大,也是系统性能瓶颈所在。

    系统缺少老数据的归档机制,导致一些关键表的数据量一直在增长,导致日常查询操作压力较大,影响所有查询效率。

    系统统计分析和查询操作没有预处理机制,形成中间表或临时表,应用直接查询原始表,导致数据库压力过大。

    存在查询按钮重复点击,导致同一查询同时执行,很容易导致数据库负载达到峰值。

    查询页面需求不明确,存在一些不必要的信息,导致关联查询的复杂性。应用中存在无条件的查询语句。

    业务高负载时,集中在白天。这个时段的并发查询导致整体性能下降。

2. 新系统统计分析设计基本方法

基本方法:

  • 数据归档

    对历史数据定时归档,降低在线表各表的数据量。历史数据不进行删除操作。

    用脚本定时完成统计分析数据或查询数据入临时表或中间表,降低查询的压力。

  • 数据库优化和应用设计优化(数据库扁平化)

    对数据采用分库、分区、分表方式来处理大数据处理。

    对数据库设计优化。

    对应用系统优化。

3. 数据库分离基本方法

3.1. 数据归档原则

1) 目的:

    归档包括对交易数据的归档,也包括对历史数据的归档。

  • 交易数据的归档:

    将业务表与历史数据设计成不同的表来存储数据。业务表中只保留正在处理的业务数据。业务表中保留一段时间后(视数据量和实际需求),系统定时进行归档或人工在界面操作进行归档,将业务数据转移至历史数据表。

  • 历史数据的归档

    按照统计分析或大数据量查询要求,通过定时脚本对历史数据进行归档处理以降低统计查询的数据量。

    典型场景:对历史数据,按照日报表、周报表、月报表、年报表要求进行定时处理,形成中间数据表,前台查询时候直接从中间数据表中查询数据。

2) 原因:

    对于历史交易数据如果仍然存在在交易表中不进行清理操作,随着交易数据量的增长,将影响系统业务处理性能。

3) 备注:

    归档策略依赖于统计分析、定时脚本、查询等需求。

    存放时间:电信系统一般保存6个月数据。

    历史数据归档查询:

3.2. 数据分库原则

1) 目的:

    数据库分库原则分离交易库和分析库。

2) 原因:

    OLTP系统管理当前数据,侧重于事务和查询处理,在设计上遵循E-R模型。

    OLAP系统管理大量历史数据,提供汇总和聚集机制.,用于数据统计分析和挖掘,在设计上采用星型或雪花模型和面向主题的数据库设计。

    目前系统并没有区分这两种系统,导致进行统计分析和大数据量查询时候对数据库资源有较大的占用。

3) OLAP与OLTP同步策略

    采用mysql的Master-Slave模式来实现。交易库为Master,统计库为Slave。除对统计报表相关的表进行操作外,对统计库(Slave库)的交易数据不进行任何insert、update、delete操作,需要更新相关数据,只能操作Master库。

3.3. 数据分区原则

目的:

    为了使用户的大量的数据在读写操作和查询中速度更快,利用数据库系统提供的对表和索引进行分区的技术,以改善大型应用系统的性能。

    使用分区的优点:

  • 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
  • 维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可
  • 均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;
  • 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

3.4. 数据分表原则

目的:

    把若干个存储相同类型数据的表分成几个表分表存储,在提取数据的时候,不同的用户访问不同的表,互不冲突,减少锁表的几率。

可通过一个原始目标的ID或者名称通过一定的hash算法计算出数据存储表的表名,然后访问相应的表。

3.5. 统计分析处理原则

    写脚本自动生成统计分析结果,存入结果表中,提供查询。

3.6. 数据库操作日志拦截

目的:

    利用hibernate等的interceptor机制,拦截下数据库操作日志,以便于跟踪sql语句及性能调试。

    正常情况下,拦截操作日志为关闭状态。

3.7. 中间表、临时表、视图

目的

    利用中间表和临时表或视图机制,降低统计分析或查询过程中过大sql的操作,造成对数据库排序区过多占用,提高查询速度。

4. eSales系统核心统计策略

    通过Quartz来实现每日凌晨及每月1号凌晨业务量较小时候定时调度统计分析程序,汇总每日的销售明细等统计数据,形成“产品日销售统计”、“产品月销售统计”、“销售员日销售统计”、“销售员月销售统计”几个核心的统计中间表。

eSales系统统计分析

 

电子商务系统之网络管理

  对于以“软件作为服务”的互联网公司而言,系统的可靠性、可用性、性能、安全性是互联网公司的核心竞争力之一,很大程度决定了服务质量、客户满意度。为了提升客户的服务满意度,要建立一种“主动维护”的综合运维机制,对网络及系统进行定期检测和实时监控,在用户还没有感知的情况下,及时发现网络的故障隐患并将其排除,从而保障电子商务系统的长期安全稳定运行,为客户提供满意的SLA服务。可以说有效的网络管理已不仅局限于网络层,它还面对着业务管理的需求,甚至影响着商业运行的方方面面。

  但是随着互联网公司的网络规模不断地扩展、网络类型逐渐增多,网络管理系统的作用越来越重要、也越来越复杂,数据配置、告警、统计和检测手段的不足直接影响了运维效率,排除网络故障、软件系统故障更加困难、维护成本也急剧上升,单靠日常的手工方式进行维护已经不能满足业务发展要求。通过网管系统对系统进行“主动维护”可以保证网管系统能够7×24小时对全网进行监控维护 ,满足系统高可用性、高可靠性、高性能、高安全性、高扩展性要求,同时有效降低运营成本,及时发现并排查故障,有效提升服务质量。

 

1、电子商务系统对网络管理的要求:

第一、管理对象的接入类型及系统的管理功能是水平可扩展的,随着被管理网络类型的多样化,网管系统具备管理各种类型网络的能力,而且功能实现也能够逐渐扩展。

第二、系统在处理能力方面要具有垂直可扩性。随着网络规模的不断扩大,网管系统必须满足能够管理始终处于增长态的网络的要求

第三、系统必须能够通过权限的划分,保证不同层次、不同地域的用户拥有不同层次的功能。

第四、网管系统应当具有较好的软件架构,提供较好的插件式扩展机制,以方便定制开发。对于电子商务系统核心业务功能的监控应该作为核心业务需求进行设计和开发,在规范上应当遵循网管系统的管理接口,以方便系统的集中统一管理。

第五:满足提供标准化的接口,包括JMX、SNMP等。

网管系统的功能分类:

  • 配置管理
  • 性能管理
  • 失效管理
  • 计费管理
  • 安全管理

2、开源网络管理系统解决方案

2.1、开源的网络管理平台:

Hyperic :http://www.hyperic.com/

Zenoss:http://zenoss.com/

GroundWorks:http://www.groundworkopensource.com/

OpenQRM:http://openqrm.org/

Nagios:http://nagios.org/

OpenNMS:http://www.opennms.org/

Zabbix:  http://www.zabbix.org/

以上几个提供功能相对完整的综合解决方案,也即所谓的“企业级网管软件”,其他的参考10 Great Open Source Network Tools

最佳选择:Hyperic

Hyperic HQ功能

Hyperic HQ 可以监控和管理:

  • 操作系统: AIX, HP/UX, Linux, Solaris, Windows, Mac OSX, FreeBSD
  • Web服务器: Apache, Microsoft IIS, Sun ONE Web Server
  • 应用服务器: BEA WebLogic, IBM WebSphere, JBoss, Apache Geronimo, Macromedia ColdFusion, Macromedia JRun, Microsoft .NET Runtime, Novell Silverstream, Tomcat, Caucho Resin
  • 数据库: IBM DB2, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, Sybase Adaptive Server
  • 消息中间件: ActiveMQ,Weblogic MQ
  • 微软的产品: MS Exchange,MS ActiveDirectory,.NET
  • 虚拟产品: VMWare, Citrix Metaframe
  • 应用平台: LAMP, LAM-J, J2EE, MX4J
  • 其他技术网络设备交换机,路由器等。
Hyperic HQ架构 

 

diagram-server-arch-small

diagram-agent-arch-small

2.2、开源备份管理软件

http://www.bacula.org/

http://www.amanda.org/

http://www.cleversafe.org/

最佳选择:bacula

 

3、电子商务系统建设网络管理功能思考

系统的可监控性、可维护性、易部署性是电子商务系统建设必须考虑的核心功能之一,必须提前未雨绸缪,而不是上线之后再补充和完善。

基本原则:必须实现系统的集中统一管理、数据统一备份管理。

基本思路:选定一个相对完整的管理平台,然后在此基础上进行二次开发。在系统需求分析时候就必须把对核心功能的网管监控需求、系统的数据归档及备份需求体现到核心业务需求中去,而不是作为可有可无的功能。在架构设计时候就必须对核心功能设计网管接口、对系统数据的备份归档进行统一设计考虑。这样后期运营维护时候,才能够及时发现系统故障,降低系统的风险点。所有系统的管理监控功能、数据备份应当遵循网管系统、备份系统的接口要求。

使用 vs. 开发:网管系统不应当只是停留在监控数据库、操作系统等使用层面,必须让网管系统帮助把核心业务系统的功能管理起来。核心系统的网管接口由程序员完成,但与网管系统的融合及二次开发可以考虑让系统人员来做,这样可以帮助系统人员提升其职业技能,也可以让程序员集中精力完成业务功能的实现。

怎样利用网管系统来简化软件上线部署统一的分发管理、部署管理?

 

4、参考资料

https://www.theforbingroup.com/files/TFG%20-%20Monitoring%20Whitepaper.pdf

http://www.itmanagement.com/features/10-open-source-network-tools-052407/

http://redmonk.com/cote/2007/01/16/open-platforms-in-systems-management/

http://www.openxtra.co.uk/blog/network-managements-new-wave/

 

Technorati 标签: , , , , ,