看了onecan的 大型Java多用户商城系统设计开发的心得和困难:
http://www.iteye.com/topic/1119514
体会或说同感较多,由于那个帖子太长了,所以我把自己的一些心得另开一个来谈。
帖子上大家对是否使用Hibernate有很多的讨论,下面谈谈我的看法:
我自己的大型B2B和B2C网站原来也是用Hibernate,但是后来不得不换成mybatis,
第一是用Hibernate 由于它封装得太高了,很多东西是隐式进行的,经常引起问题,很难定位。毕竟凡事有利必有弊;
第二大型网站肯定不是一个数据库,这点Hibernate是很麻烦的,用Jdbc或Mybatis 可以轻松应付之,我自己写的shard分库框架目前就是支持mybatis和Jdbc Template。
另,觉得割舍不了Hibernate的iteyer,其实也是建议直接再用Hibernate,待遇到痛苦时,再换,这样体会会更深些
我的技术选型和onecan的类似,区别在于:
1.缓存:我采用ehcache+memcached结合的方式,ehcache做JVM本地缓存,memcached做进程外全局缓存,即由本地缓存和全局缓存构成系统的二级缓存;
2.数据库上,你用单数据库肯定是不行的。我的平台是划分为100多个库,早期我采用淘宝的amoeba(陈师儒兄写的)分库技术(其实是一个分库中间件,通过一台代理amoeba实现对后端mysql集群的透明化代理。后来发现问题多多,另一个是中间件方案虽然使用简单,但不够灵活,不能做多数据库事务,所以弃之。不得以自己写了一个基于Java的分库框架,即Shard,在应用层直接通过Shard操作数据库集群;
3.全文索引,我们采用Solr,不过目前想把它换成ElasticSearch,因为Solr的全文索引同步比较慢,延时是一个很大的问题,ES做得好些。
4.任务调度你这里没有讲,其实这块对于大型网站是很重要的,我是基于Quautz自己写了一个全局任务调度框架,相当于任务调度云的方式。如每天晚上汇总数据,定期迁移数据等就可以很好地使用任务调度来完成。
5.编码生成:凡是商城或应用系统,肯定是要有一个编码生成的框架,如单据号,商品编号等,要求是全局唯一,规则可自定义。这个我是基于Spring Expression写了一个全局的编码框架。称为codeman,后面我也拟把它开源出来;
6.开放平台:如果你的商城要允许多终端接入,如iphone,android,PC客户端,或者第三方,则一定要有一条服务总线,如淘宝的TOP。这个原来是用Spring MVC直接写的,后来发现新增功能太麻烦,开发效率太低了,因此我就基于Spring MVC框架的设计思路和TOP的应用模型写了一个Rop框架,这个已经开源的,参见我这个帖子:
http://www.iteye.com/topic/1121252
7.NoSQL和mySQL结合,mySQL毕竟是关系型的,对于高并发的数据,我们是放到mogonDB中的,这个数据库的压力会小很多。
8.日志的记录:大型网站的日志记录是非常重要的,是审计,问题定位的依据。原来早期,我直接把日志记录到MySQL中,日志很大,数据库压力大,后来把它直接异步到Elastic Search中,不但可以全文检索,并发性大时也没有问题;
此外,对日志编写了一些分析引擎,可以从日志中发现关键的问题,即时报警。
9.会话管理的问题:由于应用服务节点很多,因此弃用Web应用服务器本身的Session功能,直接自己编写了一个全局会话管理功能,以实现全局统一的会话管理。
10.图片服务器独立,每张图片只保存一张物理的,其实不同规格的图片动态生成并放到内存中;
11.项目采用敏捷开发,DDT,Maven等。
问题:
1.敏捷开发还没有通透,现在还没有达到自动集成,自动部署,这块是接下来的目标;
2.数据库和全文索引的同步还是一个小延时,这个小延时会造成用户的误解:在后台编辑了记录,可以列表刷新时却看不到更新,不知道大家有什么好的办法。
3.模板这块的设计还没有什么好的方案,扩展性上不足,都是预先做好让用户选择的。
分享到:
相关推荐
这种架构特别适用于大规模的互联网应用,如大型社交网络、电子商务平台、在线游戏等,这些应用往往面临海量数据处理和高并发访问的需求。 然而,分布式数据库架构的实现和管理相对复杂,需要解决数据一致性、节点间...
【大数据处理对电子商务的影响】 大数据处理是现代信息技术发展的一个重要方向,尤其在电子商务领域,它对业务运营和决策制定产生了深远影响。随着电子商务的迅速崛起,海量的数据不断涌现,包括用户的购物行为、...
电子商务环境下农产品营销策略的知识点涵盖以下几个方面: 1. 电商环境下农产品营销的必要性与机遇 随着互联网技术的发展,特别是移动互联网的普及,电子商务为农产品营销带来了新的机遇。农产品销售商通过电商平台...
CDN不仅用于网页内容加速,还广泛应用于视频直播、游戏、电子商务等多个领域。 - **CDN数据一致性如何保证** 通常采用版本控制、时间戳等机制来确保缓存内容的一致性,同时还需要定期更新缓存以反映源服务器上的...
Oracle RAC 原理浅谈 Oracle RAC(Real ...Oracle RAC 的应用场景非常广泛,包括大型数据库应用、企业级应用、电子商务应用和移动应用等。Oracle RAC 的高可用性和高性能使其become 了一种非常 popular 的选择。
三层架构适用于大型企业级应用,如电子商务、银行系统、CRM(客户关系管理)等,这些系统通常具有复杂的数据处理需求和严格的业务规则。 在实际开发中,"CodePackage"可能还包含配置文件、日志记录、异常处理等辅助...
淘宝网作为一个全球知名的大型电子商务平台,其图片存储服务的重要性不言而喻。随着业务的快速发展,淘宝网在图片服务方面面临着一系列挑战。首先,图片占据了网站流量的绝大部分,且需要根据不同的展示场景生成多种...
【商务e企业信息平台】是由中山市今科信息科技有限公司开发的一款综合性企业信息化服务产品,旨在帮助企业实现全方位的电子商务和网络营销。此平台的核心理念在于超越简单的网站制作,提供包括网站、推广、管理以及...
跨境电商,即电子商务的一种形式,主要指的是不同关境的交易主体通过电子商务平台进行交易,是国际贸易发展到一定阶段的产物。随着全球经济一体化和互联网技术的快速发展,跨境电商在国际贸易中的作用愈发凸显,它...
例如,在需要处理大量并发请求的电子商务平台、大型企业应用或者需要高可用性和负载均衡的云计算服务中,分布式系统可以确保服务的高响应速度和稳定性,同时提高数据的安全性。通过将系统部署在多个服务器上,分布式...
云计算的快速发展得益于互联网的普及,尤其是web网站和电子通信技术的广泛应用。 云计算利用了互联网提供庞大计算资源和数据中心的能力。个人用户的应用程序不必安装在本地设备上,而是运行在互联网的服务器集群中...
企业信息化的三个层面包括自动化生产控制、内部管理系统化和电子商务运营,这些都需要以流程重组为基础,以优化业务流程并有效利用信息技术。 施工企业进行流程重组的必要性主要源于两方面:一是企业资源紧张,竞争...
数据显示,计算机软件、互联网及电子商务、通信行业对网络安全人才的需求最为集中,这反映了这些行业网络安全问题的普遍性和紧迫性。同时,金融、电子制造和其他行业对网络安全人才的需求也在增长,这说明网络安全...
随着科技的发展和互联网的普及,网络营销已经成为电子商务领域中不可或缺的一部分。网络营销具有其独特的优点,如信息传递效率高、成本低、能有效避免时间与空间限制以及具有极强的交互性等。在电商平台的应用中,...
淘宝网作为中国最大的电子商务平台,其技术演进历程代表了互联网公司如何利用网络存储技术实现业务增长。以下为淘宝网技术发展的关键阶段: 1.1 **引言**:这部分介绍淘宝网的技术变迁背景,以及这些变迁对其业务...
例如,社交媒体的兴起、在线视频服务的普及以及电子商务的繁荣,都离不开计算机网络技术的支持。 互联网新媒体的发展现状显示,它已经成为人们日常生活不可或缺的一部分。3G至4G网络的升级改善了用户体验,自媒体...
随着信息技术的飞速发展,电子商务已经成为现代商业模式的重要组成部分,而在广阔的中国农村地区,电商的发展同样具有巨大的潜力和挑战。本文将探讨制约中国农村电商发展的几个关键因素。 首先,思想认识问题是制约...