您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > 如何设计和运营-大中型电子商务平台
如何设计和运营–大中型电子商务平台Howtodesignandmaintainalargeandmediumscalee-CommerceplatformRickie前提条件采用的技术平台Microsoft.NETFrameworkSQLServer2005/2008IISAgendaSQL、索引、数据库设计、死锁缓存Cache–提升页面加载速度/缓解DB压力异步消息处理–ServiceBrokerBatchJobs/Services系统架构ExceptionManagement/AlertSystemEntLib–企业开发类库使用with(nolock)提升查询性能select*fromtable_1with(nolock)wherecol_1='xx'with(nolock)的意思是查询时不考虑任何锁,可能脏读。虽然可能脏读,但是会带来性能的提升。仅仅在SELECT语言中使用仅仅在SELECT语句中使用NOLOCK,这些SELECT语句场合包括INNER查询,以及在INSERT语句中的SELECT使用,在连接查询下也可以使用。SELECT*FROMUsersWITH(NOLOCK)JOINUserGroupsWITH(NOLOCK)ONUsers.UserID=UserGroups.UserID索引Index大多数SQLServer表需要索引来提高数据的访问速度。如果没有索引,SQLServer要进行表格扫描读取表中的每一个记录才能找到所要的数据。重建索引-DBCCDBREINDEX为了克服数据分块带来的负面影响,需要重构表的索引,这是非常费时的,因此只能在需要时进行。可以通过DBCCSHOWCONTIG来确定是否需要重构表的索引。DBCCDBREINDX的具体用法usedatabase_namedeclare@table_idintset@table_id=object_id('Employee')dbccshowcontig(@table_id)dbccdbreindex('database_name.dbo.Employee','',90)具体用法:数据库设计表是否考虑重用?是在现有表中增加字段?还是新创建一张表?表字段是否需要冗余?Product_ID,Product_Name大表之间join操作尽量避免。表按时间分割。死锁–DeadLock检测LOCK、终止会话ID/UOW的用户进程KILL{sessionID|UOW}selecttop10req_transactionUOW,*Frommaster.dbo.syslockinfo(nolock)wherereq_spid=-2KILL'3BD5C9FA-8B56-4B15-9945-D94C2DBD364E‘孤立分布式事务(会话ID=-2)KILL73---终止指定会话ID73具体参考:缓存Cache–提升页面加载速度/缓解DB压力页面级输出缓存用户控件输出缓存数据缓存-使用Cache对象/CacheApplicationBlock客户端缓存–Cookies/ViewState页面级输出缓存%@OutputCacheDuration=60VaryByParam=*%在Server内存中保留为响应请求而发送的HTML的副本。其后再有请求时将提供缓存的输出,直到缓存到期。这样,性能有可能得到很大的提高用户控件输出缓存使用的语法与页面级输出缓存一样%@OutputCacheDuration=60VaryByParam=noneVaryByControl=CategoryDropDownList%缓存用户控件60秒,并且将针对CategoryDropDownList控件的每个不同的值创建单独的缓存条目。页面级和用户控件级输出缓存的确是一种可以迅速而简便地提高站点性能的方法数据缓存-使用Cache对象缓存的真正灵活性和强大功能是通过Cache对象提供的。使用Cache对象,可以存储任何可序列化的数据对象。Cache.Insert(EMP_NAME,“Robert,null,DateTime.Now.AddDays(1),Cache.NoSlidingExpiration);可使用企业库–CacheApplicationBlock客户端缓存–Cookie/ViewStateCookie-可以非常方便的在客户端与服务器端相互访问,不过它有数据大小限制,最大为4K,所有用它经常是保存小数据。ViewState-所有的值都是经过hash处理的。查看页面源代码,会看到ViewState的存在,一般ViewState不用来保存大的数据。前台/后台开发会区别对待。异步消息处理–ServiceBroker实现消息–可靠传递、异步处理。和MSMQ的对比分析。和BizTalk的对比分析。ServiceBroker实现发布-订阅(Publish-Subscribe)框架实现author、发布者和不同的订阅者作为ServiceBroker服务。AuthorService通过与PublisherService开始一个新的会话(conversation)发送article消息。在AuthorService发送一个实际的article消息之前,它需要事先通知PublisherService在会话中article的主题(Subject)。订阅者也是ServiceBroker服务,它将与PublisherService进行会话。订阅者首先发送请求感兴趣的主题,随后接受所有关于这一主题的已发布的article消息。BatchJobs/Services将同步业务分解为异步业务;提高响应速度;减轻server压力,提高server的吞吐量;具体实现方式:SQLServerjobWindowsServicesWindowsSchedulejob系统架构逻辑架构Server部署图DBServer–瓶颈WebServerApplicationServer(WCF)DBserverDB角色分工CoreDBServerLocalDBServerQueryDBServerDistributorDBServer如何实现DB角色分工?DBReplication蚂蚁搬家---通过job进行数据分发/迁移;ServicebrokerMessage---异步消息传递;MSMQ–消息队列;异常管理和报警ExceptionManagementExceptionApplication/LogApplication及时发现系统问题,并进行报警;Exception管理和发送;WebServer检测(1)响应时间;(2)Connection/CPU/Waittime等等;WebServer监测参数分析EnterpriseLibrary企业级的业务程序,或者是WPF、WCF或者ASP.NET应用程序,都可以考虑使用EnterpriseLibrary。缓存、加密、数据访问、异常处理、日志、策略注入、安全、验证Unity–DI容器EnterpriseLibrary相关资料主站EntLib5Developer‘sGuide---开发手册Hands-onLabs---练习手册Thanks!
本文标题:如何设计和运营-大中型电子商务平台
链接地址:https://www.777doc.com/doc-6476241 .html